sql查询练习题含答案

合集下载

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案在学习SQL(Structured Query Language)时,练习题是非常重要的一部分。

通过练习题,我们可以巩固和应用所学的SQL知识,提高自己的实践能力。

本文将介绍几个常见的SQL练习题,并提供相应的答案,希望对大家的学习有所帮助。

1. 查询员工表中所有员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表;```2. 查询员工表中薪水大于5000的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 > 5000;```3. 查询员工表中职位为经理的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 职位 = '经理';```4. 查询员工表中薪水在4000到6000之间的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 BETWEEN 4000 AND 6000;```5. 查询员工表中薪水最高的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 = (SELECT MAX(薪水) FROM 员工表);```6. 查询员工表中没有分配部门的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 部门 IS NULL;```7. 查询员工表中按照薪水从高到低排列的前5名员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表ORDER BY 薪水 DESCLIMIT 5;```8. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量FROM 员工表GROUP BY 部门;```9. 查询员工表中薪水排名在第3到第5位的员工的姓名和薪水。

SQL语句练习题(包含有多表查询)-答案

SQL语句练习题(包含有多表查询)-答案

SQL语句练习题1、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。

select ename,sal from emp where job='CLERK' or job='MANAGER';2、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。

select ename,deptno,sal,job from emp where deptno between 10 and 30;3、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。

select ename,sal,job from emp where ename like 'J%';4、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。

select ename,job,sal from emp where sal<=2000 order by sal desc;5、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。

select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=’CLERK’;6、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。

select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000;7、查询所有雇员的姓名、SAL与COMM之和。

select ename,sal+nvl(comm,0) “sal-and-comm” from emp;8、查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’);9、查询列出来公司就职时间超过24年的员工名单select ename from emp where hiredate<=add_months(sysdate,-288);10、查询于81年来公司所有员工的总收入(SAL和COMM)select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,’yyyy’)=’1981’;11、查询显示每个雇员加入公司的准确时间,按××××年××月××日时分秒显示。

sql查询练习题含答案

sql查询练习题含答案

--(1)查询20号部门的所有员工信息。

select * from emp e where e.deptno=20;--(2)查询奖金(COMM)高于工资(SAL)的员工信息。

select * from emp where comm>sal;--(3)查询奖金高于工资的20%的员工信息。

select * from emp where comm>sal*0.2;--(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。

select * from emp ewhere (e.deptno=10 and e.job='MANAGER')or (e.deptno=20 and e.job='CLERK')--(5)查询所有工种不是MANAGER和CLERK,--且工资大于或等于2000的员工的详细信息。

select * from empwhere job not in('MANAGER','CLERK') and sal>=2000;--(6)查询有奖金的员工的不同工种。

select * from emp where comm is not null;--(7)查询所有员工工资和奖金的和。

select (e.sal+nvl(m,0)) from emp e;--(8)查询没有奖金或奖金低于100的员工信息。

select * from emp where comm is null or comm<100;--(9)查询员工工龄大于或等于10年的员工信息。

select * from emp where (sysdate-hiredate)/365>=10;--(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。

select initcap(ename) from emp;select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;--(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,--若月份相同则按入职的年份排序。

sql查询题目及答案

sql查询题目及答案

sql查询题目及答案1、查询所有数学系学生的信息。

--select * from s where 系='数学系'2、查询李老师所教的课程号、课程名--select 课程号,课程名from c where 教师like '李%'3、查询年龄大于20岁的女同学的学号和姓名。

--select 学号,姓名from s where year(getdate())-year(出生日期)+1>20 and 性别='女'4、查询学号为‘H0301’所选修的全部课程成绩。

--select 成绩from sc where 学号= 'H0301'5、查询平均成绩都在80分以上的学生学号及平均成绩。

--select 学号,AVG(成绩) from sc group by 学号having AVG(成绩)>=806、查询至少有6人选修的课程号。

--select 课程号from sc group by 课程号having count(*)>67、查询C02号课程得最高分的学生的学号--select 学号from sc where 课程号='c02' and 成绩=(select max(成绩) from sc where 课程号='c02')8、查询学号为’J0101’的学生选修的课程号和课程名--select 课程号,课程名from c,sc where 学号='j0101' and c.课程号=sc.课程号9、‘李小波’所选修的全部课程名称。

--Select c.课程名from s,c,sc where s.学号=sc.学号and c.课程号=sc.课程号and 姓名='李小波'10、所有成绩都在70分以上的学生姓名及所在系。

--select 姓名,系from s,sc where s.学号=sc.学号group by 学号having min(成绩)>=7011、英语成绩比数学成绩好的学生--select sc2.学号from c c1,c c2,sc sc1,sc sc2 where c1.课程名='英语'--and c2.课程名='数学' and sc1.成绩>sc2.成绩and sc1.学号=sc2.学号--and c1.课程号=sc1.课程号and c2.课程号=sc2.课程号12、至少选修了两门课及以上的学生的姓名和性别select 姓名,性别from s,sc--where s.学号=sc.学号group by 学号having count(*)>=213、选修了李老师所讲课程的学生人数--select count(*) from C,sc where 教师like '李%' and c.课程号=sc.课程号group by sc.课程号14、‘操作系统’课程得最高分的学生的姓名、性别、所在系--select 姓名,性别,系from s,sc--where s.学号=sc.学号and 成绩=--(select max(成绩) from c,sc where sc.课程号=c.课程号and 课程名='操作系统')15、显示所有课程的选修情况。

sql查询练习题含答案

sql查询练习题含答案

--(1)查询20号部门的所有员工信息。

select * from emp e where =20;--(2)查询奖金(COMM)高于工资(SAL)的员工信息。

select * from emp where comm>sal;--(3)查询奖金高于工资的20%的员工信息。

select * from emp where comm>sal*;--(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。

select * from emp ewhere =10 and ='MANAGER')or =20 and ='CLERK')--(5)查询所有工种不是MANAGER和CLERK,--且工资大于或等于2000的员工的详细信息。

select * from empwhere job not in('MANAGER','CLERK') and sal>=2000;--(6)查询有奖金的员工的不同工种。

select * from emp where comm is not null;--(7)查询所有员工工资和奖金的和。

select +nvl,0)) from emp e;--(8)查询没有奖金或奖金低于100的员工信息。

