MySQL系列目录:
MySQL的DML语言
DML语言:数据操纵语言
插入:insert
修改:update
删除:delete
一、插入语句 insert
- 语法:
方式一:insert into 表名(列名, ...) values (值1, ...);
方式二:insert into table set field1 = value1, field2 = value2
- 特点:
- 插入的值的类型要和表的field的类型一致或兼容
- 不可以为null的列必须插入值,可以为null的列如何插入值?
- field给出来,value用null填充。
- 不给出field,value略过这个field。
- 列的顺序可以颠倒。
- field和values的个数必须一致。
- 可以省略列名,默认就是所有列,列的顺序和表中一致。
- 两种插入方式比较:
- 方式一支持插入多行。
insert into beauty values (值1,yyy), (值2,yyy);
- 方式一支持subquery,方式二不支持。栗子:
INSERT INTO beauty (id, NAME, phone) SELECT 26, 'songqian', '118119118';
- 方式一支持插入多行。
二、修改 update
- 修改单表的记录
- 语法:
UPDATE tablename SET filed = value, field2 = value2 WHERE ...
- 语法:
- 修改多表的记录【补充】(例如:修改张无忌的女朋友的信息)
- 语法:
- sql92:
UPDATE table1 别名. table2 别名 set 列=值, where 连接条件 and 筛选条件
- sql99:
UPDATE table1 nickname inner | left | right join table2 nickname2 on joincondition set filed = value where 筛选条件
- sql92:
- 语法:
三、删除 delete
- 方式一:
- 单表删除(重点):
delete from tablename where condition [limit]
(单表);可以加上limit,限定删除的条数。 - 多表删除(补充):
- sql92语法:
delete 表1的别名或表2的别名(取决于你想要删除哪个表或者都删除)from 表1 别名,表2 别名 where 连接条件 and 筛选条件
- sql99语法:
delete 表1的别名或者表2 from 表1 别名 inner | left | right join 表2 别名 on 连接条件 where 筛选条件
- sql92语法:
- 单表删除(重点):
- 方式二:truncate 清空所有数据
- 语法:
truncate table 表名;
不能加条件,整个表删除。
- 语法:
- delete 对比 truncate
- delete 可以加where条件,truncate不可以加where条件
- 如果删除全部,truncate效率高一些。
- 假如要删除的表中有自增长列,用delete删除后,再插入数据,自增长列会从断电开始。而truncate删除后,再插入数据,自增长列的值从1开始。
- truncate删除没有返回值,delete有返回值。
- truncate删除不能回滚rollback,delete删除可以rollback。