MySQL练习(含答案)_你对我笑i的博客-程序员秘密

技术标签: MySQL练习(含答案)  mysql  数据库  

原文地址:https://mp.weixin.qq.com/s/zwqqXD0RlGWlso9_s8aMOg

表结构

DROP DATABASE IF EXISTS test1;
CREATE DATABASE test1;
USE test1;

##部门表
#DROP IF EXISTS TABLE DEPT;
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');
 
##员工表  
#DROP IF EXISTS TABLE EMP;
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);
INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1981-01-23',1300,NULL,10);

#工资等级表
#DROP IF EXISTS TABLE SALGRADE;
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. 查找部门30中员工的详细信息。

2.找出从事clerk工作的员工的编号、姓名、部门号。

 

3. 检索出奖金多于基本工资的员工信息。

 

4.检索出奖金多于基本工资60%的员工信息。

 

5.找出10部门的经理、20部门的职员的员工信息。

6.找出10部门的经理、20部门的职员或者既不是经理也不是职员但是工资高于2000元的员工信息。

 

7.找出获得奖金的员工的工作。

8.找出奖金少于100或者没有获得奖金的员工的信息。

9.找出姓名以A、B、S开始的员工信息。

10.找到名字长度为6个字符的员工信息。

11.名字中不包含R字符的员工信息。

12.返回员工的详细信息并按姓名排序。

13.返回员工的信息并按工作降序工资升序排列。

14.计算员工的日薪(按30天)。

15. 找出姓名中包含A的员工信息。

 

多表查询题目

  1. 返回拥有员工的部门名、部门号。

2.工资水平多于smith的员工信息。

 3.返回员工和所属经理的姓名。

or

(没有经理是否显示)

 4.返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名     

   

5.       返回员工姓名及其所在的部门名称。

6. 返回从事clerk工作的员工姓名和所在部门名称。 

  

7. 返回部门号及其本部门的最低工资。

8. 返回销售部(sales)所有员工的姓名。

9.返回工资水平多于平均工资的员工。

10. 返回与SCOTT从事相同工作的员工。

 如果不包含自己

11.返回与30部门员工工资水平相同的员工姓名与工资。   

12.返回工资高于30部门所有员工工资水平的员工信息。

13.返回部门号、部门名、部门所在位置及其每个部门的员工总数。   

14. 返回员工的姓名、所在部门名及其工资。

15.返回员工的详细信息。(包括部门名)

16.返回员工工作及其从事此工作的最低工资。 

17.计算出员工的年薪,并且以年薪排序。  

18.返回工资处于第四级别的员工的姓名。

19.返回工资为二等级的职员名字、部门所在地、和二等级的最低工资和最高工资  

20.工资等级多于smith的员工信息。

 

单表查询答案

#1、查找部门30中员工的详细信息。
select * from emp where deptno = 30;

#2、找出从事clerk工作的员工的编号、姓名、部门号。
select empno,ename,deptno from emp where job = 'clerk';

#3、检索出奖金多于基本工资的员工信息。
select * from emp where comm > sal;

#4、检索出奖金多于基本工资60%的员工信息。
select * from emp where comm > sal * 0.6;

#5、找出10部门的经理、20部门的职员 的员工信息。
select * from emp where deptno = 10 and job='MANAGER' or deptno = 20 and job = 'CLERK';

#6、找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。
select * from emp 
 where deptno = 10 and job='MANAGER' 
    or deptno = 20 and job = 'CLERK'
    or job!='MANAGER' and job != 'CLERK' and sal > 2000 ;
## job not in ('MANAGER','CLERK')

#7、找出获得奖金的员工的工作。
select * from emp where comm > 0;

#8、找出奖金少于100或者没有获得奖金的员工的信息。
select * from emp where comm < 100 or comm is null;

#9、找出姓名以A、B、S开始的员工信息。
select * from emp where ename like 'A%' or ename like 'B%' or ename like 'S%';

#10、找到名字长度为6个字符的员工信息。
select * from emp where length(ename) = 6;
#select * from emp where ename like '______';

#11、名字中不包含R字符的员工信息。
select * from emp where ename not like '%R%';

#12、返回员工的详细信息并按姓名排序。
select * from emp order by ename asc;

#13、返回员工的信息并按工作降序工资升序排列。
select * from emp order by job desc , sal asc;

#14、计算员工的日薪(按30天)。
select ename,sal/30 as '日薪' from emp;
select ename,truncate(sal/30,2) '日薪' from emp;

#15、找出姓名中包含A的员工信息。
select * from emp where ename like '%A%';

多表查询答案

#1、返回拥有员工的部门名、部门号。
select distinct d.dname, d.deptno from dept d,emp e where d.deptno = e.deptno;

