-- 多表连接
-- 写一条查询语句,查询员工姓名、部门名称、工作地点
select ename,dname,loc
from emp,dept
where emp.deptno = dept.deptno -- 练习1
-- 1、写一个查询,显示所有员工姓名、部门编号、部门名称
select ename,dept.deptno,dname
from emp,dept
where emp.deptno = dept.deptno
-- 2、写一个查询,显示所有工作在CHICAGO并且奖金不为空的员工
-- 姓名,工作地点,奖金
select ename,loc,comm
from emp,dept
where emp.deptno = dept.deptno
and loc = 'CHICAGO'
and comm is not null
-- 3、写一个查询,显示所有姓名中含有A字符的员工姓名、工作地点
select ename,loc
from emp,dept
where emp.deptno = dept.deptno
and ename like '%A%' -- 查询每个员工的姓名,工资,工资等级
select ename,sal,grade
from emp,salgrade
where sal>=losal
and sal<=hisal select ename,sal,grade
from emp,salgrade
where sal between losal and hisal -- 练习2
-- 1、查询每个员工的编号,姓名,工资等级,按照工资等级进
-- 行升序排列
select empno,ename,grade,loc
from emp,dept,salgrade
where emp.deptno = dept.deptno
and sal>=losal
and sal<=hisal
order by grade -- 2、自身连接
-- 查询每个员工的姓名和直接上级姓名
select t1.ename 员工姓名,t2.ename 直接上级姓名
from emp t1,emp t2
where t1.mgr = t2.empno -- 练习3
-- 查询所有工作在YORK和CHICAGO的员工姓名,员工编号,以及
-- 他们的经理姓名,经理编号
select t1.ename,t1.empno,t2.ename 经理姓名,t2.empno 经理编号
from emp t1,emp t2,dept
where t1.mgr = t2.empno
and t1.deptno = dept.deptno
and loc in('NEW YORK','CHICAGO') -- 3、交叉连接
select *
from emp
cross join dept -- 4、自然连接
select *
from emp
natural join dept -- 5、using子句
select *
from emp
join dept
using(deptno) -- 6、on子句
select *
from emp
join dept
on emp.deptno = dept.deptno
join salgrade
on sal between losal and hisal
where emp.deptno = 10 -- 查询员工及所在部门信息,要求把没有员工的部门也显示出来
select *
from emp
join dept
on emp.deptno = dept.deptno select *
from emp,dept
where emp.deptno = dept.deptno -- 7、查询员工及所在部门信息,要求把没有员工的部门也显示出来
select *
from dept
left join emp
on dept.deptno = emp.deptno select *
from emp
right join dept
on emp.deptno = dept.deptno -- 查询员工的姓名及上级的姓名,要求把没有上级的员工姓名也显示出来
select t1.ename 姓名,t2.ename 经理姓名
from emp t1
left join emp t2
on t1.mgr = t2.empno -- 练习4
-- 使用sql-99写法,完成如下练习
-- 1、创建一个员工表和部门表的交叉连接
select *
from emp
cross join dept
-- 2、使用自然连接,显示入职日期在80年5月1日之后的
-- 员工姓名、部门名称、入职日期
select ename,dname,hiredate
from emp
natural join dept
where hiredate >= '1980-05-01'
-- 3、使用using子句,显示工作在CHICAGO的员工姓名、部门名称、工作地点
select ename,dname,loc
from emp
join dept
using(deptno)
where loc = 'CHICAGO'
-- 4、使用on 子句,显示工作在CHICAGO的员工姓名、部门名称、工作地点、薪资等级
select ename,dname,loc,grade
from emp
join dept
on emp.deptno = dept.deptno
join salgrade
on sal between losal and hisal
where loc = 'CHICAGO'
-- 5、使用左连接,查询每个员工姓名,经理姓名,没有经历的king也要显示出来
select e.ename,m.ename
from emp e
left join emp m
on e.mgr = m.empno

最新文章

  1. ionic ngCordova插件安装
  2. PNote桌面贴小工具 - 项目管理系列文章
  3. JSP基础总结 脚本元素
  4. 禁用iPhone手机浏览器上给电话号码自动加上的link样式
  5. java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
  6. C++实现水波纹、火焰和血浆效果
  7. AndroidHttp通信 HTTP Client与HttpURLConnection的区别
  8. 【Mongous】
  9. apk混淆打包注意事项
  10. ZOJ 3635 Cinema in Akiba(线段树)
  11. Git基本操作命令
  12. lesson - 9 课程笔记
  13. 转:Flutter动画一
  14. CentOS7(64) yum安装、配置PostgreSQL 11
  15. linux 常用 掌握要点 详细终结
  16. day 27 Python中进程的操作
  17. python 文件合并和编号
  18. 【WinRT】让控件飞,WinRT 中实现 web 中的 dragable 效果
  19. Linux 关机 休眠, 关闭移动设备自动挂载 命令
  20. Voronoi图及matlab实现

热门文章

  1. dedecms 权重排序问题
  2. 用大白话告诉你什么是Event Loop
  3. day2-基础 变量,判断,循环
  4. 林锐:5 C++/C程序的基本概念
  5. [原]Machine Learing 入门 —— 开门第0篇
  6. C语言 返回指针的函数
  7. Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains 【树状数组维护区间最大值】
  8. Git使用02--branch分支, tag版本, 忽略文件 .gitingore
  9. Android学习笔记_71_Android 多个项目之间如何引用 项目怎样打jar包
  10. JavaEE权限管理系统的搭建(六)--------使用拦截器实现菜单URL的跳转权限验证和页面的三级菜单权限按钮显示