select * from emp where comm is null or comm<100;--(9)查询员工工龄大于或等于10年的员工信息。

select * from emp where (sysdate-hiredate)/365>=10;--(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。

select initcap(ename) from emp;select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;--(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,--若月份相同则按入职的年份排序。

SQL练习题及答案

SQL练习题及答案

选择题(1)如果要查询所藏图书中,各个出版社图书的最高单价、平均单价和册数,所用的SQL 语句是A)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*);FROM 图书;GROUP BY 出版单位B)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*);FROM 图书;HAVING 出版单位C)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*);FROM 图书GROUP BY 出版单位D)SELECT 出版单位,MIN(单价), AVG(单价),COUNT(*);FROM 图书;HAVING 出版单位(2)为"运动员"表增加一个字段"得分"的SQL语句是A)CHANGE TABLE运动员ADD得分IB)ALTER DATA运动员ADD得分IC)ALTER TABLE运动员ADD得分ID)CHANGE TABLE运动员IN得分I(3)利用SQL数据更新功能,自动计算更新每个"设备总金额"字段的字段值,该字段值等于"单价*设备数量"的值,正确命令为A)UPDATE 设备表SET 设备总金额=单价*设备数量B)UPDATE 设备表FOR 设备总金额=单价*设备数量C)UPDATE 设备表WITH 设备总金额=单价*设备数量D)UPDATE 设备表WHERE 设备总金额=单价*设备数量(4)查找教师表中教师最高的工资值,下列SQL语句正确的是A)SELECT MAX(工资) FROM 教师表B)SELECT MIN(工资) FROM 教师表C)SELECT AVG(工资) FROM 教师表D)SELECT SUM(工资) FROM 教师表(5)在当前目录下有数据表文件student.dbf,执行如下SQL语句后SELECT * FORM student INTO DBF student ORDER BY 学号/DA)生成一个按"学号"升序的表文件,将原来的student.dbf文件覆盖B)生成一个按"学号"降序的表文件,将原来的student.dbf文件覆盖C)不会生成新的排序文件,保持原数据表内容不变D)系统提示出错信息(6)语句"DELETE FROM 成绩表WHERE 计算机<60"的功能是A)物理删除成绩表中计算机成绩在60分以下的学生记录B)物理删除成绩表中计算机成绩在60分以上的学生记录C)逻辑删除成绩表中计算机成绩在60分以下的学生记录D)将计算机成绩低于60分的字段值删除,但保留记录中其它字段值(7)检索职工表中工资大于800元的职工号,正确的命令是A)SELECT 职工号WHERE 工资>800B)SELECT 职工号FROM 职工SET 工资>800C)SELECT 职工号FROM 职工WHERE 工资>800D)SELECT 职工号FROM 职工FOR 工资>800(8)下列选项中,不属于SQL数据定义功能的是A)SELECTB)CREATEC)ALTERD)DROP(9)有"工资"表和"职工"表,结构如下:职工.dbf:部门号C(8),职工号C(10),姓名C(8),性别C(2),出生日期D工资.dbf:职工号C(10),基本工资N(8,2),津贴N(8,2),奖金N(8,2),扣除N(8,2) 查询职工实发工资的正确命令是A)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资FROM 工资B)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资FROM 工资;WHERE 职工.职工号=工资.职工号C)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资;FROM 工资,职工WHERE职工.职工号=工资.职工号D)SELECT 姓名,(基本工资+冿贴+资金-扣除)AS实发工资;FROM 工资JOIN 职工WHERE职工.职工号=工资.职工号(10)从设备表中查询单价大于100000元的设备,并显示设备名称,正确的命令是A)SELECT 单价>100000 FROM 设备表FOR 设备名称B)SELECT 设备名称FROM 设备表FOR 单价>100000C)SELECT 单价>100000 FROM 设备表WHERE 设备名称D)SELECT 设备名称FROM 设备表WHERE 单价>100000(11)下列命令动词中,不具有数据操纵功能的SQL语句是A)DELETEB)UPDATEC)INSERTD)DROP(12)显示2005年1月1日后签订的订单,显示订单的订单号、客户名以及签订日期。