#2、工资水平多于smith的员工信息。
select *from emp where sal > (select sal from emp where ename = 'smith');
 
#3、返回员工和所属经理的姓名。
select e.ename,m.ename from emp e
 left outer join emp m on e.mgr = m.empno;
select e.ename ,(select m.ename from emp m where m.empno  = e.mgr) ename from emp e;
select e.ename , m.ename from emp e , emp m where e.mgr = m.empno;
  
#4、返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名。
select e.ename,m.ename from emp e
inner join emp m on e.mgr = m.empno
where e.hiredate < m.hiredate;

select e.ename,m.ename from emp e,emp m
where e.mgr=m.empno
and e.hiredate < m.hiredate;

#5、返回员工姓名及其所在的部门名称。
select e.ename,d.dname from emp e , dept d where e.deptno = d.deptno;

#6、返回从事clerk工作的员工姓名和所在部门名称。
select e.ename,d.dname 
from emp e , dept d 
where e.deptno = d.deptno and e.job = 'CLERK';

#7、返回部门号及其本部门的最低工资。
select deptno ,min(sal) sal
from emp 
group by deptno

#8、返回销售部(sales)所有员工的姓名。
select e.ename from emp e,dept d
where e.deptno = d.deptno and d.dname = 'sales';

select ename from emp where deptno=(select deptno from dept where dname='sales');

#9、返回工资水平多于平均工资的员工。
select * from emp e
where e.sal > (select avg(sal) from emp);


#10、返回与SCOTT从事相同工作的员工。
select * from emp
where job = (select job from emp where ename = 'scott');

select e1.* from emp e1 , (select empno,job from emp where ename = 'scott') e2
where e1.job = e2.job and e1.empno != e2.empno;


#11、返回与30部门员工工资水平相同的员工姓名与工资。
select ename,sal from emp
where sal in (select sal from emp where deptno = 30);

#12、返回工资高于30部门所有员工工资水平的员工信息。
select * from emp
where sal > all(select sal from emp where deptno = 30);

select * from emp
where sal > (select max(sal) from emp where deptno = 30);

#13、返回部门号、部门名、部门所在位置及其每个部门的员工总数。  
select dept.deptno,dept.dname,dept.loc,count(emp.deptno) number from dept,emp
where dept.deptno = emp.deptno
group by emp.deptno;

#14、返回员工的姓名、所在部门名及其工资。
select ename,dname,sal from emp ,dept
where emp.deptno = dept.deptno;

#15、返回员工的详细信息。(包括部门名)
select e.* , d.dname from emp e, dept d
where e.deptno = d.deptno;

#16、返回员工工作及其从事此工作的最低工资。
select job , min(sal) sal from emp
group by job 

#17、计算出员工的年薪,并且以年薪排序。
select ename, sal * 12 as ySalary from emp order by ySalary;

#18、返回工资处于第四级别的员工的姓名。
select ename,sal from emp e  ,salgrade s
where e.sal >= s.losal and e.sal <= s.hisal
  and s.grade = 4;

select emp.ename,emp.sal from 
 emp ,(select losal,hisal from salgrade where grade=4) g
 where  emp.sal between g.losal and g.hisal;

#19、返回工资为二等级的职员名字、部门所在地、和二等级的最低工资和最高工资
select ename ,dname ,sal ,losal,hisal from emp,dept,salgrade
where emp.deptno = dept.deptno and grade = 2
   and sal >= losal and sal < hisal;
 

#20.工资等级多于smith的员工信息。
select grade from salgrade s ,emp e
where s.losal < e.sal and s.hisal > e.sal and e.ename = 'smith';

select e.* from emp e, salgrade s 
where s.hisal < e.sal and s.grade = 1;

select e.* from emp e, salgrade s 
where s.hisal < e.sal and s.grade = (select grade from salgrade s ,emp e
where s.losal < e.sal and s.hisal > e.sal and e.ename = 'smith');

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41110459/article/details/80835338

智能推荐

python字典取值_python字典,python字典取值_weixin_39638086的博客-程序员秘密

