dbeaver导出建表语句_常⽤SQL语句(时常修改)
咱们在开发中有很多的sql,是不好写的,写完了,还总容易出问题。
所以从现在开始总结,这些SQL语句。
--------------------------------------2019-01-09更新---------------------------------------
这个问题是因为做设计的时候忘了数据的唯⼀的问题。导致数据出现重复,查询的时候出现了查询的selectOne变成selectList。
1、清除重复的数据
DELETE
解释:
最⾥⾯的SQL“select max(id)……” 是根据字段确定重复数据
第⼆层的SQL “select a.id……”是为了创建临时表 避免出现1093的错误,错误如下:
1093
给查询的数据命名临时表表明为a 是为了解决MySql的错误1248 ,错误如下:
1248
第三层SQL没啥说的,就是⼀个删除操作。
解决问题的参考⽹站:
MySQL之You can't specify target table for update in FROM clause解决办法w wwblogs
2、创建 唯⼀约束
create unique index 唯⼀约束名称 on 表明(字段1,字段2);
事例:
create unique index user_environment_unqiue
on gw_run_user_environment(user_id,environment_id);
-------------------------------------2019-01-29更新----------------------------------------
最近⽐较忙,碰到了好多sql,今天就总结⼀下。
1、注释 Comment
在创建表的时候,⼀般⼤家是不加注释的,但是不加注释⾃⼰明⽩,但是让别⼈来开发的时候就看的⼀脸懵逼。这不是第⼀次了,尤其是不加注释的表,不加注释的代码,可是把我坑的不要不要的。。。
字段及表的注释
create
注释的修改
alter
我在这提醒⼤家,建表的时候⼀定要加注释,不加注释会被⼈打死的。
2、默认值 DEFAULT
在创建表的时候能使⽤默认值,⼀定要使⽤默认值,尤其是⼀些状态码,⼀些时间字段。
建表时使⽤默认值(还是上⾯的sql)
建表时使⽤默认值
create
修改默认值
alter
看着是不是很简单啊?但是让⼤家写80%的⼈会写错,因为这个单词不常⽤。
设置默认的事假类型为 当前时间
这个也是⽐较坑,我百度了半天,都说设置默认值为 CURRENT_TIMESTAMP。经过实操,他的默认值第⼀次插⼊是0000-00-00
00:00:00。
(2019-09-05 收回上⾯的话,我直接操作图形化界⾯是0000-00-00 00:00:00,直接使⽤insert语句插⼊,就是系统时间了。详情见2019-09-25更新,往下翻。)
后来发现Navicat 表设计⾥⾯,时间字段下有个选项 “根据当前时间戳更新”,我这选中之后发现成功。现导出sql如下:
DROP
⼤家仔细看就会发现,根据当前时间更新时间,不是 DEFAULT CURRENT_TIMESTAMP。
⽽是 ON UPDATE CURRENT_TIMESTAMP(0)。
-------------------------------------2019-04-26更新----------------------------------------
997结束了,然后⼜出差⼀个⽉,总算是快结束了。今天更新⼀下遇到的sql。
统计字段的数据是其他表的数据统计
UPDATE gw_topic AS a SET comment_count =
(select count(*) FROM gw_topic_conmment WHERE topic_pic_id);
解释:帖⼦表中有⼀个字段叫评论总数,⽽这个评论总数正好是评论表中的评论统计。⼀般正式环境,只要你做好业务(添加评论时候评论总数+1)就不会出现数量不⼀致的问题。但是开发环境则很
创建唯一约束sql语句容易出现这些问题。就需要进⾏数量统计的更新。
-------------------------------------2019-09-05更新----------------------------------------
关于之前【时间⾃动更新的字段属性】再次修改⼀下 两个属性的区别:
1、DEFAULT CURRENT_TIMESTAMP:默认是第⼀次插⼊是系统时间,⽤于的字段:创建时间等等
2、ON UPDATE CURRENT_TIMESTAMP:默认插⼊的时间是系统时间,意味着每次修改本条数据⾃动更新时间为系统时间,应⽤字段:更新时间、操作时间等字段
如果建表使⽤属性2更新时间且设置字段不能为空,InnoDB数据库会让你设置默认值。否则会报错误1067,如下图:
InnoDB引擎 ON UPDATE CURRENT_TIMESTAMP属性但是可以两个属性⼀起使⽤,修改后如下图:
两个时间属性⼀起使⽤
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论