DML
DML 数据操作语言 (Data Manipulation Language) 常用于:操作数据
- 插入 insert
- 修改 update
- 删除 delete
1.插入语句
要求:
- 插入值的类型要和列的类型一致或兼容
- 不为null的列必须插入值。
- 列的顺序可以调换
- 列数和值的个数必须一致
- 默认列名,插入值和表中列顺序一致
方式一:
insert into 表名 ( 列名1,列名2,…) values (列1值,列2值,…);
方式二:
insert into 表名 set 列名1=列1值, 列名2=列2值;
方式一支持插入多行,方式二不支持 方式一支持子查询,方式二不支持
insert into 表名(列1,列2,列…)
Select 列1值,列2值,列值…;
把结果集插入到原有表
2.修改语句
1. 修改单表的记录
单表单条语法:
update 表名
set 列 = 新值, 列 = 新值…
where 筛选条件
2. 修改多表的记录
修改多条语法:
update 表1 别名, 表2 别名
set 列= 新值, 列= 新值…
where 筛选条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left | right join 表2 别名
on 连接条件
set 列= 值
where 筛选条件
3.删除语句
方式一:delete 一删删一行 1. 单表删除 「!」
语法:delete from 表名 where 筛选条件
2. 多表的删除
sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left | right join 表2 别名
on 连接条件
where 连接条件
and 筛选条件;
方式二:truncate
语法: truncate table 表名;
truncate不能删行数据,一删就删表
3.1 Delete vs truncate
- Delete 可以加where条件, truncate 不能加
- truncate 删除效率高一点
- 假如要删除的表中有自增长列。 如果delete删除后,再查顺序,自增长列的值开始从断点开始. 而truncate 删除后,再插入数据,子增长列从1开始
- truncate 删除没有放回值,delete删除有返回值
- truncate 不能删除回滚,delete删除可以回滚。
3.2 drop、truncate、delete的区别
drop:删除表,删除内容和结构,释放空间。 truncate:清空表中的数据,删除内容释放空间,但是保留表的数据结构 delete:删除表中的数据,常用于删除表中的行,同时操作作为事务在日志,方便回滚 truncate 和 不带where 的delete:只删数据不删结构
执行速度:一般来说 drop > truncate > delete