Mysql DML 学习随笔(6) 增删改

这篇博客详细介绍了MySQL中的数据操作语言DML,包括插入、修改和删除语句的使用。对于插入,讲解了经典方式和使用set的区别;在修改数据部分,不仅涉及单表更新,还补充了多表更新的语法;删除语句则对比了delete和truncate的差异,并通过实例演示了各种操作。

DML语言

数据操作语言:
插入:insert
修改:update
删除:delete

一、插入语句

方式一:经典的插入
语法:
insert into 表名(列名,…) values(值1,…);

方式二:
语法:
insert into 表名
set 列名=值,列名=值,…

两种方式大PK:
1、方式一支持插入多行,方式二不支持
2、方式一支持子查询,方式二不支持

二、修改数据

1.修改单表的记录

语法:
update 表名
set 列=新值,列=新值,…
where 筛选条件;

2.修改多表的记录【补充】
语法:

sql92语法:
update 表1 别名,表2 别名
set 列=值,…
where 连接条件
and 筛选条件;

sql99语法:
update 表1 别名
inner/left/right join 表2 别名
on 连接条件
set 列=值,…
where 筛选条件;

三、删除语句

方式一:delete
语法:

1、单表的删除
delete from 表名 where 筛选条件

2、多表的删除【补充】

sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;

sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner/left/right join 表2 别名 on 连接条件
where 筛选条件;

方式二:truncate
语法:truncate table 表名;

delete pk truncate ☆☆☆
1.delete 可以加where 条件, truncate 不能加
2.truncate 删除,效率高一丢丢
3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate 删除没有返回值,delete 删除有返回值。
5.truncate删除不能回滚,delete删除可以回滚。

例:
1.运行以下脚本创建表my_employees和users

CREATE TABLE my_employees(
	Id INT(10),
	First_name VARCHAR(10),
	Last_name VARCHAR(10),
	Userid VARCHAR(10),
	Salary DOUBLE(10,2)
);
CREATE TABLE users(
	Id INT,
	Userid VARCHAR(10),
	department_id INT
);

2.显示表my_employees 的结构

DESC my_employees;

3.向my_employees 表中插入下列数据

#方式一:
INSERT INTO my_employees
VALUES (1,'patel','Ralph','Rpatel',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','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;

4.向 users表中插入下列数据

INSERT INTO users
VALUES(1,'Rpatel',10),
(2,'Bdancs',10),
(3,'Bbiri',20);

5.将3号员工的last_name 修改为"drelxer"

UPDATE my_employees SET Last_name='drelxer'
WHERE Id = 3;

6.将所有工资少于900的员工的工资修改为1000

UPDATE my_employees SET salary=1000
WHERE salary<900;

7.将userid为Bbiri的users表和my_employees表的记录全部删除

DELETE u,e
FROM users u
JOIN my_employees e
ON u.`Userid`=e.`Userid`
WHERE u.userid='Bbiri';

8.删除所有数据

DELETE FROM my_employees;
DELETE FROM users;

9.检查所做的修正

DELETE FROM my_employees;
DELETE FROM users;

10.清空表my_employees

TRUNCATE TABLE my_employees;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值