MySQL-DML学习

191 阅读2分钟

DML

DML 数据操作语言 (Data Manipulation Language) 常用于:操作数据

  • 插入 insert
  • 修改 update
  • 删除 delete

1.插入语句

要求:

  1. 插入值的类型要和列的类型一致或兼容
  2. 不为null的列必须插入值。
  3. 列的顺序可以调换
  4. 列数和值的个数必须一致
  5. 默认列名,插入值和表中列顺序一致
方式一:
insert into  表名 ( 列名1,列名2,…) values (列1值,列2值,…);

方式二:
insert into  表名  set  列名1=1值, 列名2=2值;

方式一支持插入多行,方式二不支持 方式一支持子查询,方式二不支持

insert into 表名(列1,列2,列…)
Select1值,列2值,列值…;

把结果集插入到原有表

2.修改语句

1. 修改单表的记录

单表单条语法:
		update 表名
		set= 新值, 列 = 新值…
		where 筛选条件

2. 修改多表的记录

修改多条语法:
		update1 别名, 表2 别名
		set= 新值, 列= 新值…
		where 筛选条件
		and 筛选条件;
sql99语法:
		update1 别名
		innerleftright join2 别名
		on 连接条件
		set=where 筛选条件

3.删除语句

方式一:delete 一删删一行 1. 单表删除 「!」

语法:delete from 表名 where 筛选条件

2. 多表的删除

sql92语法:
		delete1的别名,表2的别名
		from1 别名,表2 别名
		where 连接条件
		and 筛选条件;

sql99语法:
		delete1的别名,表2的别名
		from1 别名
		innerleftright join2 别名
		on 连接条件
		where 连接条件
		and 筛选条件;

方式二:truncate

语法: truncate table 表名;	
truncate不能删行数据,一删就删表

3.1 Delete vs truncate

  1. Delete 可以加where条件, truncate 不能加
  2. truncate 删除效率高一点
  3. 假如要删除的表中有自增长列。 如果delete删除后,再查顺序,自增长列的值开始从断点开始. 而truncate 删除后,再插入数据,子增长列从1开始
  4. truncate 删除没有放回值,delete删除有返回值
  5. truncate 不能删除回滚,delete删除可以回滚。

3.2 drop、truncate、delete的区别

drop:删除表,删除内容和结构,释放空间。 truncate:清空表中的数据,删除内容释放空间,但是保留表的数据结构 delete:删除表中的数据,常用于删除表中的行,同时操作作为事务在日志,方便回滚 truncate 和 不带where 的delete:只删数据不删结构

执行速度:一般来说 drop > truncate > delete