• MySQL表查询--多表笛卡尔积和子连接


    1.mysql多表查询

    说明
    多表查询是指基于两个和两个以上的表查询,在实际应用中,查询单个表可能不能满足你的需求,(如下面的课堂练习),需要使用到(dept表和emp表)

    1. 多表查询 显示雇员名,雇员工资及所在部门的名字【笛卡尔集】
    2. 小技巧:多表查询的条件不能少于表的个数-1,否则会出现笛卡尔集
    3. 如何显示部门号为10的部门名、员工名和工资。
    4. 显示各个员工的姓名,工资,及其工资的级别

    1.规则

    在默认情况下:当两个表查询时,规则

    1. 从第一张表中,取出一行和第二张表的每一行进行组合,返回结果[含有两张表的所有列].
    2. 一共返回的记录数第一张表行数*第二张表的行数
    3. 这样多表查询默认处理返回的结果,称为笛卡尔集
    4. 解决这个多表的关键就是要写出正确的过滤条件 where,需要程序员进行分析

    2.代码演示

    -- 多表查询
    -- ?显示雇员名,雇员工资及所在部门的名字 【笛卡尔集】
    /*
    	分析
    	1. 雇员名,雇员工资 来自 emp表
    	2. 部门的名字 来自 dept表
    	3. 需求对 emp 和 dept查询  ename,sal,dname,deptno
    	4. 当我们需要指定显示某个表的列是,需要 表.列表
    */
    SELECT ename,sal,dname,emp.deptno
    	FROM emp, dept 
    	WHERE emp.deptno = dept.deptno
    	
    SELECT * FROM emp;
    SELECT * FROM dept;
    SELECT * FROM salgrade;
    -- 老韩小技巧:多表查询的条件不能少于 表的个数-1, 否则会出现笛卡尔集
    -- ?如何显示部门号为10的部门名、员工名和工资 
    SELECT ename,sal,dname,emp.deptno
    	FROM emp, dept 
    	WHERE emp.deptno = dept.deptno AND emp.deptno = 10
    
    -- ?显示各个员工的姓名,工资,及其工资的级别
    
    -- 思路 姓名,工资 来自 emp 13
    --      工资级别 salgrade 5
    -- 写sql , 先写一个简单,然后加入过滤条件...
    SELECT ename, sal, grade 
    	FROM emp , salgrade
    	WHERE sal BETWEEN losal AND hisal; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.子连接

    子连接是指在同一张表的连接查询【将同一张表看作两张表】

    -- 多表查询的 自连接
    
    -- 思考题: 显示公司员工名字和他的上级的名字
    
    -- 老韩分析: 员工名字 在emp, 上级的名字的名字 emp
    -- 员工和上级是通过 emp表的 mgr 列关联
    -- 这里老师小结:
    -- 自连接的特点 1. 把同一张表当做两张表使用
    --               2. 需要给表取别名 表名  表别名 
    --		 3. 列名不明确,可以指定列的别名 列名 as 列的别名		
    SELECT worker.ename AS '职员名' ,  boss.ename AS '上级名'
    	FROM emp worker, emp boss
    	WHERE worker.mgr = boss.empno;
    SELECT * FROM emp;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

  • 相关阅读:
    【视觉基础篇】16 # 如何使用噪声生成复杂的纹理?
    NLP 模型中的偏差和公平性检测
    碰瓷“一带一路”
    基于单片机的纸牌24点游戏模拟器设计
    【Conda】常用命令
    TIA博途_水处理项目中开启累计运行时间最短的泵_程序示例
    批零商企数字化转型与进销存软件的线上线下全赋能
    中级C++:map和set的迷你实现
    人工智能知识全面讲解:让数据更直观的方法
    原材料行业经销商在线管理系统:提升经销商管理品质,优化分销渠道
  • 原文地址:https://blog.csdn.net/qq_59708493/article/details/126486626