DML语言
分类
数据操作语言:
插入:insert
修改:update
删除:delete
一、插入语句
方式一:经典的插入方式
语法:
insert into 表名(列名,....,)
values(值1,......)
案例1:插入的值的类型要与对应列的类型一致或兼容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','18988888888',NULL,2);
案例2:可以为NULL的列如何插入值?
方式一:在值所对应的位置填入NULL
--------------------------------------------------------------------------------------------------
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','18988888888',NULL,2);
方式二:列名和对应值的位置都省略
--------------------------------------------------------------------------------------------------
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(14,'杨幂','女','1990-4-23','18988888888',2);
案例3:列的顺序可以调换
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('蒋欣','女',16,'110');
案例4:列数和值的个数必须保持一致
案例5:可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VAULES(18,'张飞','男',NULL,'119',NULL,NULL);
方式二:
语法:
INSERT INTO 表名
SET 列名 = 值,列名 =值,.....
INSERT INTO beauty
SET id=19,NAME = '刘涛',phone = '999';
比较两种插入方式
1.经典方式支持一次插入多行,方式二不支持
INSERT INTO beauty
VALUES(23,'唐艺昕1','女','1990-4-23','18988888888',NULL,2),
(23,'唐艺昕1','女','1990-4-23','18988888888',NULL,2),
(23,'唐艺昕1','女','1990-4-23','18988888888',NULL,2);
2.经典方式支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 26,'宋茜','11809866';
二、修改语句
语法
1.修改单表的记录 ※
UPDATE 表名
SET 列=新值,列=新值,.....
WHERE 筛选条件;
2.修改多表的记录
UPDATE 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名
ON 连接条件
SET 列 = 值,....
WHERE 筛选条件;
案例
修改单表的记录
案例1:修改beauty表中姓唐的女神的电话为13899888899:
UPDATE beauty SET phone = '13899888899'
WHERE NAME LIKE '唐%';
案例2:修改boys表中id号为2的名称改为张飞,魅力值改为10
UPDATE boys SET boyname = '张飞',usercp=10
WHERE id =2;
修改多表的记录
案例1:修改张无忌的女朋友的手机号为114
UPDATE boys bo
INNER JOIN beauty b ON bo.id =b.boyfriend_id
SET b.phone='114'
WHERE bo.boyname = '张无忌';
案例2:修改没有男朋友的女神的男朋友编号为2号
UPDATE boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
SET b.boyfriend_id = 2
WHERE bo.id IS NULL;
三、删除语句
方式一:DELETE
语法
1.单表的删除★
-----------------------------
DELETE FROM 表名
WHERE 筛选条件
2.多表的删除[补充]
-----------------------------
DELETE 表1的别名,表2的别名
FROM 表1 别名
INNER|LEFT|RIGHT JOIN 表2 别名
ON 连接条件
WHERE 筛选条件;
#1 单表的删除
案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
SELECT * FROM beauty;
#2 多表的删除
案例2:删除张无忌的女朋友的信息
DELETE b
FROM beauty b
INNER JOIN boys bo
ON b.boyfriend_id = bo.id
WHERE bo.boyName = '张无忌';
案例3:删除黄晓明的信息以及他女朋友的信息
DELETE b,bo
FROM beauty b
INNER JOIN boys bo
ON b.boyfriend_id = bo.id
WHERE bo.boyname = '黄晓明';
方式二:TRUNCATE
语法
TRUNCATE TABLE 表名;
案例1:将魅力值>100的男神信息删除
TRUNCATE TABLE boys;
两种删除方式比较
1.DELETE 可以加 WHERE 条件,TRUNCATE 不能加;
2.TRUNCATE 删除效率高一点
3.假如要删除的表中有自增长列
如果用DELETE删除后,再插入数据,自增长列的值从断点开始
而TRUNCATE删除后,再插入数据,自增长列的值从1开始.
4.TRUNCATE删除没有返回值,DELETE删除没有返回值
5.TRUNCATE删除不能回滚,DELETE删除可以回滚
测试题
#方式一:
--------------------------------------------------------------------------------
INSERT INTO my_employees
VALUES(1,'patel','Ralph',895),
(2,'Dancs','Betty','Bdancs',860),
(3,'Biri','Ben','Bbiri',1100),
(4,'Newman','Chad','Cnewman',750),
(5,'Ropeburn','Audrey','Aropebur',1550);
#方式二:
---------------------------------------------------------------------------------
INSERT INTO my_employees
SELECT 1,'patel','Ralph',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;
将3号员工的last_name修改为"drelxer"
UPDATE my_employees
SET last_name = 'drelxer'
WHERE id = 3;
将userid为"Bbiri"的user表和my_employees表的记录全部删除
DELECT u,e
FROM users u
JOIN my_employees e
ON u.userid=e.userid
WHERE u.userid = 'Bbiri';