目录
insert常用语句
1、mysql中insert语句的语法一
insert into tablename(字段1名称,字段2名称,…) values(字段1值,字段2值,…)
示例如下:
向表tb1中插入一条数据,插入数据对应的字段为name和age,name的值为tom,age为33。
insert into tbl (name,age) values ('tom',33);
向表tb1中插入多条数据,具体含义同上,只不过是插入多条语句。
insert into tbl (name,age) values ('jerry',22),('naruto',28);
也可以不指定字段,表示对应每个字段都会有插入的数据。
insert into tb1 values (4,'Sasuke',28),(5,'hinata',25);
2、mysql中insert语句的语法二
除了使用上述的语法插入数据,我们还能够使用如下语法
insert into tablename set 字段1名称=字段1值,字段2名称=字段2值
示例如下:
insert into tbl set id=2,name="test",age=18,gender='M';
聪明如你一定发现了,上述两种语法的不同之处在于,字段名称与字段值是否分开了,使用set的方式字段名与字段值是在一起的。
除了这一点不同之处,其实,他们还有另外一点不同,就是,使用set的方式插入数据时,insert语句中字段的顺序可以与表中字段的顺序不同,而第一种语法中,字段顺序必须与表中字段的顺序相同。
3、mysql的模式sqlmode
还需要注意的是,mysql默认的sqlmode为宽松模式,这意味着即使插入的数据并不是完全符合数据类型的要求,也有可能插入数据。示例如下:
可以从上图中看到,tb表中的name字段的数据类型为char(5),也就是说name字段最多只能插入5个字符,当我们插入的数据为naruto时,超过了5个字符的长度,但是仍然插入成功了,插入的数据自动被截取为narut,少了一个字母”o”,同理,age字段的值的最大取值为255,当我们插入大于255的数据时,数据自动变为了255,这样虽然能够插入数据,但是跟我们预期不一样,这种情况就属于对数据的校验不严格导致的,我们再看另一种情况,如下图:
tb1表中的name字段是不允许为空的,并且name字段没有对应的默认值,但是我们如果不对name字段设置对应的值,数据也能插入,mysql自动将其值设置为了空字符串,如果按照严格的标准,这样应该不允许插入数据。上述两种情况都属于对数据的校验不严格造成的。
解决办法:
如果我们不期望这样的事情发生,可以通过设置sql_mode参数的值进行严格限制,我们可以通过运行时设置的方式,与修改配置文件的方式设置sql_mode。此时,如果你想要在不重启的mysql情况让以后的所有连接都遵循严格的限制,需要先在运行时设置中,将global.sql_mode变量的值设置为TRADITIONAL(使用的存储引擎为innodb),同时在配置文件中设置sql_mode=TRADITIONAL(使用的存储引擎为innodb),以免重启后失效。
sql_mode最常用的几种重要模式如下:
ANSI:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据截断保存,报警告信息,默认应该就是这种。
STRICT_TRANS_TABLES:只在事务型表中进行严格限制。
STRICT_ALL_TABLES:对所有表进行严格限制。
TRADITIONAL :严格模式,当插入数据时,进行数据的严格校验,错误的数据将不能被插入,报error错误。用于事物时,会进行事物的回滚,官方提醒我们说,如果我们使用的存储引擎是非事务型的存储引擎(比如myisam),当我们使用这种模式时, 如果执行非法的插入或更新数据操作时,可能会出现部分完成的情况。
delete常用语句
删除数据的语句比较简单,主要是通过where子句给定删除的范围,而where子句的示例可以参考select常用语句,但是删除前请确定给定的条件没有任何问题,在不确定的情况下不要随意删除数据。
如下语句表示删除tb1中的所有数据,也就是清空tb1表,非常危险,切勿随意使用。
delete from tb1;
根据给定的条件删除数据,在不确定的情况下或者没有备份的情况下,请勿随意删除数据
delete from tb1 where age=22;
delete from tb1 where name rlike '^t.*';
如下语句表示,从tb1表中找出age>30的数据行,然后将这些行按照age进行降序排列,排列后删除第一个。
delete from tb1 where age > 30 order by age desc limit 1;
update常用语句
修改数据的语句也比较简单,主要是通过where子句给定修改的范围,而where子句的示例可以参考select常用语句,执行更新语句之前请确定给定的条件是正确的,因为不加任何条件的更新语句表示更新表中的所有字段,如果你不确定要这么做,这样是非常危险的,所以执行