mysql总结

sql语句

//修复系统号字段
ALTER TABLE issue_item add `create_user_code` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人系统号';
alter table issue_item change column  user_code issue_user_code  bigint(20) NOT NULL DEFAULT '-1' COMMENT '出现问题的系统号';


//刷之前的信息
update issue_item set user_name = '达尔文',create_user_code = 2004,ucid = 100000002004 where issue_id <= 96;

//增加评论数字段
ALTER TABLE issue_item add `comment_count` int(10) NOT NULL DEFAULT '0' COMMENT '评论数';

//刷入之前的数据
update `issue_item` i set comment_count =(
if((select count(entity_id) from `comment` c where comment_type = 'issue' and c.entity_id =  i.issue_id GROUP BY c.entity_id) is null,0,
(select count(entity_id) from `comment` c where comment_type = 'issue' and c.entity_id =  i.issue_id GROUP BY c.entity_id))
) where 1=1;

需求3:给新建的表添加字段,并刷入数据

ALTER TABLE city_dict 

add `scope_code` int(2) NOT NULL DEFAULT '0' COMMENT '1 south;2 north;0 没有区域信息',
add`scope` varchar(20) NOT NULL DEFAULT '' COMMENT 'south 南区;north 北区';

添加的字段有默认值,所以刷入数据不是插入数据,而是更新数据

UPDATE city_dict c JOIN open_list_common_config o ON  c.city_code = o.city_code
  set c.scope_code =  (case o.scope
       WHEN 'south' THEN '1'
    ELSE '2'
    END),c.scope=o.scope;

注意点总结

(1)写复合sql时,先写里面的sql,再写外层的sql

(2)在建表时,自增id,状态status,创建时间和更新时间是四个功能字段,在建表时,状态字段应该默认为有效,这样在删除时,采用软删除,即让status=无效来删除,如果直接物理删除找不到记录(看具体需求),所以对应的在查询的时候,应该在where条件处加上status=有效

(3)更新字段一般是展示出来是没有意义的,因为只要对这条记录的任何字段修改,更新时间就会变,那么展示这个更新人的信息就是没有意义的,人人往往更关心做了什么操作,所以记录更新某个字段的人的信息具有价值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章