我在b站学数据库 (八):多表操作练习
上一篇:我在b站学数据库 (七):多表操作练习
数据准备
--创建部门表
create table dept(deptno int primary key, #--部门编号dname varchar(14) , #--部门名称loc varchar( 13) #--部门地址
) ;
insert into dept values ( 10, ' accounting ' , 'new york ' );
insert into dept values ( 20, ' research ' , 'dallas ' ) ;
insert into dept values ( 30, 'sales ' , 'chicago ' );
insert into dept values (40, ' operations ' , ' boston ' );--创建员工表
create table emp(empno int primary key, --员工编号ename varchar( 10),-- 员工姓名job varchar(9),-- 员工工作mgr int, --员工直属领导编号hiredate date, -- 入职时间sal double, --工资comm double,--奖金deptno int -- 对应dept表的外键
);
--添加部门和员工之间的主外键关系
alter table emp add constraint foreign key emp(deptno) references dept (deptno) ;
insert into emp values(7369, ' smith ' , ' clerk ',7902,'1980-12-17',800,null,20)
insert into emp values(7499, 'allen' , ' salesman',7698,'1981-02-20',1600,300,30);
insert into emp values(7521, ' ward' , ' salesman' ,7698,'1981-02-22',1250,500,30) ;
insert into emp values(7566,' jones ' , ' manager',7839,'1981-04-02',2975,null,20);
insert into emp values(7654, ' martin' , ' salesman ' ,7698,'1981-09-28',1250,1400,30);
insert into emp values(7698, 'blake ' , 'manager',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'clark ' , ' manager' ,7839,'1981-06-09',2450,null,10);
insert into emp values(7788, ' scott' , 'analyst',7566,'1987-07-03' ,3000,null,20);
insert into emp values(7839, 'king ' , ' president' ,null, '1981-11-17',5000, null,10);
insert into emp values(7844, 'turner' , ' salesman',7698,'1981-09-08',1500,0,30);
insert into emp values(7876, ' adams ' , ' clerk ' ,7788,'1987-07-13',1100,null,20);
insert into emp values(7900,' james ' , ' clerk ',7698,'1981-12-03',950,null,30);
insert into emp values(7902, ' ford' , ' analyst',7566,'1981-12-03',3000,null,20);
Iinsert into emp values(7934,'miller' , ' clerk ',7782,'1981-01-23',1300,null,10);--创建工资等级表
create table salgrade(grade int, --等级losal double, --最低工资hisal double --最高工资
);
insert into salgrade values ( 1,700,1200 ) ;
insert into salgrade values (2,1201,1400) ;
insert into salgrade values ( 3,1401,2000) ;
insert into salgrade values (4,2001,3000) ;
insert into salgrade values (5,3001,9999);
练习:
1、返回拥有员工的部门名、部门号。
select distinct d.name,d.deptno from dept d join emp e on d.deptno = e.deptno;
2、工资水平多于Smith的员工信息
select * from emp where sal > (select sal from emp where ename = 'smiith');
3、返回员工和所属经理的姓名。
select a.ename,b.ename from emp a,emp b where a.mgr = b.empno;
或者
select a.ename,b.ename from emp a join emp b on a.mgr = b.empno;
4、返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名。
select a.ename,a.hiredate,b.ename,b.hiredate from emp a join emp b on a.mgr = b.empno and a.hiredate < b.hiredate;
5、返回员工姓名及其所在的部门名称。
select a.ename,b.dname from emp a join dept b on a.deptno = b.deptno;
6、返回从事clerk工作的员工姓名和所在部门名称。
select a.ename,b.ename,a.job from emp a join dept b on a.deptno = b.deptno and job = 'clerk';
7、返回部门号及其本部门的最低工资。
select deptno,min(sal) from emp group by deptno;
8、返回销售部(sales)所有员工的姓名。
select * from dept a join emp b on a.deptno = b.deptno and a.dname = 'salas';
9、返回工资水平多于平均工资的员工。
select * from emp where sal > (select avg(sal) from emp);
10、返回与scott从事相同工作的员工。
select * from emp where job = (select job from emp where ename = 'scott') and ename != 'scott';
11、返回工资高于30部门所有员工工资水平的员工信息。
select * from emp where sal > all(select sal from emp where deptno = 30);
12、返回员工工作及其从事此工作的最低工资。
select job,min(sal) from emp group by job;
13、计算出员工的年薪,并且以年薪排序。
select *ename,(sal * 12 + ifnull(comm,0)) as year_sal from emp order by year_sal desc;
14、返回工资处于第四级别的员工的姓名。
select * from emp where sal between (select losal from salgrade where grade = 4) and (select hisal from salgrade where grade = 4);
15、返回工资为二等级的职员名字、部门所在地
select * from dept a join emp b on a.deptno = b.deptno join salgrade c on grade = 2 and b.sal >= c.losal and b.sal <= c.hisal;
或者
select *
from dept a,emp b,salgrade c
where a.deptno = b.deptno and grade = 2 and b.sal >= c.losal and b.sal <= c.hisal;
下一篇:我在b站学数据库 (九):函数
我在b站学数据库 (八):多表操作练习相关推荐
- 我在b站学数据库 (七):多表操作
上一篇:我在b站学数据库 (六):DQL中的正则表达式 一.多表关系 可以概括为:一对一.一对多/多对一关系,多对多 1.一对一关系 例:一张身份证只能对应一个人 注意: (1)在任一表中添加唯一外键 ...
- 从零开始学 MySQL —数据库和数据表操作
前言 今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作.(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~) 1.目录 数据库操作:删除数 ...
- 第69节:Java中数据库的多表操作
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...
- Java中数据库的多表操作
前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己. 感 ...
- java mysql单库多表_第69节:Java中数据库的多表操作
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...
- 数据库 MySQL 之 表操作、存储引擎
数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名( 字段名1 ...
- CDA数据分析师 - SQL数据库基础 数据类型表操作语句
SQL 基础概念 [领会] 关系型数据库基本概念 表的基本概念(字段.记录) 表的约束条件(主键.外键.非空.唯一.自增.默认值) 实体关系图(E-R 图) ANSI-SQL 以及不同的数据库实现的关 ...
- SQL2K数据库开发八之表操作创建主键
1.使用Transact-SQL语句在表中创建主键时,可以在创建表的语句中定义列时使用如下语法: 2.在查询分析器中输入如下的语句,可以创建一个表Suppliers,该表中的SupplierID列被定 ...
- django系列5.2--ORM数据库的单表操作
单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import modelsdef add_book(request):'''添加表记录:para ...
最新文章
- Gym - 101986F Pizza Delivery(最短路+DAG必经边)
- python处理xml文件_Python解析并修改XML文件
- WIN7下搭建FTP
- Kotlin静态方法定义和调用
- 2021考研c语言编程题,2021c语言编程例题及答案.docx
- 使用LBP+SVM,训练识别给定的测试图像
- python获取类的类属性_Python中如何获取类属性的列表
- 项目交接文档_项目管理反思
- 电商指标详细介绍和推荐系统常用评估指标
- easyui前端实现多选框_在实际案例中学习前端开发(第二期)
- 世界上最畅销的JSON和XML编辑器-Altova XMLSpy 2021版发布,升级版JSON Grid View归来!
- 科赫雪花java_科赫雪花的Java递归实现
- NAS 层架构_01
- windows资源管理器经常出现无响应 window语言栏不见了
- WebSocket 是什么原理?为什么可以实现持久连接?
- 简述计算机主板的主要品牌,(品牌管理)计算机主板品牌介绍(9页)-原创力文档...
- gdiplus图像库的使用
- android开发分辨率,安卓APP设计规范之1080*1920设计稿对应开发尺寸
- Vue上传图片图片,img标签显示图片
- SQL全方位攻略:之数据库历史、数据库基本概念和相关术语,以及常见的数据库类型介绍
热门文章
- 降低 Spark 计算成本 50.18 %,使用 Kyligence 湖仓引擎构建云原生大数据底座,为计算提速 2x
- 撩课小程序(教育类)实战存档(小程序 + 云开发)
- 一加6 Android11 氢OS 降级到Android P,安装氧OS包超简单流程
- 从头认识多线程-4.1 对象的发布(Publish)、逸出(Escape)以及逸出的解决方案
- 九齐单片机NY8B062E的ADC零点校准程序记录
- 期货突破法进场是等突破K走完再进场还是突破瞬间就进场?
- E22 SX1268 LoRa模块传输测试(定点模式)发送接收串口消息 windows与linux环境下C语言代码
- 51单片机汇编学习11——扩展原理与接口技术
- 求100米赛跑运动员的成绩
- python库中的ssl.py