⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 31道练习题.sql

📁 你可以实现中最基本最常用的查询,删除功能,帮你更好的学习数据库.
💻 SQL
字号:
--1.创建一个查询显示编号为7566的雇员的姓名和部门编号。
select ename,deptno from emp
where empno='7566'

--2.显示在10号和30号部门工作的雇员的姓名及其部门编号,并以字母顺序排列。
select ename,deptno from emp
where deptno in (10,30)
order by ename 

--3.显示能挣得奖金的雇员的姓名、工资、奖金,并以工资和奖金降序排列。
select ename,sal,comm from emp
where comm is not null
order by sal desc,comm desc

--4.显示姓名中第三个字母为A的雇员的姓名。
select ename from emp
where ename like '__A%' 

--5.显示工作为clerk或analyst并且工资不等于1000、3000、5000的雇员的姓名、工作及工资。
select ename,job,sal from emp
where (job='CLERK' or job='ANALYST') and sal not in (1000,3000,5000)

--6.求半径2米,高3米的圆柱体体积。
select v=2*2*PI()*3

--7.求字符串'abcdefg'的长度。
select len('abcdefg') 长度

--8.显示emp表中所有雇员姓名的开头两个字母,大写显示。
1)、select ename,upper(left(ename,2)) from emp
2)、select ename,upper(substring(ename,1,2)) from emp

--9.取字符串'abcdefg'的第2个到第5个字母。
select substring('abcdefg',2,4)

--10.计算2001年9月11日到今天已经多少天了。
select datediff(day,'2001-9-11',getdate())

--11.显示雇员的姓名、雇用日期,以及到已雇佣年份。
select ename,hiredate,datediff(year,hiredate,getdate()) '已雇佣年份'from emp

--14.编写一个查询显示从事同一工作的人数。
select job,count(*) from emp
group by job

--15.编写一个查询显示雇员最高工资和最低工资的差值(DIFFERENCE)。
select max(sal) 最高工资,min(sal) 最低工资,max(sal)-min(sal) as DIFFERENCE from emp

--16.创建查询显示所有雇员的数量以及分别在1980、1981、1982、1983年加入公司的雇员数量,
--设置恰当列标题。
select count(*),
sum(case when year(hiredate)='1980' then 1 else 0 end ) '1980年',
sum(case when year(hiredate)='1981' then 1 else 0 end ) '1981年',
sum(case when year(hiredate)='1982' then 1 else 0 end ) '1982年',
sum(case when year(hiredate)='1983' then 1 else 0 end ) '1983年'
from emp

--17.创建一查询,按工作进行分组,求出各组内分别在10、30部门工作的雇员的总人数,
--以及各组的工资合计。

--18.按部门编号及工作台进行排序。设置恰当的列标题。
--19.编写一个查询显示每个雇员的姓名、部门编号及部门名称。
select e.ename,e.deptno,d.dname from emp e join dept d on(e.deptno=d.deptno)
select e.ename,e.deptno,d.dname from emp e, dept d where e.deptno=d.deptno

--20.显示30号部门的雇员所从事的工作名称,并显示30部门的所在地。
select  d.deptno,e.job,d.loc from emp e join dept d on(e.deptno=d.deptno and d.deptno=30)
select  e.deptno,e.job,d.loc from emp e,dept d where e.deptno=d.deptno and d.deptno=30
 
--21.编写一个显示在DALLAS工作的雇员的姓名、工作、部门编号及部门名称。
select  e.ename,e.job,e.deptno,d.dname from emp e,dept d
where e.deptno=d.deptno and d.loc='DALLAS'
select  e.ename,e.job,e.deptno,d.dname from emp e join dept d on(e.deptno=d.deptno and d.loc='DALLAS')

--22.编写一个查询显示能获得加奖金的雇员的姓名、部门名称、部门所在地。
select e.ename,d.dname,d.loc,e.comm from emp e,dept d
where comm is not null and e.deptno=d.deptno

--23.创建一个查询显示雇员的姓名、部门编号以及与当前雇员在同一部门工作的同事的姓名为
--每个输出列设置合适的列标题。
select e1.ename,e1.deptno,e2.ename
from emp e1,emp e2
where e1.deptno=e2.deptno and e1.ename<>e2.ename

--24.创建一个查询显示雇员的姓名、工作、部门名称、工资以及工资等级。
select e.ename,e.job,d.dname,e.sal,s.grade 
from emp e,dept d,salgrade s
where e.sal between losal and hisal and e.deptno=d.deptno

--25.显示比其上级管理员更早进入公司的雇员的姓名(Employee)、受雇日期(Emp Hiredate)以及其上级管理员
--的姓名(Manager)及受雇日期(Mgr Hiredate)。
select e1.ename Employee,e1.hiredate,e2.ename Manager,e2.hiredate
from emp e1,emp e2
where e1.mgr=e2.empno and e1.hiredate< e2.hiredate

--26.编写一查询,显示与Blake在同一部门工作的雇员的姓名和受雇日期,但是Blake不包含在结果内。
select ename,hiredate from emp
where deptno =(select deptno from emp where ename='BLAKE' ) and ename<>'BLAKE'

--27.创建一查询,显示工资大于平均工资水平的雇员的编号及姓名,输出结果按工资降序排列。
select deptno,ename,sal from emp
where sal>(select avg(sal) from emp)
order by sal desc

--28.显示位置在Dallas的部门内的雇员的姓名、编号及工作。
select ename,deptno,job
from emp
where deptno=(select deptno from dept where loc='DALLAS')

--29.显示被King直接管理的雇员的姓名及其工资。
select ename,sal from emp
where mgr=(select empno from emp where ename='KING')

--30.显示在Sales部门工作的雇员的部门编号、姓名及工作。
select deptno,ename,job
from emp
where deptno=(select deptno from dept where dname='SALES')

--31.编写一查询,显示能获得奖金的雇员的编号和工资同时匹配的雇员的编号和工资。

--32.显示与工作在Dallas的雇员的工资及奖金同时匹配的雇员的姓名、部门名称及工资。

--33.创建一查询,显示能获得与Scott一样工资和奖金的其他雇员的姓名、受雇日期及工资。
select ename,hiredate,sal
from emp
where sal=(select sal from emp where ename='SCOTT')
and isnull(comm,0)=(select isnull(comm,0) from emp where ename='SCOTT') 
and ename<>'SCOTT'

select ename,hiredate,sal
from emp
where sal=(select sal from emp where ename='SCOTT')
and isnull(comm,-1)=(select isnull(comm,-1) from emp where ename='SCOTT') and ename<>'SCOTT'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -