尚硅谷MYSQL(5-6章)

排序和分页 

排序

如果没有使用排序操作的话 查询出来的数据是按添加的顺序排序的

ORDER BY是来进行排序的 后面可以添加ASC升序 DESC降序

如果后面没有显示指明排序的方式的话 则默认按照升序排序

7186a13c52e84b4a991860a6a37b285f.png

where中不能使用列的别名

ee8a65ba300947db8e582aeb584f5595.png

我们在使用sql语句的时候 她的执行顺序不是从第一条开始的 而是从from语句开始 

先看从哪个表中拿出数据 然后看一下她过滤出什么来了 再看select中的需要哪几个字段

这样你才可以定义一个别名使用在order by中

声明:where需要声明在from后 order by 前面

e6c47178c15a4a0a9ad97596b531363d.png

多级排序的就是在第一种情况相同的时候 进行第二个条件排序

分页

2224a20c695f4c77b93354328301136e.png

分页显式公式 :(当前页数 -1 * 每页条数,每页条数

limit严格来说是有两个参数 位置偏移量和条目数 如果只有一个参数就是从0开始只有条目数

c56559609a03405b95b344bdc8235e2f.png

51c82afdb4f44f9bbf341de1265d58a7.pnga3d84062cb474d9aa0f81d0cbe30b135.png

14f7a4b5c53046ee922e693adcf1fa2c.png

8e075295b60e4ba4af74d9b5360fd490.png

多表查询

d86b29f55abd4504b92a23c97c78a75a.png

出现笛卡尔积的错误(每个员工都到每个部门工作过)

74a1763d6c3a4b309849229929f60a91.png

78f5b1933b6840a7a42de2cdae9ebfcf.png

笛卡尔积或者叫做交叉连接就是两个集合x和y x和y的所有可能组合 x*y

咱们的数学坐标系就是笛卡尔发明的 外国叫做笛卡尔坐标系

2c2f5d93d4854e068d5f31db8560326a.png

3c0ac95aaec04332b52b074b68e26a5c.png

多表查询的正确方式 需要有连接条件

0d75c3081023404782c4cab5e0f6a28c.png4f307df7f0104f25b8725a75f64c0194.png

如果要给表起别名的话 需要使用表的别名 如果使用原名的话就会报错

6479be6b53884b6786d59087d91b0ed9.png

84795301188e44c5b0c6a4f22f9f0157.png

多表查询的分类

等值连接vs非等值连接

非等值连接的例子

fd45a4a89f034e3a969353ba22ccd5d7.png

自连接vs非自连接

自连接

9b2ed047eb154804bed222f0c556fb8d.png

9aa208a5623b42809d3a8a572a2c46dd.png

内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
外连接: 两个表在连接过程中除了返回满足连接条件的行以外 还返回左(或右)表中不满足条件的
行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)。
如果是左外连接,则连接条件中左边的表也称为 主表 ,右边的表称为 从表 。
如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表 。
 
在面试中 只要出现了 所有的这个字眼 就是外连接 
39e1f1cfb9824fe9ac3d8421f9114209.png
sql92实现内连接见上
sql92实现外连接:使用+ 不支持sql92的写法
 
 
3f7fa63a305742f3aa6482f375f93b1d.png
c6382c9e30a642e195ceb10125c0524e.png
使用sql99
8859e04aaf7743019ced1f6020a94508.png

右外连接

61bfd9553c094f26a1385452afe4fc5a.png
86199275bf8042b0975db3d42422fc13.png
中间是内连接 左边是左外连接 右边是右外连接 如果全部都有的话就是满外连接
3a6e948c335f49f4a6b564ee74cfae13.png
 
908f1ecf7a41464b9a71d5bdef47f1df.png
MySQL不支持full outer join (满外连接)

七种sql join的实现

union 会多一个去重的操作

union操作符比起union all操作符来说 union all操作符多了一个106 也就是一个公共的部分 

开发中 我们可以使用union all的话 就用union all 

比如下图要做一个满外连接的话 可以使用左上图和右下图来进行合并

8dac35609ff84d11afb57d099d53c18e.png8937a781ba344ca2b82fc6d3a413243a.pngc41b5f027609490595814d8f843daca3.png

270f51256f134a93a407d76076da57bb.png8fcde48087a846bd86934b63cc460f66.png

或者是左中堂图和右上图

8bf84b76db9b4824b09d8d4577dac511.png

sql99的新特性

自然连接

sql92中使用等值连接 将同时复合下面条件的连接起来 在sql99中可以使用新特性natural join

c0e5404b38b64a5899608584534c71b4.png

using连接

当我们进行连接的时候,SQL99还支持使用 USING 指定数据表里的 同名字段 进行等值连接。但是只能配合JOIN一起使用。比如

8ff09c993d034472ada96c2a689419fc.png.

0cf6c7dca08b40cc91faf93b2dc19e01.png

例题

eae0a2af20144cdabe07edab90e149c9.png

多表查询中 select后面的每个字段都要对应相应的表  并且题目的要求是所有的员工 所以需要看员工列表在哪一列 左边的话 就是用左外连接 

7e55609dbce8431a8e38a2aa981592bf.png

d26bb129b8ee41998d3048b2010fcd6d.png

sql90的语法(没有外连接的话可以使用sql92的语法)f57c06759cd24ee8b162722de7afbf3f.png

sql92的语法

22763ae9caff4134a7f0d1b99bc4bdf7.png

d58f36e4b6524a7dbca637a21b727386.png475112690662468887e62ae906fc8890.png8629d35454524aa698c80ee57b622c35.pngf557673f32d2456cac1c23a9d8389ea8.png

 第七题的话可以使用子查询 但是这里暂时不讲方式二就是使用的子查询

a004a07ba13f4386bee26e80a09b908c.png

0b85dca5574a4519951c2ebca594a437.pnga112402486254486ad436b73a8ca6bf5.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值