(完整版)sql练习题+答案

(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。

Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

select * from student(4)查全体学生的姓名及其出生年份。

select sname , birth from student(5)查询学校中有哪些系。

select distinct dept from student(6)查询选修了课程的学生学号。

select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。

sql查询题目及答案

数据库中有如下三个表:学生表(学号id,姓名name,性别sex,系部depart,年龄age)8个学生记录选课表(学号id,课程号cid,成绩grade) 12门课程课程表(课程号cid,课程名cname,学分Ccredit) 6门课程学生-课程模式 S-T :学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)1.从学生表中查询所有同学的所有信息select*from学生表2.从学生表中查询所有学生的信息,并分别赋予一个别名select学号as xuehao,姓名as xingming,性别as xingbie,系部as xibu,年龄as nianling from学生表3.从学生表中查询姓名是Allen的学生的信息select*from学生表where姓名='Allen'4.从学生表中查询学号在1101到1199之间的所有学生的信息select*from学生表where学号between 1101 and 11995.从学生表中查询年龄小于18和大于20的所有学生的学号和姓名select学号,姓名from学生表where年龄<18 or年龄>206.从学生表中查询计算机系年龄小于20的所有学生的信息select*from学生表where系部='computer'and年龄<207.从学生表中查询姓名以A开头的学生的信息select*from学生表where姓名LIKE'A%'8.从学生表中查询姓名的第三个字符是A的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'__A%'9.从学生表中查询姓名中包含“llen”的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'10.从学生表中查询姓名中包含“llen”且姓名只有5个字符的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'and len(姓名)=511.从学生表中查询有年龄信息的学生的学号和姓名select学号,姓名from学生表where年龄is not null12.从学生表中查询最大年龄和最小年龄select max(年龄)最大年龄,min(年龄)最小年龄from学生表13.从学生表中查询所有学生的平均年龄select avg(年龄)平均年龄from学生表14.从学生表中查询学校所有系的名字select distinct系部from学生表15.从学生表中查询学校共有多少个系select count(distinct系部)系部总和from学生表16.从选课表中查询所有学生的选课情况select distinct课程号from选课表17.从选课表中查询选修课程号为C01课程的学生的学号select学号from选课表where课程号='C01'18.从选课表中查询所有没有选C02课程的学生的学号select distinct学号from选课表where课程号!='C02'19.从选课表中查询有选修C01或C02课程的学生的学号select distinct学号from选课表where课程号='C01' or 课程号='C02'20.从选课表中查询学号为1101的学生的选课情况select课程号from选课表where学号='1101'21.从选课表中查询所有选课信息,即学号、课程号、成绩,并给成绩加8分select学号,课程号,成绩=成绩+8 from选课表22.从选课表中查询学号为1101的学生的所有选修课程成绩的总和select sum(成绩)成绩总和from选课表where学号='1101'23.从选课表中查询选修课程好为C02所有学生的成绩平均值并赋予“平均成绩24.”列名select avg(成绩)平均成绩from选课表where课程号='C02'25.从选课表中查询选修课程号C02且该门课程考试及格的学生的学号select学号from选课表where课程号='C02'and成绩>=6026.从选课表中查询所有无考试成绩的学生的学号和课程的课程号select学号,课程号from选课表where成绩is null27.从选课表中查询选修了课程号以C开头的学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'C%'28.从选课表中查询选修了课程号以C、D或E开头学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'[CDE]%'29.从选课表中查询选修了课程号中包含DB的学生的学号和课程号select学号,课程号from选课表where课程号LIKE'%DB%'30.从选课表中查询选修了课程的学生的学号select distinct学号from选课表where课程号is not null31.从选课表中查询选修了课程的学生的人数select count(distinct学号)总人数from选课表31.找出姓名以D开头的学生姓名和所有成绩select学生表.姓名,选课表.成绩from学生表join选课表on学生表.学号=选课表.学号where学生表.姓名LIKE'D%'32.查找的所有学生姓名与学号,结果按学号降序排序select 学号,姓名from学生表order BY学号DESC33.查找成绩介于80和90之间的学生姓名,结果按成绩和姓名升序排序select学生表.姓名from选课表join学生表on学生表.学号=选课表.学号where选课表.成绩between 80 and 90order BY选课表.成绩,学生表.姓名34.查找english系的所有学生姓名,结果按成绩和姓名升序排序select学生表.姓名,学生表.学号,选课表.成绩from选课表join学生表on学生表.学号=选课表.学号where学生表.系部='english'35.查找同时选修了C01及C02两门课程的学生姓名及学号select学生表.姓名,A.学号from选课表as A join选课表as B on A.学号=B.学号join学生表on学生表.学号=A.学号where A.课程号='C01'and B.课程号='C02'36.查找所有选修了课程的学生姓名及所在系别select distinct学生表.姓名,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号is not null37.查找成绩高于90分的学生姓名、学号及系别select学生表.姓名,学生表.学号,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.成绩>=9038.找出选修了C01课程的学生姓名select学生表.姓名from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号='C01'39.查询English系学生人数select count(*) English 系总人数from学生表where系部='English'40.分别查询各系的学生人数select系部,count(*)人数from学生表group by系部41.创建一个角色uus.CREATE ROLE uus;42.给uus授权SELECT,UPDATE,INSERT .GRANT SELECT,UPDATE,INSERTON StuTO uus43.增加一个登录,登录名为tp,密码为123,默认的数据库为stuEXEC sp_addlogin 'tp', '123', 'stu'44.将登录tp增加为test库的一个用户,并连接到test库。

