本系列(MySQL学习笔记)是我基于B站上SQL播放量第一的MySQL 基础+高级篇- 数据库 -sql -尚硅谷视频所做的笔记,方便大家学习和掌握MySQL。
1.这个系列基本包含了视频中老师讲课的所有内容,包括知识点、案例、部分测试题。
2.所需的配套资料(来自B站评论区)
@黎曼的猜想:
配套资料下载–>公众号公众号 DragonWell 回复:mysql 注意:是公众号!!是公众号!!是公众号,点那个 搜一搜 搜索!!!
不是私人号,是公众号!!! (可以直接在 搜一搜 搜索 dragonwell) 名称是:DragonWell公众号
3.SQLyog的安装(来自B站评论区)
@江左萌粽猪 链接:https://pan.baidu.com/s/18PDjbqEeDSAjQM0VQye6og 提取码:qjuz
MySQL学习笔记1:数据查询语言(DQL语言)select基本用法
MySQL学习笔记2:where 条件查询
MySQL学习笔记3:order by 排序查询
MySQL学习笔记4:常见函数(一) 单行函数
MySQL学习笔记5:常见函数(二) 分组函数
MySQL学习笔记6:group by 分组查询
MySQL学习笔记7:join 连接查询(SQL 92标准)
MySQL学习笔记8:join 连接查询(SQL 99标准)
MySQL学习笔记9:子查询(内查询)
MySQL学习笔记10:union 联合查询
MySQL学习笔记11:limit 分页查询
MySQL学习笔记12:数据操纵语言(DML语言)insert update delete
MySQL学习笔记13:数据定义语言(DDL语言)create alter drop
MySQL学习笔记14:常见数据类型
MySQL学习笔记15:常见约束
MySQL学习笔记16:事务控制语言(TCL语言)
MySQL学习笔记17:视图
MySQL学习笔记18:存储过程
MySQL学习笔记19:函数
MySQL学习笔记20:流程控制结构
数据操纵语言
数据的插入:insert
修改:update
删除:delete
方式一(经典)
语法:
insert into 表名(列名,...) values(值1,...)
插入的是一行
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','18988888888',NULL,2);#photo有NULLABLE
SELECT * FROM beauty;
方式一:值写NULL
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','18988888888',NULL,2);#photo有NULLABLE
方式二:列名和值都省略
INSERT INTO beauty(id,NAME,sex,borndate,phone)
VALUES(14,'金星','女','1990-4-23','13888888888');
INSERT INTO beauty(id,NAME,sex,borndate,phone)
VALUES(15,'娜扎','女','1990-4-23','13888888888');
INSERT INTO beauty(NAME,sex,borndate,phone,id)
VALUES('蒋欣','女','1990-4-23','110',16);
INSERT INTO beauty(NAME,sex,borndate,phone,id,boyfriend_id)
VALUES('蒋欣','女','1990-4-23','110',17); #报错
INSERT INTO beauty
VALUES(18,'gsy','女',NULL,'119',NULL,NULL);
方式二:
语法:
insert into 表名
set 列名=值,列名=值,...
INSERT INTO beauty
SET id=19,NAME='刘涛',phone='999';
两种方式PK
1.方式一支持插入多行,但方式二不支持
INSERT INTO beauty
VALUES(23,'唐艺昕1','女','1990-4-23','18988888888',NULL,2),
(24,'唐艺昕2','女','1990-4-23','18988888888',NULL,2),
(25,'唐艺昕3','女','1990-4-23','18988888888',NULL,2);
2.方式一支持子查询,但方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 26,'宋茜','118'; # 把结果集插入对应的列,不用values
INSERT INTO beauty(id,NAME,phone)
SELECT id,boyName,'118'
FROM boys WHERE id<3;
1.修改单表的记录【※】
语法:
update 表名
set 列=新值,列=新值, ...
where 筛选条件;
2.修改多表的记录
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
修改beauty 表中姓唐的女神为13899888899
UPDATE beauty
SET phone='13899888899'
WHERE NAME LIKE '唐%';
SELECT * FROM beauty;
修改boys表 2号的名改为张飞,魅力值为10
UPDATE boys
SET boyname = '张飞',userCP=10
WHERE id=2;
SELECT * FROM boys;
修改张无忌的女朋友的手机号为114
# 涉及boys表和beauty两个表 ,需要内连接
UPDATE beauty AS b
INNER JOIN boys AS j
ON b.`boyfriend_id`=j.`id`
SET b.`phone`='114'
WHERE j.`boyName`='张无忌';
修改没有男朋友的女神的男朋友编号都为2
UPDATE beauty AS b # 哪个(女神)xxx没有yyy,所以beauty是主表
LEFT JOIN boys AS j
ON b.`boyfriend_id`=j.`id`
SET b.`boyfriend_id`=2
WHERE b.`boyfriend_id` IS NULL;
一删就是整行
方式一:
语法:
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 table 表名;删除整个表
方式一:单表删除
删除手机号以9结尾的女神信息
DELETE FROM beauty
WHERE phone LIKE '%9';
SELECT * FROM beauty;
SELECT * FROM boys;
#多表删除
删除张无忌的女朋友的信息
DELETE b # 删的是beauty 表
FROM beauty AS b
INNER JOIN boys AS j
ON j.id=b.boyfriend_id
WHERE j.boyName = '张无忌';
# 删除黄晓明的信息,以及他女朋友的信息
DELETE j,b
FROM beauty AS b
INNER JOIN boys AS j
ON j.`id`=b.`boyfriend_id`
WHERE j.`boyName`='黄晓明';
方式二:truncate
把boys魅力值大于100的男生删除
TRUNCATE TABLE boys
WHERE userCP>100; # 报错 不能用where
TRUNCATE TABLE boys;
delete truncate PK 【常见】
1 delete可以加where,truncate不能
2 truncate删除效率高一丢
3 加入要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列从断点开始,
而truncate删除后,再插入数据,自增长列的值从0开始
4 truncate删除没有返回值(0行受到影响),delete删除有返回值
5 truncate删除不能回滚,delete删除可以回滚
DELETE FROM boys; # 全删,假设之前的id最大到5
INSERT INTO boys(boyNAme,userCP)
VALUES('张飞',100),('刘备',100),('关云长',100);
SELECT * FROM boys; # 新的数据的id 从6开始
TRUNCATE TABLE boys; # 全删
INSERT INTO boys(boyNAme,userCP)
VALUES('张飞',100),('刘备',100),('关云长',100);
SELECT * FROM boys; # 新的数据的id 从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
);
# 查看表结构
DESC my_employees
#向my_employees插入数据
INSERT INTO my_employees(id,first_name,last_name,userid,salary)
VALUES(1,'patel','Ralph','Rptal',895),
(2,'Dance','Betty','Bdance',860),
(3,'Biri','Ben','Bbiri',1100),
(4,'Newman','Chad','Cnewman',750),
(5,'Ropeburn','Auddrey','Aropevur',1550);
# 或
INSERT INTO my_employees(id,first_name,last_name,userid,salary)
SELECT 1,'patel','Ralph','Rptal',895 UNION
SELECT 2,'Dance','Betty','Bdance',860 UNION
SELECT 3,'Biri','Ben','Bbiri',1100 UNION
SELECT 4,'Newman','Chad','Cnewman',750 UNION
SELECT 5,'Ropeburn','Auddrey','Aropevur',1550;
向user表插入数据
INSERT INTO users
VALUES(1,'Rptal',10),
(2,'Bdance',10),
(3,'Bbiri',20),
(4,'Cnewman',30),
(5,'Aropevur',40);
UPDATE my_employees
SET last_name='drelxer'
WHERE id=3;
UPDATE my_employees
SET salary=1000
WHERE salary<900;
SELECT * FROM my_employees;
DELETE u,m
FROM users AS u
INNER JOIN my_employees AS m
ON u.userid=m.`Userid`
WHERE u.userid='Bbiri';
删除所有数据
DELETE FROM my_employees;
DELETE FROM users;
检查所做的修正
SELECT * FROM my_employees;
清空表my_employees
TRUNCATE TABLE my_employees;