mysql学习第三天练习(多表连接)
-- 多表连接
-- 写一条查询语句,查询员工姓名、部门名称、工作地点
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学习第三天练习(多表连接)的更多相关文章
- MySQL学习笔记三:库和表的管理
1.MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中 performance_schema:服务器性能指标库 mysql: ...
- MySql学习笔记三
MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表
本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...
- MySQL学习笔记(三)—索引
一.概述 1.基本概念 在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...
- Mysql学习第三天
mysqldump -u root -p booksdb > C:/backup/booksdb_20180316.sql # 使用mysqldump命令备份数据库中的所有表 mysqldump ...
- mysql学习第三天笔记
连接连接是在多个表之间通过一定的连接条件,使表之间发生关联,进而能从多个表之间获取数据.在 WHERE子句中书写连接条件. 如果在多个表中出现相同的列名,则需要使用表名作为来自该表的列名的前缀. N个 ...
- MySQL开发——【联合查询、多表连接、子查询】
联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...
- MySQL学习(三)主备分库分表和恢复数据 --- 2019年2月
1.MySQL主备切换 readonly 设置对超级(super)权限是无效的,而用于同步更新的线程,就拥有超级权限. 建议在做主备数据库的时候,将备用数据库设置为只读.(反向用readonly来判断 ...
随机推荐
- Oracle彻底杀掉进程
kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...
- Visual Studio 2012 未找到与约束 ContractName问题,及printf unsafe问题
1.用VS 2012 创建c++项目失败,提示未找到与约束 ContractName .............的错误 解决办法:下载VS 2012 补丁,很小的一个补丁,不过很管用 地址:http: ...
- 用PHP向数据库中实现简单的增删改查(纯代码)
<?php $con = mysql_connect("localhost:3306","root",""); if (!$con) ...
- HDU 5025 Saving Tang Monk 【状态压缩BFS】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5025 Saving Tang Monk Time Limit: 2000/1000 MS (Java/O ...
- Android学习笔记_39_tween动画的实现(Animation和Frame)
一.Animation动画的实现及特点: 1.Tween动画,通过对 View 的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果. 动画效果的定义可以采用XML来做也 ...
- PHP中级面试经历
资源来自网络:http://www.2cto.com/kf/201304/204749.html 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) 2.echo(),p ...
- unity3D引擎:2D游戏自动瞄准算法实现
转:http://blog.csdn.net/naitu/article/details/39555373 在很多飞行射击类游戏里,都有敌人向玩家自动瞄准并开火的功能.在这里本人用unity3D引擎新 ...
- ProjectServer任务审批后自动发布
我们知道ProjectServer汇报工时的顺序是这样: 1.项目成员打开自己的时间表,选择要汇报的任务,在汇报工时栏填写实际工时. 2.汇报工时后点击保存. 3.将汇报工时的任务提交给项目经理. 4 ...
- Vue node.js商城-购物车模块
一.渲染购物车列表页面 新建src/views/Cart.vue获取cartList购物车列表数据就可以在页面中渲染出该用户的购物车列表数据 data(){ return { car ...
- TIDB3 —— 三篇文章了解 TiDB 技术内幕 - 说计算
原文地址:https://pingcap.com/blog-cn/tidb-internal-2/ 关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语 ...