SQL查询及答案

SQL查询及答案一、单表查询练习1、查询<学生信息表>,查询学生"张三"的全部基本信息Select *from A_studentinfowhere sname='张三'2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息Select *from A_studentinfowhere sname='张三'or sname='李四'3、查询<学生信息表>,查询姓"张"学生的基本信息Select *from A_studentinfowhere sname like '张%'4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息Select *from A_studentinfowhere sname like '%四%'5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。

select *from A_studentinfowhere sname like '李_强'6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。

Select *from A_studentinfowhere sname like '张%'or sname like '李%'7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province='北京'8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息Select *from A_studentinfowhere province in ('北京','上海','新疆','山东')9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province !='北京'10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select *from A_studentinfoorder by sex,province,class11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份select distinct province as 省份from A_studentinfo12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2021-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2021-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量from A_studentinfowhere enrollment between '1998' and '2021'。

结构化查询语言SQL习题与答案

结构化查询语⾔SQL习题与答案结构化查询语⾔SQL习题与答案 篇⼀:结构化查询语⾔SQL习题与答案 ⼀、选择题 1. 在SQL包含的功能中,最重要的功能是_______。

A) 数据查询 B) 数据操纵 C) 数据定义 D) 数据控制 2. 使⽤SQL语⾔有两种⽅式,它们是_______。

A) 菜单式和交互式B) 嵌⼊式和程序式 C) 交互式和嵌⼊式D) 命令式和解释式 3. SQL的全部功能可以⽤9个动词概括,其中动词INSERT是属于下列______功能。

