mysql学习第三天练习(多表连接)
2024-08-29 06:52:55
-- 多表连接
-- 写一条查询语句,查询员工姓名、部门名称、工作地点
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
最新文章
- ionic ngCordova插件安装
- PNote桌面贴小工具 - 项目管理系列文章
- JSP基础总结 脚本元素
- 禁用iPhone手机浏览器上给电话号码自动加上的link样式
- java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
- C++实现水波纹、火焰和血浆效果
- AndroidHttp通信 HTTP Client与HttpURLConnection的区别
- 【Mongous】
- apk混淆打包注意事项
- ZOJ 3635 Cinema in Akiba(线段树)
- Git基本操作命令
- lesson - 9 课程笔记
- 转:Flutter动画一
- CentOS7(64) yum安装、配置PostgreSQL 11
- linux 常用 掌握要点 详细终结
- day 27 Python中进程的操作
- python 文件合并和编号
- 【WinRT】让控件飞,WinRT 中实现 web 中的 dragable 效果
- Linux 关机 休眠, 关闭移动设备自动挂载 命令
- Voronoi图及matlab实现
热门文章
- dedecms 权重排序问题
- 用大白话告诉你什么是Event Loop
- day2-基础 变量,判断,循环
- 林锐:5 C++/C程序的基本概念
- [原]Machine Learing 入门 —— 开门第0篇
- C语言 返回指针的函数
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains 【树状数组维护区间最大值】
- Git使用02--branch分支, tag版本, 忽略文件 .gitingore
- Android学习笔记_71_Android 多个项目之间如何引用 项目怎样打jar包
- JavaEE权限管理系统的搭建(六)--------使用拦截器实现菜单URL的跳转权限验证和页面的三级菜单权限按钮显示