这篇文章总结了MySQL中的insert语句,delete、update、select等DML语句将会在其他文章中单独总结.
insert 常用语句
mysql中insert语句的语法如下:
insert into tablename(字段1名称,字段2名称,…) values(字段1值,字段2值,…)
示例如下:
向表tb1中插入一条数据,插入数据对应的字段为name和age,name的值为tom,age为33.
insert into tb1(name,age) values('tom',33);
向表 tb1中插入多条数据,具体含义同上,只不过是插入多条语句.
insert into tb1(name,age) values('jerry',22),('naruto',28);
也可以不指定字段,表示对应每个字段都会有插入的数据.
insert into tb1 values(4,'Sasuke',28),(5,'hinata',25);
其实,除了 使用上述的语法插入数据,我们还能够使用如下语法:
insert into tablename set 字段 1名称=字段 1值,字段2名称 =字段2值
示例如下:
insert into tbl2 set id=2,name='test',age=18,gender='M';
上述两种语法的不同之处在于,字段名称与字段值是否分开了,使用set的方式字段名与 字段值是在一起的.
除了这一点不同之处,其实,他们还有另外一点不同 ,就是使用set的方式插入数据时,insert语句中字段的顺序可以与 表中字段的顺序不同,而第一种语法中,字段顺序必须与表中字段的顺序相同.
还需要注意的是,mysql默认的sqlmode为宽松模式,这意味着即使插入的数据并不是完全符合数据类型的要求,也有可能插入数据.例如:
$ select * from tb;
+-------+--------+--------+
| id | name | age |
+-------+--------+--------+
| 1 | jerry | 28 |
+-------+--------+--------+
$ desc tb;
+-------+-----------+--------+------+---------+---------------+
| Feild | Type | Null | Key | Default | Extra |
+-------+-----------+--------+------+---------+---------------+
| id | int | NO | PRI | NULL | auto_increment|
+-------+-----------+--------+------+---------+---------------+
| name |varchar(50)| NO | | NULL | |
+-------+-----------+--------+------+---------+---------------+
| age | tinyint(4)| NO | | NULL | |
+-------+-----------+--------+------+---------+---------------+
$ insert into tb1(age) values(18);
$select * from tb1;
+-------+--------+--------+
| id | name | age |
+-------+--------+--------+
| 1 | jerry | 28 |
+-------+--------+--------+
| 2 | john | 18 |
+-------+--------+--------+
| 3 | Tom | 12 |
+-------+--------+--------+
| 4 | | 22 |
+-------+--------+--------+
tb1表中的name字段是不允许为空的,并且name字段 没有对应的默认值,但是我们如果不对name字段设置对应的值,数据也能插入,mysql自动将其值设置为了空字符串,如果按照严格的标准,这样应该不允许插入数据.上述两种情况都属于对数据的校验不严格造成的.
评论前必须登录!
注册