A) 数据查询 B) 数据操纵 C) 数据定义 D) 数据控制 4. SQL语⾔⽀持数据库的三级模式结构,其中模式对应于______。

A) 存储⽂件 B) 视图 C) 基本表 D) 视图和基本表 5. 在创建数据表时,可以给字段规定NULL或NOT NULL值,NULL值的含义是______。

A) 0B) 空格 C) NULL D) 不确定 6. 在SQL的ALTER语句中,⽤于删除字段的⼦句是______。

A) ALTER B) DELETE C) DROP D) MODIFY 7. SQL中的INSERT语句可以⽤于______。

A) 插⼊⼀条记录 B) 插⼊⼀个字段 C) 插⼊⼀个索引 D) 插⼊⼀个表 8. 下列描述错误的是______。

A)⽤INSERT-SQL语句可以插⼊⼀条记录 B)⽤INSERT-SQL语句可以插⼊多条记录 C)使⽤INSERT-SQL语句可以插⼊记录的部分数据 D)使⽤INSERT-SQL语句插⼊记录时列名的排列顺序必须与表定义时的顺 序⼀致 9. INSERT-SQL语句中所使⽤的数据不能来⾃于______。

A) 数组 B) 变量 C) 查询 D) 索引 10. SQL中的UPDATE语句可以⽤于______。

A) 更新数据表的结构 B) 更新数据表的值 C) 更新索引D) 更新查询 11. 下列描述错误的是______。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

--(1)查询20号部门的所有员工信息。

select * from emp e where e.deptno=20;--(2)查询奖金(COMM)高于工资(SAL)的员工信息。

select * from emp where comm>sal;--(3)查询奖金高于工资的20%的员工信息。

