DML语言:
DML(Data Manipulation Language),数据操纵语言,在SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。
INSERT INTO
用于向表中插入新记录。
#方式1:
#需要指定列名和被插入的值(列可以调换顺序,但是要和值一一对应)
INSERT INTO 表名(列名1...) VALUES(值1...);
#插入多行,每个VALUES()以逗号隔开
INSERT INTO 表名(列名1...) VALUES(值1...),VALUES(值1...)...;
#无需指定要插入数据的列名,只需提供被插入的值即可(默认所有列,而且顺序要和表中列的顺序一致):
INSERT INTO 表名 VALUES(值1...);
#插入多行,每个VALUES()以逗号隔开
INSERT INTO 表名 VALUES(值1...),VALUES(值1...)...;
#方式2:
INSERT INTO 表名
SET 列名=值,列名=值...
方式一支持多行插入,方式二不支持,方式一支持子查询,方式二不支持;
UPDATE
用于修改表中记录的数据
修改单表
语法格式:
UPDATE 表名
SET 列名=值,列名=值,...
WHERE 筛选条件;
修改多表
语法格式:
UPDATE 表1
连接类型【INNER,LEFT OUTER,RIGHT OUTER】 JOIN 表2
ON 连接条件
SET 列名=值,列名=值,...
DELETE
用于删除表中记录
单表删除:
语法格式:
DELETE FROM 表名
WHERE 筛选条件;
多表删除:
语法格式:
DELETE 表名(要删除那个表的就写那个,也可以写多个) FROM 表1
连接类型【INNER,LEFT OUTER,RIGHT OUTER】 JOIN 表2
ON 连接条件
WHERE 筛选条件;
举例说明
(以上面的工资等级表(salgrade)和员工表(employees),删除工资等级为1的员工信息)
DELETE e
FROM employees e
INNER JOIN salgrade s
ON e.`SAL` BETWEEN s.`LOSAL` AND s.`HISAL`
WHERE s.`GRADE`=1;
TRUNCATE语句
语法格式:
TRUNCATE TABLE 表名;
DELETE和TRUNCATE区别
- DELETE可以加WHERE语句,TRUNCATE不能;
- 如果要删除的表中有自增长列,用DELETE删除,再插入数据,自增长列的值从断点开始,而用TRUNCATE删除后再插入数据,自增长列的值是从1开始。
- DELETE删除有返回值,TRUNCATE删除没有返回值。
- TRUNCATE删除不能回滚,而DELETE删除可以回滚。