SQL 语言之一:DML
DML(Data Manipulate Language)数据操作语言,即增删改
一、增:插入 INSERT
insert into 表名 (字段1, ……) values(值, ……);
-- 支持插入多行
-- 支持子查询:insert into beauty(id,name,phone) select id,xname,'12877665599' from xtable;
insert into 表名 set 列名=值, 列名=值, ……;
--不支持插入多行
--不支持子查询
- 插入的值的类型要与列的类型一致或兼容;
- 不可以为 NULL 值的列必须插入值。可以为 NULL 值的列可以不插入或者设置默认值。
- 列的顺序可以调换,因为值的插入顺序是根据前面括号里列名的排序的。
- 列数和值个数必须一致。
- 当所有列都需要插入值时,列名可以省略不写,但插入值的排序必须和表中列名顺序一致:“insert into 表名 values(值, ……);”
二、删:删除 DELETE
2.1、删单表记录
--(清空)删除一张表中所有记录①
truncate table 表名;
--(清空)删除一张表中所有记录②
delete from 表名;
--删除一张表中部分记录
delete from 表名 where 筛选条件;
- 假如表中有自增长列,使用 truncate 清空后再插入数据,自增长列的值从1开始;使用 delete 清空后再插入数据,自增长列的值从断点开始。
- 使用 truncate 删除后没有返回值;使用 delete 删除后有返回值(返回受影响的行数)。
- truncate 删除后不能回滚;delete 删除后可以回滚。
2.2、删多表记录
--按sql92语法删除多张表的记录
delete 表1的别名, 表2的别名
from 表1 别名, 表2 别名
where 连接条件
and 筛选条件;
--按sql99语法删除多张表的记录
delete 表1的别名, 表2的别名
from 表1 别名
inner | left | right join 表2 别名 on 连接条件
where 筛选条件;
三、改:修改 UPDATE
3.1、改单表记录
--按筛选条件修改一张表中对应字段的值
update 表名 set 字段=新值, 字段=新值, …… where 筛选条件;
/*
这里的 where 筛选和查询语句的筛选条件一样。
执行顺序是:先找到表,再筛选出数据,最后修改值。
*/
3.2、改多表记录
--按sql92语法修改多张表的记录
update 表1 别名, 表2 别名
set 列=值, ……
where 连接条件
and 筛选条件;
--按sql99语法修改多张表的记录
update 表1 别名
inner | left | right join 表2 别名
on 连接条件
set 列=值, ……
where 筛选条件;