select * from emp where comm>sal*0.2;--(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。

select * from emp ewhere (e.deptno=10 and e.job='MANAGER')or (e.deptno=20 and e.job='CLERK')--(5)查询所有工种不是MANAGER和CLERK,--且工资大于或等于2000的员工的详细信息。

select * from empwhere job not in('MANAGER','CLERK') and sal>=2000;--(6)查询有奖金的员工的不同工种。

select * from emp where comm is not null;--(7)查询所有员工工资和奖金的和。

select (e.sal+nvl(m,0)) from emp e;--(8)查询没有奖金或奖金低于100的员工信息。

select * from emp where comm is null or comm<100;--(9)查询员工工龄大于或等于10年的员工信息。

select * from emp where (sysdate-hiredate)/365>=10;--(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。

select initcap(ename) from emp;select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;--(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,--若月份相同则按入职的年份排序。

select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'MM') monthfrom emporder by month,year;--(12)查询在2月份入职的所有员工信息。

select * from emp where to_char(hiredate,'MM')='02'--(13)查询所有员工入职以来的工作期限,用“**年**月**日”的形式表示。

select e.ename,floor((sysdate-e.hiredate)/365)||'年'||floor(mod((sysdate-e.hiredate),365)/30)||'月'||floor(mod(mod((sysdate-e.hiredate),365),30))||'日'from emp e;--(14)查询从事同一种工作但不属于同一部门的员工信息。

select a.ename,a.job,a.deptno,b.ename,b.job,b.deptnofrom emp a,emp bwhere a.job=b.job and a.deptno<>b.deptno;--(15)查询各个部门的详细信息以及部门人数、部门平均工资。

select d.deptno,count(e.empno),avg(e.sal),d.dname,d.locfrom emp e ,dept dwhere e.deptno=d.deptnogroup by d.deptno,d.dname,d.loc--(16)查询10号部门员工以及领导的信息。

select * from emp where empno in(select mgr from emp where deptno=10) or deptno=10;--(17)查询工资为某个部门平均工资的员工信息。

select * from empwhere sal in(select avg(sal) from emp group by deptno);--(18)查询工资高于本部门平均工资的员工的信息。

select * from emp e1where sal >(select avg(sal) from emp e2 where e2.deptno=e1.deptno);--(19)查询工资高于本部门平均工资的员工的信息及其部门的平均工资。

select e.*,a.avgsalfrom emp e,(select deptno,avg(sal) as avgsal from emp group by deptno) awhere a.deptno=e.deptno and e.sal>a.avgsal;--(20)统计各个工种的人数与平均工资。

select count(*),e.job,avg(e.sal) from emp egroup by e.job--(21)统计每个部门中各个工种的人数与平均工资。

select deptno,job,count(empno),avg(sal) from emp egroup by e.deptno,e.job--(22)查询所有员工工资都大于1000的部门的信息。

select * from dept where deptno in(select deptno from empwhere deptno not in(select distinct deptno from emp where sal<1000));--(23)查询所有员工工资都大于1000的部门的信息及其员工信息。

select * from emp e join dept don d.deptnoin (select deptno from empwhere deptno not in(select distinct deptno from emp where sal<1000))and d.deptno=e.deptno;--(24)查询所有员工工资都在900~3000之间的部门的信息。

select * from deptwhere deptno not in(select deptno from empwhere sal not between 900 and 3000);--(25)查询所有工资都在900~3000之间的员工所在部门的员工信息。

select * from emp awhere a.deptno in(select distinct e.deptno from emp ewhere e.sal between 900 and 3000);--(26)查询每个员工的领导所在部门的信息。

select d.* from dept dwhere d.deptno in(select distinct e2.deptno from emp e1,emp e2where e1.empno=e2.mgr);--(27)查询人数最多的部门信息。

select * from deptwhere deptno in(select deptno from (select count(*) count,deptno from emp group by deptno) where count in(select max(count)from (select count(*) count ,deptno from emp group by deptno)));--(28)查询30号部门中工资排序前3名的员工信息。

select * from(select sal from emp where deptno=30 order by sal desc) ewhere rownum<4--(29)查询'JONES'员工及所有其直接、间接下属员工的信息。

select e.* from emp estart with ename='JONES'connect by prior empno=mgr;---(30)查询SCOTT员工及其直接、间接上级员工的信息。

select e.* from emp estart with ename='SCOTT'connect by prior mgr=empno;--(31)以树状结构查询所有员工与领导之间的层次关系。

select substr(sys_connect_by_path(ename,'->'),3),levelfrom empstart with mgr is nullconnect by prior empno=mgr;--(32)向emp表中插入一条记录,员工号为1357,员工名字为oracle,--工资为2050元,部门号为20,入职日期为2002年5月10日。

--(33)将各部门员工的工资修改为该员工所在部门平均工资加1000。

update emp e set sal=1000+(select avg(sal) from emp where deptno=e.deptno);--(34)查询工作等级为2级,1985年以后入职的工作地点为DALLAS的员工编号、--姓名和工资。

select e.ename,e.empno,e.sal from emp e,salgrade s,dept dwhere (e.sal between s.losal and s.hisal)and (s.grade=2)and to_char(e.hiredate,'yyyy')>1985and e.deptno=d.deptnoand d.loc='DALLAS';--35.部门平均薪水最高的部门编号select * from(select avg(sal) avgsal,deptnofrom emp group by deptno order by avgsal desc)where rownum=1;select deptno,avg(sal) from emp group by deptno having avg(sal)=(select max(avg(sal)) avgsalfrom emp group by deptno)--36,部门平均薪水最高的部门名称select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select max(avg(sal)) avgsalfrom emp group by deptno))--37.平均薪水最低的部门的部门名称select d.* from dept d where deptno in(select deptno from emp group by deptno having avg(sal)=(select min(avg(sal)) avgsalfrom emp group by deptno))--38.平均薪水等级最低的部门的部门名称select d.dname from dept dwhere d.deptno in(select a.deptno from(select e.deptno from emp e,salgrade swhere (e.sal between s.losal and s.hisal)group by e.deptno order by avg(s.grade)) awhere rownum=1);--39.部门经理人中,薪水最低的部门名称select dname from dept where deptno=(select deptno from(select deptno from emp where job='MANAGER' group by deptnoorder by min(sal)) where rownum=1)--40.比普通员工的最高薪水还要高的经理人名称select ename from emp where sal>(select max(sal) from emp where job not in('MANAGER','PRESIDENT')) and job='MANAGER' or job='PRESIDENT'--41.删除重复部门,但是留下一项insert into dept values(70,'RESEARCH','DALLAS')select deptno,dname,rowid from deptdelete from dept dwhere rowid<>(select min(rowid) from dept where dname=d.dname and d.loc=loc)--42.更新员工工资为他的主管的工资,奖金update emp e set sal=(select sal from emp where empno=e.mgr),comm=(select comm from emp where empno=e.mgr)update emp e set (sal,comm)=(select sal,comm from emp where empno=e.mgr)rollback;select * from emp;。

相关文档
最新文档