Mysql-多表连接-练习题3

01.内连接-等值连接

1.写一个查询,显示所有员工姓名,部门编号,部门名称。

select e.ename,d.deptno,d.dname from emp e,dept d where e.deptno =d.deptno

2.写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工姓名,工作地点,奖金

select e.ename,d.loc,e.comm from emp e,dept d where d.loc ='CHICAGO' and e.comm is not null 

3.写一个查询,显示所有姓名中含有A字符的员工姓名,工作地点。

select e.ename,d.loc from emp e,dept d where ename like '%A%' and e.deptno=d.deptno

4.查询每个员工的编号,姓名,工资,工资等级,所在工作城市,按照工资等级进行升序排序。

select e.deptno,e.ename,e.sal,s.grade,d.loc from emp e,dept d,salgrade s where e.deptno =d.deptno and e.sal BETWEEN s.losal and s.hisal order by s.grade ASC

02.内连接-自身连接

每个员工及对应领导的名字

-- 员工表里的经理编号等于经理表的员工编号
select w.ename 员工编号,m.ename 经理编号 from emp w,emp m where w.mgr = m.empno

5.查询所有工作在NEW YORK和CHICAGO的员工姓名,员工编号,以及他们的经理姓名,经理编号。

select w.ename as 员工姓名 ,w.empno as 员工编号 ,m.ename as 经理姓名,m.empno as 经理编号 
from emp w,emp m,dept d 
where w.deptno = d.deptno and w.mgr = m.empno and  d.loc in('NEW YORK','CHICAGO')

03.内连接-交叉连接 CROSS JOIN(笛卡尔积)

-- 交叉连接 CROSS JOIN
select * from emp CROSS join dept;

04.内连接-自然连接 NATURAL JOIN

select * from emp NATURAL JOIN dept;
-- 等价于
select * from emp,dept where emp.deptno =dept.deptno

05.内连接-USING 子句

如果两个表的关联字段名是一样的,就可以使用Using来建立关系,简洁明了。如果不一样,只能用On了哦~

-- 比自然连接更具体指向那一列
select * from emp join dept USING(deptno);

06.内连接-join on 子句

select e.ename,d.loc,e.sal from emp e join dept d on(e.deptno =d.deptno) where sal>1500;

以上都是内连接:符合连接条件数据查询出来,都叫内连接
外连接:符号连接条件查询出来,不符合连接条件也查询出来


07.外连接(左外连接,右外连接,全外连接)

查询所有部门下的员工信息

dept表

emp表

40号部门底下没有员工,不能说明40号部门不存在!!所以只能用外连接,外连接分为3种情况!

左外链接(重点) LEFT JOIN 或者 LEFT OUTER JOIN

-- 左外连接,左表会把全部数据显示出来(不符合也显示出来),右表把符合连接条件数据显示出来
select * from  dept  LEFT  JOIN emp on(emp.deptno =dept.deptno)
左外链接

右外链接 RIGHT JOIN .. on 或者 RIGHT OUTER JOIN ..on

-- 右外连接  OUTER JOIN
select * from  emp  RIGHT  JOIN dept on(emp.deptno =dept.deptno)
右外连接

全外链接 full JOIN (Mysql 没有,Orcale有)

select * from  dept  full JOIN emp on(emp.deptno =dept.deptno)

使用SQL-99写法,完成如下练习

6.创建一个员工表和部门表的交叉连接。

select * from emp CROSS join dept;

7.使用自然连接,显示入职日期在80年5月1日之后的员工姓名,部门名称,入职日期

select emp.ename,dept.dname,emp.hiredate 
from emp NATURAL JOIN dept 
where emp.hiredate>'1980-05-01';

8.使用USING子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点

select emp.ename,dept.dname,dept.loc 
from emp join dept USING(deptno) 
where loc='CHICAGO';

9.使用ON子句,显示工作在CHICAGO的员工姓名,部门名称,工作地点,薪资等级 三表连接

select e.ename,d.dname,d.loc,s.grade from emp e 
join dept d on(e.deptno =d.deptno)
join salgrade s on(e.sal BETWEEN s.losal and s.hisal)
where d.loc='CHICAGO'

10.使用左连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

select w.ename as 员工姓名, m.ename as 经理编号 
from emp w LEFT JOIN emp m 
on w.mgr = m.empno

11.使用右连接,查询每个员工的姓名,经理姓名,没有经理的King也要显示出来。

select w.ename as 员工姓名, m.ename as 经理编号 
from emp m RIGHT JOIN emp w 
on w.mgr = m.empno

12.显示员工SMITH的姓名,部门名称,直接上级名称

select w.ename as 员工表,m.ename as 经理表,d.dname as 部门名称 
from emp w LEFT JOIN emp m on(w.mgr = m.empno)  LEFT JOIN dept d on(w.deptno =d.deptno)
where w.ename ='SMITH'

13.显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。

select e.ename,d.loc,e.sal,s.grade 
from emp e LEFT JOIN dept d on(e.deptno =d.deptno) LEFT JOIN salgrade s on(e.sal BETWEEN losal and hisal)
where s.grade >4

14.显示员工KING和FORD管理的员工姓名及其经理姓名

select w.ename as 员工姓名,m.ename as 经理姓名 from emp w LEFT JOIN emp m on(w.mgr = m.empno
where  m.ename in('KING','FORD')

15.显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早。

-- 左外链接
select w.ename as 员工姓名,w.hiredate as 员工参加工作时间, m.ename as 经理姓名, m.hiredate as 经理参加工作时间

from emp w LEFT JOIN emp m on(w.mgr = m.empno)

where w.hiredate < m.hiredate


-- 自连接
select  e.ename 员工姓名,e.HIREDATE 员工参加工作时间,m.ENAME 经理姓名,m.HIREDATE 经理参加工作时间

from emp e,emp m

where e.mgr=m.empno

and e.HIREDATE<m.HIREDATE
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269