DML 语言
数据操作语言:
插入:insert
修改:update
删除:delete
- 插入语句
语法:
insert into 表名 (列名, ...) values (值1, ...);
插入的值的类型要与列的类型一致或者兼容
INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐','女','1994-08-13','15152268067',NULL,2)
不可以为NULL的列必须插入值,可以为NULL的列 如何插入值?
方式一:直接值为NULL
INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐','女','1994-08-13','15152268067',NULL,2)
方式二:不指定字段
INSERT INTO beauty (id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(13,'唐','女','1994-08-13','15152268067',2)
方式三:列的顺序可以随意调换。但是值必须符合要求
方式四:列数和值的个数必须一致
方式五:可以省略列明,默认所有列,而且列的顺序和表中列的顺序一致
方式一和方式二比较:
INSERT INTO beauty
VALUES (13,'唐','女','1994-08-13','15152268067',2),
(14,'刘','女','1994-01-13','15152111117',2),
(13,'张','女','1994-08-13','15152268067',2)
方式一支持子查询,方式二不支持
INSERT INTO beauty(id,name,phone)
SELECT 26,'宋茜','10086';
通过SELECT 子查询。可以作为结果集插入到beauty表格中
INSERT INTO beauty(id,name,phone)
SELECT id, boyname, '123456464'
FROM boy
WHERE id < 3;
- update 修改
修改单表的记录
update 表明
set 列 = 新值, 列 = 新值 , ....
where 筛选条件
案例1: 修改beauty 表中的姓唐的女生电话为13899888888
update beauty
SET phone = '13899888888'
where name like '唐%';
修改多表的记录
语法
SQL 92语法
update 表1 别名, 表2 别名
set 列=值,...
where 连接条件
and 筛选条件
SQL 99语法
update 表1 别名
inner | left | right join 表2 别名
on 连接条件
set 列= 值
where 筛选条件
案例1: 修改张无忌的女朋友手机号为 114
UPDATE boys bo
INNER JOIN beauty b ON bo.id = b.boyfriend_id
SET b.phone = '114'
WHERE bo.boyName= '张无忌';
- 删除条件
方式一: delete
语法:
DELETE FROM 表名 WHERE 筛选条件
单表的删除
案例1: 删除手机号码9结尾的女神信息
DELETE FROM beauty WHERE phone like "%9";
多表删除
SQL92写法
delete 别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件
SQL 99写法
DELETE 表一别名, 表二别名
FROM 表1 别名
inner | left | right | join 表2 别名 on 连接条件
where 筛选条件;
案例1: 删除张无忌的女朋友的女朋友的信息
DELETE b,bo
FROM beauty b
INNER JOIN boys bo ON b.boyfriend_id = bo.id
WHERE bo.boyName = "张无忌"
案例2:删除黄晓明的信息以及他女朋友的信息(级联删除)
DELETE b,bo
FROM beauty b
INNER JOIN boys bo ON b.boyfriend__id = bo.id
WHERE bo.boyName = "黄晓明"
方式二 : truncate 语法 (不允许加 where)
runcate table 表名
案例1:将魅力值 > 100 的男神信息删除
TRUNCATE TABLE boys WHERE ml > 100
会报错。 truncate 语句没办法添加 WHERE 筛选条件
两种方式 DELETE 和 TRUNCATE 比较
- delete 可以添加 筛选条件, truncate 不能添加
- truncate 删除 效率高一点点
- DELETE 加入要删除的表中有自增长列,再插入数据,自增列的值从断点开始,
而 TRUNCATE 删除后,再插入数据,自增长的值从1 开始 - TRUNCATE 删除没有返回值, delete 删除有返回值
- TRUNCATE 删除不能回滚,delete 删除可以回滚