Mysql学习笔记(7):DML语言

本文详细介绍了MySQL中的DML语句,包括插入(insert)、修改(update)和删除(delete)操作。重点讲解了不同插入方式的区别,如单行与多行插入,以及子查询的支持。此外,还探讨了更新单表和多表记录的方法,并提供了多个实例。对于删除操作,讨论了单表与多表删除的语法,以及truncate语句的使用和与delete的区别。最后,给出了若干练习题,帮助读者巩固学习。

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数据库教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值