Mysql day02_汇总

这篇博客详细介绍了MySQL中的多表查询,包括等值连接、自身连接、表别名以及多于两个表的连接和非等值连接。通过一系列的练习,展示了如何进行左外连接和右外连接,并提供了多个查询示例,如查询员工信息、部门信息、工作地点等。同时,讲解了外连接的使用,包括左外连接和右外连接,以及在实际场景中的应用。作业部分涉及多张表的综合查询,旨在巩固所学知识。
摘要由CSDN通过智能技术生成

多表查询

等值连接

等值连接两张表字段意义相同,字段名不一定相同,类型一般相同
分析过程:
1.先分析数据或条件来自哪些表 产生from子句
2.如果有多张表先写连接条件(注意n-1) where 已经连接一张大表了
3.再分析其他约束条件 and …(用多表的数据里)
4.看一下有没有排序分页 ORDER BY LIMIT
5.显示哪些列 SELECT 子句

练习:查询员工信息,显示员工编号,员工姓名,部门名称,部门编号

SELECT e.empno,e.ename,d.dname,d.deptno
FROM emp e,dept d

在这里插入图片描述
如果没指定两张表的连接条件,那么会产生第一张表的记录与第二张的每条记录
产生的记录数 m*n 这种情况叫笛卡尔积(交叉连接)
如何想消除这种现象需要指定连接条件
n张表至少有n-1个连接条件

SELECT e.empno,e.ename,d.dname,d.deptno
FROM emp e,dept d
WHERE e.deptno=d.deptno;

在这里插入图片描述
练习:写一个查询,显示所有工作在CHICAGO并且奖金不为空的
员工姓名,工作地点,奖金

SELECT e.ename,d.loc,e.comm
FROM dept d,emp e
WHERE d.deptno=e.deptno AND d.loc='CHICAGO' AND comm IS NOT NULL;

在这里插入图片描述
练习:写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点。

SELECT e.ename,d.loc
FROM dept d,emp e
WHERE d.deptno=e.deptno AND e.ename LIKE "%A%";

在这里插入图片描述

自身连接

练习:查询每一个员工的姓名和直接上级姓名
员工表e 经理表m

SELECT e.ename  员工姓名,m.ename 经理姓名
FROM emp e,emp m
WHERE e.mgr=m.empno;

在这里插入图片描述

表别名

练习:查询员工信息及其部门信息

SELECT e.*,d.*
FROM emp e,dept d
WHERE e.deptno=d.deptno

在这里插入图片描述
练习:查询员工编号,员工姓名,工作岗位名称,工作地点

SELECT e.deptno,e.ename,e.job,d.loc
FROM emp e,dept d
WHERE e.deptno=d.deptno

在这里插入图片描述

多于两个表的连接及非等值连接

练习:查询员工编号,员工姓名,工作岗位,工作地点,月工资,薪资等级

SELECT e.empno,e.ename,e.job,d.loc,e.sal,s.grade
FROM emp e,salgrade s,dept d
WHERE e.sal BETWEEN s.losal AND s.hisal AND e.deptno=d.deptno;

在这里插入图片描述
练习:显示员工SMITH的姓名,部门名称,直接上级名称

SELECT e.ename 姓名,d.dname 部门名称,m.ename 经理姓名
FROM emp e,emp m,dept d
WHERE e.mgr=m.empno AND e.deptno=d.deptno AND e.ename='SMITH';

在这里插入图片描述
练习:显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。

SELECT e.ename,d.dname,e.sal,s.grade
FROM emp e,salgrade s,dept d
WHERE e.sal BETWEEN s.losal AND s.hisal AND e.deptno=d.deptno AND s.grade>4;

在这里插入图片描述
练习:显示员工KING和FORD管理的员工姓名及其经理姓名。

SELECT e.ename,m.ename
FROM emp e,emp m
WHERE e.mgr=m.empno AND (m.ename='KING' OR m.ename='FORD');

在这里插入图片描述
练习:显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早。

SELECT e
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值