目录
DML语言主要三个操作:插入(insert)、修改(update)、删除(delete)
1. 插入语句
1.1 语法
方式一:
insert into 表名(列名,…) values(值1,…);
方式二:
insert into 表名
set 列名=值,列名=值,…
1.2 使用
方式一:
SELECT * FROM beauty;
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'阿卡丽','女','1990-4-23','1898989898',NULL,2);
#2.不可为null的列必须插入值。可以为null的列如下面两种方式
#方式一:
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'阿卡丽','女','1990-4-23','1898989898',NULL,2);
#方式二:
INSERT INTO beauty(id,name,sex,borndate,phone,boyfriend_id)
VALUES(13,'阿卡丽','女','1990-4-23','1898989898',2);
#3.列的顺序可以颠倒,但必须一一对应
#4.列数和值的个数必须一致
#5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUES(18,'张飞','男',NULL,'11119',NULL,NULL)
方式二:
INSERT INTO beauty
SET id=19,name='刘涛',phone='999'
2.3 两种方式的对比
#1.方式一支持多行插入,方式二不支持
INSERT INTO beauty
VALUES(20,'阿卡丽','女','1990-4-23','1898989898',NULL,2)
,(21,'阿卡丽','女','1990-4-23','1898989898',NULL,2)
,(22,'阿卡丽','女','1990-4-23','1898989898',NULL,2);
#2.方式一支持子查询,方式二不支持
INSERT INTO beauty(id,name,phone)
SELECT 23,'宋茜','12344444';
2. 修改语句
2.1 修改单表记录
2.1.1 语法
语法:
update 表名
set 列=新值,列=新值,…
where 筛选条件;
2.1.2 使用
#案例1:修改baeuty表中姓阿的电话为1101
UPDATE beauty SET phone = 1101
WHERE name LIKE '阿%'
#案例2:修改boys表中id好为2的名称为张飞,魅力值 10
UPDATE boys SET boyname='张飞',usercp=10
WHERE id=2;
2.2 修改多表记录
2.2.1 语法
sql92语法:
update 表1 别名,表2 别名
set 列=值,…
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,…
where 筛选条件;
2.2.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;
3. 删除语句
3.1 语法
方式一:
delete from 表名 where 筛选条件
方式二:
truncate table 表名
3.1 单表的删除
3.1.1 使用
#案例:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
3.2 多表的删除
3.2.1 语法
sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
3.2.1 使用
#案例1:删除张无忌的女朋友的信息
DELETE b #注意此处删除那张表的信息写哪张表的别名
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 = '黄晓明';
3.3 truncate语句
使用:删除整个表时用到该语句,不可加WHERE条件
3.4 truncate与delete的比较
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚.
本节习题
1.运行以下脚本创建表 my_employees和users
2.显示表 my_employees 的结构
3.向 my_employees 表中插入下列数据

4.向 users 表中插入数据

5. 将 3 号员工的 last_name 修改为“drelxer”
6. 将所有工资少于 900 的员工的工资修改为 1000
7. 将 userid 为 Bbiri 的 user 表和 my_employees 表的记录全部删除
8. 删除所有数据
9. 检查所作的修正
10. 清空表 my_employees
# 1
USE myemployees;
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
DESC my_employees;
#3
INSERT INTO my_employees(Id,First_name,Last_name,Userid,Salary)
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);
#4
INSERT INTO users(id,userid,department_id)
VALUES(1,'Rpatel',10)
,(2,'Bdancs',10)
,(3,'Bbiri',20)
,(4,'Cnewman',30)
,(5,'Aropebur',40);
#5
UPDATE my_employees SET Last_name = 'drelxer'
WHERE Id = 3;
#6
UPDATE my_employees SET Salary = 1000
WHERE Salary < 900;
#7
DELETE u,me
FROM users u
INNER JOIN my_employees me ON u.userid = me.Userid
WHERE me.Userid = 'Bbiri';
#8
DELETE FROM my_employees;
DELETE FROM users;
#9
SELECT * FROM my_employees;
SELECT * FROM users;
#10
TRUNCATE TABLE my_employees;
TRUNCATE TABLE users;
参考资料:
《尚硅谷MySQL数据库教程》
本文详细介绍了MySQL中的DML语句,包括插入(insert)、修改(update)和删除(delete)操作。重点讲解了不同插入方式的区别,如单行与多行插入,以及子查询的支持。此外,还探讨了更新单表和多表记录的方法,并提供了多个实例。对于删除操作,讨论了单表与多表删除的语法,以及truncate语句的使用和与delete的区别。最后,给出了若干练习题,帮助读者巩固学习。
1233

被折叠的 条评论
为什么被折叠?