字典(Dictionary)字典也是Python语言中经常使用的一种数据类型。跟列表类似,字典是另外一种可存储任意类型的数据,并且字典储存的数据也是可以修改的。不同于列表的是,字典每个基本元素都包括两个部分:键(key)和键对应的值(value)。键和值之间用冒号(:)分割,每对元素之间用逗号(,)分割,整个字典的数据在大括号{}中,格式如下所示:请点击输入图片描述d={"key1":1,"key...

APScheduler: LookupError: No trigger by the name &quot;interval&quot; was found_adr5970的博客-程序员秘密

APScheduler: LookupError: No trigger by the name “interval” was found环境python: 2.6.6 PyInstaller: 2.1 APScheduler: 開始是3.0.1,后来是3.0.5问题一问题描写叙述曾经在别的机器上开发的python程序(python...

matlab绘制 椭球体,如何用绘图法绘制椭球体_其实我王尼玛江西的博客-程序员秘密

好吧,比我想象的要容易。有一个alphahull选项,它要求自动计算相应的三角剖分。在from plotly.offline import iplot, init_notebook_modefrom plotly.graph_objs import Mesh3dfrom numpy import sin, cos, pi# some math: generate points on the sur...

Python3_基础学习_MR.ILen的博客-程序员秘密

1.数字(Number)类型python中数字有四种类型:整数、布尔型、浮点数和复数。int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。bool (布尔), 如 True。float (浮点数), 如 1.23、3E-2complex (复数), 如 1 + 2j、 1.1 + 2.2j2.字符串(String)str...

Linq简单几种写法_linq写法_糖莱的博客-程序员秘密

我刚开始学习linq不久,所以知道的也不是很多,所以我把我知道的给大家分析一下。给大家看一下我学习的案例,Linq的写法是怎么样的,其实它有固定的写法。据我所知,From开头和select结尾是一定要这样写的,中间可以写的也有挺多的。其中where,orderby排序这些语句也可以写。再来就是上次讲的我所知道的linq单表查询有三种写法:1、select 自定义的表,一般为单表查询使用...

CentOS 7.x 安装配置_一去丶二三里的博客-程序员秘密

简述VMware可以创建多个虚拟机,每个虚拟机上都可以安装各种类型的操作系统。安装方法也有很多种。下面,主要以ISO镜像安装为例,介绍CentOS 7.x的安装过程及相关的参数设置。简述创建虚拟机安装CentOS重启更多参考创建虚拟机打开VMware,单击右侧的【创建新虚拟机】选项,开始创建虚拟机。选择【稍后安装操作系统】,单击【下一步】按钮。选择要在虚拟机上安装的【客户机操作系统】及对应的

随便推点

微服务Spring Cloud入门介绍(一)_微服务入门介绍 springcloud 林可斌_m飞向远方的博客-程序员秘密

学习目标 了解系统架构的演变 了解RPC与Http的区别 知道什么是SpringCloud 独立搭建Eureka注册中心 独立配置Robbin负载均衡 1.系统架构演变随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的Service Mesh。我们到底是该乘坐微服务的船只驶向远方,还是

面试题之Bug的生命周期_程序员馨馨的博客-程序员秘密

今天来分享一个基础面试题:Bug的生命周期,虽然基础,但是面试被问到的概率很高。Bug的生命周期,也就是一个Bug被发现到被关闭的过程,在整个生命周期中,不同的阶段对应不同的缺陷状态。大家可以参考如下的Bug生命周期图,主要有6个步骤:1、测试同学提交Bug2、测试同学指派Bug3、开发同学确认Bug4、开发同学解决Bug5、测试同学回归验证Bug6、验证通过则关闭Bug,不通过重新激活Bug在Bug的整个生命周期中,对应的缺陷状态为:新建--&gt;激活--

Cplex安装与环境配置步骤(C++与Python)_YLL的LLY的博客-程序员秘密

一、Cplex简介Cplex是IBM公司的一个优化问题求解器。主要用于求解线性规划,混合整数规划、二次规划等问题。Cplex求解速度快,使用简单易上手。除了自带的语言外,cplex可以利用C++、Java、Python等语言使用。对于运筹优化方向的问题求解事半功倍。二、Cplex下载与安装Cplex可以从官方网站利用电子邮件注册下载,网址如下:https://www.ibm.com/analytics/cplex-optimizer最好是用学校的邮箱去申请,免费版的可以随便下载,但是变量个数有限

机器学习与深度学习常见面试题_机器学习与深度学习试题_elon368的博客-程序员秘密

原文 :http://www.sykv.com/cat/depth/16164.html一年一度的校园招聘已经开始了,为了帮助参加校园招聘、社招的同学更好的准备面试,SIGAI 整理出了一些常见的机器学习、深度学习面试题。理解它们,对你通过技术面试非常有帮助,当然,我们不能只限于会做这些题目,最终的目标是真正理解机器学习与深度学习的原理、应用。可思数据-AI,人工智能,深度学习,机器学习,神...

三层架构结合外观模式实现登录_三层架构中的外观模式_「已注销」的博客-程序员秘密

登录功能在设计的时候利用三层架构来分析整个业务实现,同时在UI层和BLL层之间增加一个业务外观层。这样子让两层明显的隔离,表示层的任何变化,比如是用客户端软件还是浏览器方式表示都不会影响到业务与数据的设计。外观模式:为子系统中一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。这个模式中的高层接口是:Façade类(外观类)需要了解所有子系统的方法和属

推荐文章

热门文章

相关标签