上一篇:我在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站学数据库 (八):多表操作练习相关推荐

  1. 我在b站学数据库 (七):多表操作

    上一篇:我在b站学数据库 (六):DQL中的正则表达式 一.多表关系 可以概括为:一对一.一对多/多对一关系,多对多 1.一对一关系 例:一张身份证只能对应一个人 注意: (1)在任一表中添加唯一外键 ...

  2. 从零开始学 MySQL —数据库和数据表操作

    ​前言 今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作.(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~) 1.目录 数据库操作:删除数 ...

  3. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  4. Java中数据库的多表操作

    前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己. 感 ...

  5. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  6. 数据库 MySQL 之 表操作、存储引擎

    数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名(     字段名1 ...

  7. CDA数据分析师 - SQL数据库基础 数据类型表操作语句

    SQL 基础概念 [领会] 关系型数据库基本概念 表的基本概念(字段.记录) 表的约束条件(主键.外键.非空.唯一.自增.默认值) 实体关系图(E-R 图) ANSI-SQL 以及不同的数据库实现的关 ...

  8. SQL2K数据库开发八之表操作创建主键

    1.使用Transact-SQL语句在表中创建主键时,可以在创建表的语句中定义列时使用如下语法: 2.在查询分析器中输入如下的语句,可以创建一个表Suppliers,该表中的SupplierID列被定 ...

  9. django系列5.2--ORM数据库的单表操作

    单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import modelsdef add_book(request):'''添加表记录:para ...

最新文章

  1. Gym - 101986F Pizza Delivery(最短路+DAG必经边)
  2. python处理xml文件_Python解析并修改XML文件
  3. WIN7下搭建FTP
  4. Kotlin静态方法定义和调用
  5. 2021考研c语言编程题,2021c语言编程例题及答案.docx
  6. 使用LBP+SVM,训练识别给定的测试图像
  7. python获取类的类属性_Python中如何获取类属性的列表
  8. 项目交接文档_项目管理反思
  9. 电商指标详细介绍和推荐系统常用评估指标
  10. easyui前端实现多选框_在实际案例中学习前端开发(第二期)
  11. 世界上最畅销的JSON和XML编辑器-Altova XMLSpy 2021版发布,升级版JSON Grid View归来!
  12. 科赫雪花java_科赫雪花的Java递归实现
  13. NAS 层架构_01
  14. windows资源管理器经常出现无响应 window语言栏不见了
  15. WebSocket 是什么原理?为什么可以实现持久连接?
  16. 简述计算机主板的主要品牌,(品牌管理)计算机主板品牌介绍(9页)-原创力文档...
  17. gdiplus图像库的使用
  18. android开发分辨率,安卓APP设计规范之1080*1920设计稿对应开发尺寸
  19. Vue上传图片图片,img标签显示图片
  20. SQL全方位攻略:之数据库历史、数据库基本概念和相关术语,以及常见的数据库类型介绍

热门文章

  1. 降低 Spark 计算成本 50.18 %,使用 Kyligence 湖仓引擎构建云原生大数据底座,为计算提速 2x
  2. 撩课小程序(教育类)实战存档(小程序 + 云开发)
  3. 一加6 Android11 氢OS 降级到Android P,安装氧OS包超简单流程
  4. 从头认识多线程-4.1 对象的发布(Publish)、逸出(Escape)以及逸出的解决方案
  5. 九齐单片机NY8B062E的ADC零点校准程序记录
  6. 期货突破法进场是等突破K走完再进场还是突破瞬间就进场?
  7. E22 SX1268 LoRa模块传输测试(定点模式)发送接收串口消息 windows与linux环境下C语言代码
  8. 51单片机汇编学习11——扩展原理与接口技术
  9. 求100米赛跑运动员的成绩
  10. python库中的ssl.py