数据库与Mysql - 8

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';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值