七个查询命令总结
1.七个查询命令执行优先级: FROM > WHERE > GROUP BY > HAVING> SELECT >ORDER BY >LIMIT
2.七个查询命令书写顺序:
SELECT 字段名1,字段名
FROM 表名
WHERE 数据行定位条件
GROUP BY 分组字段1,分组字段2
Having 临时表删除条件
ORDER BY 排序字段 排序规则
desc。 按照降序规则排列数据行 asc. 按照升序规则排列数据行 在默认情况下,按照升序规则排列
limit 起始行行数,向下截取行数
-
除了FROM命令之外,剩下的六个查询命令操作的临时表是由上一个查询命令生成的临时表
-
除了HAVING命令之外,剩下的六个查询命令执行完毕后都会生成新的临时表,having负责将GROUP BY 生成的临时表中不满足条件的临时表进行删除
-
七个查询命令中,只有GROUP BY 执行完毕后,有可能生成多个临时表
6.一个查询语句中,最终展示给用户的临时表,只能是最后一个查询命令生成 。
内连接合并方案
一。如何判断临时表中数据行是否是【脏数据】
合法数据: 当前数据行来自于一方表.主键字段 == 当前数据行来自于多方表.外键字段
脏数据: 当前数据行来自于一方表.主键字段 != 当前数据行来自于多方表.外键字段
如果临时表没有存在明显的一方主键字段与多方外键字段,此时根据实际隶属关系进行判断
二。如何从连接合并方案生成的临时表中,将合法数据读取出来
ON 一方表名.主键字段 = 多方表名.外键字段
ON命令循环遍历通过连接合并方案生成的临时表的每一个数据行,每次定位一个数据行。如果这个数据行来自于一方表。主键字段值 等于 这个数据行来自于多方表。外键字段值,则判定为合法数据,ON将这样的数据行读取出来保存到一个全新的临时表中。供剩下七个查询命令来操作。
ON 命令 书写在 WHERE前方, 在WHERE执行之前进行执行的
需求: 查询每一个【部门名称】,及其【职员的名称】
select DEPT.DNAME,EMP.ENAME
FROM DEPT JOIN EMP
ON DEPT.DEPTNO = EMP.DEPTNO