-- 多表连接
-- 写一条查询语句,查询员工姓名、部门名称、工作地点
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

mysql学习第三天练习(多表连接)的更多相关文章

  1. MySQL学习笔记三:库和表的管理

    1.MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中 performance_schema:服务器性能指标库 mysql: ...

  2. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  3. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  4. 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

    本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...

  5. MySQL学习笔记(三)—索引

    一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...

  6. Mysql学习第三天

    mysqldump -u root -p booksdb > C:/backup/booksdb_20180316.sql # 使用mysqldump命令备份数据库中的所有表 mysqldump ...

  7. mysql学习第三天笔记

    连接连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获取数据.在 WHERE子句中书写连接条件. 如果在多个表中出现相同的列名,则需要使用表名作为来自该表的列名的前缀. N个 ...

  8. MySQL开发——【联合查询、多表连接、子查询】

    联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...

  9. MySQL学习(三)主备分库分表和恢复数据 --- 2019年2月

    1.MySQL主备切换 readonly 设置对超级(super)权限是无效的,而用于同步更新的线程,就拥有超级权限. 建议在做主备数据库的时候,将备用数据库设置为只读.(反向用readonly来判断 ...

随机推荐

  1. 什么是微信小程序

    官方给的说法是: 微信小程序,简称小程序,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用 总结发现有这么几点: 1.免安装(不需要单独安装,是依托微 ...

  2. 【洛谷P4342】[IOI1998]Polygon

    Polygon 比较裸的环形DP(也可以说是区间DP) 将环拆成链,复制到后面,做区间DP即可 #include<iostream> #include<cstdio> usin ...

  3. PHP中级面试经历

    资源来自网络:http://www.2cto.com/kf/201304/204749.html 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) 2.echo(),p ...

  4. tomcat解决端口号占用问题

    1.第一种方法 更改tomcat自己的端口号: conf 目录下 找到 server.xml,把默认的8080端口改个别的试试,tomcat 一般端口号改的要大于 6000,. 2.第二种方法 关闭端 ...

  5. ios学习路线—Objective-C(堆(heap)和栈(stack))

    Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,即release 栈由编译器管理自动释放的,在方法中(函数体)定义的变量通常是在栈内,因此如果你的变量要跨函数的话就 ...

  6. c# 动态编译继承接口

    c#里面的动态编译我就不讲了,主要的都有了.如果不熟悉我推荐博文 https://www.cnblogs.com/maguoyong/articles/5553827.html 标准的动态编译 这里主 ...

  7. export default 和 export的使用方式

    注意:1.export default 向外暴露的成员,可以使用任意的变量来接收 2.在一个模块中 ; export default 只允许向外暴露一次 3.在一个模块中 ; 可以同时使用 expor ...

  8. vue webpack 懒加载

    自己项目中的写法 const router = new Router({ routes: [ { path: '/index', component: (resolve) => { requir ...

  9. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--D-psd面试

    链接:https://www.nowcoder.com/acm/contest/90/D 来源:牛客网 1.题目描述 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲 ...

  10. Xadmin使用二

    1:修改site-title和site-footer,增加菜单折叠效果 在adminx.py中增加下面代码: class GlobalSetting(object): # 设置Title site_t ...