尚硅谷MYSQL(5-6章)

排序和分页

排序

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

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

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

where中不能使用列的别名

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

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

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

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

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

分页


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

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

多表查询

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

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

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

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

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

多表查询的分类

等值连接vs非等值连接

非等值连接的例子

自连接vs非自连接

自连接


内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
外连接: 两个表在连接过程中除了返回满足连接条件的行以外 还返回左(或右)表中不满足条件的
行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)。
如果是左外连接,则连接条件中左边的表也称为 主表 ,右边的表称为 从表 。
如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表 。
在面试中 只要出现了 所有的这个字眼 就是外连接

sql92实现内连接见上
sql92实现外连接:使用+ 不支持sql92的写法


使用sql99

右外连接



中间是内连接 左边是左外连接 右边是右外连接 如果全部都有的话就是满外连接


MySQL不支持full outer join (满外连接)

七种sql join的实现

union 会多一个去重的操作

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

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

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

或者是左中堂图和右上图

sql99的新特性

自然连接

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

using连接

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

.

例题

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

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

sql92的语法

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

相关推荐
杨杨杨大侠7 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java
Thinker QAQ8 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
hanlin038 小时前
刷题笔记:力扣第32题-最长有效括号
笔记·算法·leetcode
Gauss松鼠会8 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
霸道流氓气质9 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
AOI小白新手上路9 小时前
autodl常用的tar 打包下载(数据集)命令手册:逐段拆解与套用模板
java·大数据·数据库
xian_wwq10 小时前
【学习笔记】Milvus 如何完成一次向量相似度检索,Milvus 索引到底应该怎么选?-15
笔记·学习·milvus
dishugj11 小时前
系统架构风险点、敏感点和权衡点的概念和区分
java·开发语言
苜蓿muxu11 小时前
常用代码命名规范
java