mysql篇Day3
- 知识点讲解:
- 1、内连接(重点)
- 2、外连接
- 3、多表查询=》99版
- 4、子查询
- 5、分页查询:limit
- 6、联合查询 union/union all
- 7、DQL结束
- 8、DML语句:数据库操作的语言
- 9、插入语句:insert
- 11、删除数据:delete、truncate
- 12、DDL语言
20201223
知识点回顾:
1、安全等于 <==>
2、排序:order by
3、分组查询:group by…having
4、连接查询
(1) 分类
① 年份
② 查询方式
- 内连接
a. 等价连接
b. 非等价连接
c. 自连接 - 外连接
a. 左连接
b. 右连接 - 全连接
作业分析与讲解:
1、----
知识点讲解:
1、内连接(重点)
(1) -------
(2)自然连接NATURAL JOIN
自然连接不用指定连接条件,mysql会自动寻找字段名相同且字段类型相同的字段进行连接,与内连接的区别,内连接要指定连接条件,且是有选择的。
2、外连接
(1) 什么是外连接,外连接与内连接的区别?
(2) 内连接:
① 假如A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录将被查询查来
② AB两张表没有主副之分,两张表是平等的。
(3) 外连接:
① 假如A和B表进行连接,使用外连接的话,AB两个表有一张是主表,一张是副表,主要查询的是主表中的数据,捎带会将副表中的数据进行查询,当副表中的数据没有与主表中的数据匹配上,副表自动模拟NULL与主表进行匹配
② 分类:OUTER JOIN
- 左外连接(左连接)LEFT OUTER JOIN
a. 表示左边的表是主表 - 右外连接(右连接)RIGHT OUTER JOIN
a. 表示右边的表示主表
(4) 案例:
3、多表查询=》99版
Select
查询列表
From
A表
Inner Join
B表
Inner Join
C表
On
连接条件
Where
筛选条件
4、子查询
(1) 概念
① 出现在其他语句中的select语句,称为子查询或内查询,外部的查询语句,称为主查询或外查询
(2) 子查询出现的位置
① Select 后面
- 结果集只是一行一列
② From 后面
- 结果集一般多行多列
③ Where 后面
- 单行、多行 等
(3) Where 后面子查询
① 后面:单行、多行
② 特点:
- 子查询放在小括号中
- 单行单列,一般搭配:>、<、= 等
- 多行多列:in /not in 等
纠正,最后一行代码有误:倘若10部门最高工资3000,20部门最高工资5000,但20部门还有3000工资的员工,如果采用此代码,在子查询中查出的结果集为3000和5000,然后再在整个emp表中查询工资在3000到5000的员工,20部门工资为3000的员工就会被筛选出来,不符题意,正确代码:
SELECT
e.ename,MAX(e.sal),d.dname
FROM
emp e JOIN dept d
ON
e.deptno=d.deptno
GROUP BY
d.deptno;
(4) Select后面子查询
① 单行单列
(5) From 后面子查询
(6) 案例
5、分页查询:limit
(1) 应用
① 当现实的数据,一页显示不全,需要分页提交sql语句
(2) 语法
(3) 整理
6、联合查询 union/union all
(1) 合并:将多个查询语句的结果合并成一个结果
(2) 使用场景:
① 要查询的结果来自多个表,而且这些表之间没有任何的关系,但是查询的信息一致
(3) 联合查询特点:
① 要求多表查询语句的查询列数是一致的
② 要求多条查询语句的查询列表的类型和顺序最好一致
③ union关键字默认去重,如果使用union all 可以包含重复项
(4) 联合查询 公式:
查询语句1
union【all】
查询语句2
union【all】
…
(5) 案例:
7、DQL结束
8、DML语句:数据库操作的语言
(1) 增删改(insert、update、delete)
9、插入语句:insert
(1) 语句格式:(第一种形式)
insert into 表名(列名,…)values(值1,…)
insert into 表名 values(…)
insert into 表名(列名,…) select 字段,… from 表名
(2) 补充:插入公式(第二种形式)
insert into 表名 set 列名=值,列名=值,…
(3) 两种方式的区别:
① 第一种形式,可以进行批量插入,第二种形式不能进行批量插入
② 第一种形式,可以进行复制插入,第二种形式不可以
(4) 案例:
# 10、修改:update(1) 修改的语法
update 表名 set 列=新值,列=新值,… where 筛选条件
(2) 案例:
11、删除数据:delete、truncate
(1) 第一种形式:delete
① 语法结构
delete from 表名 where 筛选条件
② 多表删除
delete 别名1,别名2 from 表1 别名1,表2 别名2 where 筛选条件
(2) 第二种形式:truncate (删除、截断)
① 语法结构:
truncate table 表名
(3) delete 与 truncate 对比
① delete 可以和 where 筛选条件进行连用,truncate不可以
② delete将记录一条一条删除,truncate将表中的信息全部截断
③ Truncate效率比delete高
④ Delete删除之后的数据可以回滚,truncate不能回滚
⑤ Delete删除之后,自增会继续。Truncate删除数据,之后,自增会从头开始计算。
(4) 案例
12、DDL语言
(1) 数据定义语言
(2) 数据库与表的管理
(3) 数据库管理
① 创建、修改、删除
(4) 表管理
① 创建、修改、删除
(5) 数据管理
① 数据库创建:
- create database [if not exists] 数据库名
② 数据库名称修改:(问题) - rename database 旧名 to 新库名
③ 修改数据库的字符集 - alter database 库名 character set 编码格式;
④ 删除数据库 - drop database [if exists] 库名
(6) 表管理:
① 表的创建
② 表修改 - 添加新列
Alter table 表名 add column 列名 类型; - 修改列名称
alter table 表名 change column 旧列名 新列名 类型; - 删除列
Alter table 表名 drop column 列名;
③ 表删除
drop table [if exists] 表名;
④ 案例:
总结:
1.主要有左外连接就会有一个右外连接与之对应,操作之法,将连接名改了,并且将数据源调换位置,例子如下:
#2、使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。
SELECT
y.ename,l.ename
FROM
emp y LEFT JOIN emp l
ON
y.mgr=l.empno;
#3、使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来
SELECT
y.ename,l.ename
FROM
emp l RIGHT JOIN emp y
ON
y.mgr=l.empno;
2.在from处表使用别名后,其他地方不能再用原表名.字段了,即原表名不能用了,错误例子如下:
正确例子: