DML
目录
插入
语法:
#方式一:
insert into 表名
(列名,...)
values(值1,...);
#方式二:
insert into 表名
set 列名=值,列名=值,...;
注:
- 方式一支持插入多行,方式二不支持
INSERT INTO beauty
VALUES(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2)
,(24,'迪丽热巴','女','1990-4-23','1898888888',NULL,2)
,(25,'Taylor','女','1990-4-23','1898888888',NULL,2);
- 方式一支持子查询,方式二不支持
INSERT INTO my_employees
SELECT 1,'patel','Ralph','Rpatel',895
UNION
SELECT 2,'Dancs','Betty','Bdancs',860
UNION
SELECT 3,'Biri','Ben','Bbiri',1100
UNION
SELECT 4,'Newman','Chad','Cnewman',750
UNION
SELECT 5,'Ropeburn','Audrey','Aropebur',1550;
删除
- 方式一:
- 删除单表的记录
语法:
- 删除单表的记录
delete from 表名
where 筛选条件;
2. 删除多表的记录
语法:
#sql92语法:
delete 要删除的表记录所在的表的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
#sql99语法:
delete 要删除的表记录所在的表的别名
from 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件;
- 方式二:
truncate 清空,即删除整个表的所有记录
语法:
truncate table 表名;
- delete 可以加 where 条件(部分删除),truncate不能加(只能整表删除)
- 如果整表删除,truncate效率高一些
- 假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。 - truncate删除没有返回值(即受影响的行数),delete删除有返回值
- truncate删除不能回滚,delete删除可以回滚.
更新(修改)
- 修改单表的记录
语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件;
- 修改多表的记录
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件 and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
案例:
#修改张无忌的女朋友的手机号为114
UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='张无忌';