列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序
Oracle精选面试题(附答案及分析)
Oracle精选面试题1.查询员工表所有数据, 并说明使用*的缺点答案:select * from emp;使用*的缺点有:查询出了不必要的列;效率上不如直接指定列名。
2.查询职位(JOB)为'PRESIDENT'的员工的工资答案:select * from emp where job = 'PRESIDENT';3.查询佣金(COMM)为0 或为NULL 的员工信息答案:select * from emp where comm = 0 or comm is null;4.查询入职日期在1981-5-1 到1981-12-31 之间的所有员工信息答案:select * from emp where hiredatebetween to_date('1981-5-1','yyyy-mm-dd') and to_date('1981-12-31','yyyy-mm-dd');5.查询所有名字长度为4 的员工的员工编号,姓名答案:select * from emp where length(ename) = 4;6.显示10 号部门的所有经理('MANAGER')和20 号部门的所有职员('CLERK')的详细信息答案:select * from emp where deptno = 10 and job = 'MANAGER' or deptno = 20 and job ='CLERK';7.显示姓名中没有'L'字的员工的详细信息或含有'SM'字的员工信息答案:select * from emp where ename not like '%L%' or ename like '%SM%';8.显示各个部门经理('MANAGER')的工资答案:select sal from emp where job = 'MANAGER';9.显示佣金(COMM)收入比工资(SAL)高的员工的详细信息答案:select * from emp where comm > sal;10.把hiredate 列看做是员工的生日,求本月过生日的员工答案:select * from emp where to_char(hiredate, 'mm') = to_char(sysdate , 'mm');11.把hiredate 列看做是员工的生日,求下月过生日的员工答案:select * from emp where to_char(hiredate, 'mm') = to_char(add_months(sysdate,1) , 'mm');12.求1982 年入职的员工答案:select * from emp where to_char(hiredate,'yyyy') = '1982';13.求1981 年下半年入职的员工答案:select * from emp where hiredatebetween to_date('1981-7-1','yyyy-mm-dd') and to_date('1982-1-1','yyyy-mm-dd') - 1;14.求1981 年各个月入职的的员工个数答案:select count(*), to_char(trunc(hiredate,'month'),'yyyy-mm')from emp where to_char(hiredate,'yyyy')='1981'group by trunc(hiredate,'month')order by trunc(hiredate,'month');15.查询各个部门的平均工资答案:select deptno,avg(sal) from emp group by deptno;16.显示各种职位的最低工资答案:select job,min(sal) from emp group by job;17.按照入职日期由新到旧排列员工信息答案:select * from emp order by hiredate desc;18.查询员工的基本信息,附加其上级的姓名答案:select e.*, e2.ename from emp e, emp e2 where e.mgr = e2.empno;19.显示工资比'ALLEN'高的所有员工的姓名和工资答案:select * from emp where sal > (select sal from emp where ename='ALLEN');20.显示与'SCOTT'从事相同工作的员工的详细信息select * from emp where job = (select * from emp where ename='SCOTT');21.显示销售部('SALES')员工的姓名答案:select ename from emp e, dept d where e.deptno = d.deptno and d.dname='SALES';22.显示与30 号部门'MARTIN'员工工资相同的员工的姓名和工资答案:select ename, sal from empwhere sal = (select sal from emp where deptno=30 and ename='MARTIN');23.查询所有工资高于平均工资(平均工资包括所有员工)的销售人员('SALESMAN')答案:select * from emp where job='SALESMAN' and sal > (select avg(sal) from emp);24.显示所有职员的姓名及其所在部门的名称和工资答案:select ename, job, dname from emp e, dept d where e.deptno = d.deptno;25.查询在研发部('RESEARCH')工作员工的编号,姓名,工作部门,工作所在地答案:select empno,ename,dname,loc from emp e, dept dwhere e.deptno = d.deptno and danme='RESEARCH';26.查询各个部门的名称和员工人数答案:select * from (select count(*) c, deptno from emp group by deptno) einner join dept d on e.deptno = d.deptno;27.查询各个职位员工工资大于平均工资(平均工资包括所有员工)的人数和员工职位答案:select job, count(*) from emp where sal > (select avg(sal) from emp) group by job;28.查询工资相同的员工的工资和姓名答案:select * from emp e where (select count(*) from emp where sal = e.sal group by sal) > 1;29.查询工资最高的3 名员工信息答案:select * from (select * from emp order by sal desc) where rownum <= 3;30.按工资进行排名,排名从1 开始,工资相同排名相同(如果两人并列第1 则没有第2 名,从第三名继答案:select e.*, (select count(*) from emp where sal > e.sal)+1 rank from emp e order by rank;31.求入职日期相同的(年月日相同)的员工答案:select * from emp e where (select count(*) from emp where e.hiredate=hiredate)>1; 32.查询每个部门的最高工资答案:select deptno, max(sal) maxsal from emp group by deptno order by deptno;33.查询每个部门,每种职位的最高工资答案:select deptno, job, max(sal) from emp group by deptno, job order by deptno, job;34.查询每个员工的信息及工资级别答案:select e.*, sg.grade from emp e, salgrade sg where sal between losal and hisal;35.查询工资最高的第6-10 名员工答案:select * from (select e.*,rownum rn from(select * from emp order by sal desc) ewhere rownum <=10)where rn > 5;36.查询各部门工资最高的员工信息答案:select * from emp e where e.sal = (select max(sal) from emp where (deptno = e.deptno));37.查询每个部门工资最高的前2 名员工答案:select * from emp e where(select count(*) from emp where sal > e.sal and e.deptno = deptno) < 2order by deptno, sal desc;38.查询出有3 个以上下属的员工信息答案:select * from emp e where(select count(*) from emp where e.empno = mgr) > 2;39.查询所有大于本部门平均工资的员工信息答案:select * from emp e where sal >(select avg(sal) from emp where (deptno = e.deptno))order by deptno;40.查询平均工资最高的部门信息答案:select d.*, avgsal from dept d, (select avg(sal) avgsal, deptno from emp group by deptno) se where avgsal = (select max(avg(sal)) from emp group by deptno) and d.deptno = se.deptno;41.查询大于各部门总工资的平均值的部门信息答案:select d.*,sumsal from dept d, (select sum(sal) sumsal, deptno from emp group by deptno) se where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno = d.deptno;42.查询大于各部门总工资的平均值的部门下的员工信息答案:select e.*,sumsal from emp e, (select sum(sal) sumsal, deptno from emp group by deptno) se where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno = e.deptno;43.查询没有员工的部门信息答案:select d.* from dept d left join emp e on (e.deptno = d.deptno) where empno is null;44.查询当前月有多少天答案:select trunc(add_months(sysdate,1),'month') - trunc(sysdate,'month') from dual;45.列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数答案:SELECT job,COUNT(empno)FROM empGROUP BY job HAVING MIN(sal)>1500 ;46.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级答案:SELECT e.empno,e.ename,d.dname,m.ename,s.gradeFROM emp e,dept d,emp m,salgrade sWHERE sal>(SELECT AVG(sal) FROM emp) AND e.mgr=m.empno AND d.deptno=e.deptno(+) AND e.sal BETWEEN s.losal AND s.hisal ;47.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称答案:SELECT e.ename,e.sal,d.dname FROM emp e,dept dWHERE sal > ALL (SELECT sal FROM emp WHERE deptno=30) AND e.deptno=d.deptno;48.列出所有部门的详细信息和部门人数答案:SELECT d.dname,d.loc,dt.countFROM dept d,(SELECT deptno,COUNT(*) count FROM emp GROUP BY deptno) dtWHERE d.deptno=dt.deptno ;49.显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于$5000,输出结果按月工资的合计升序排列答案:SELECT job,SUM(sal) sumFROM empWHERE job<>'SALESMAN'GROUP BY job HAVING sum>5000ORDER BY sum ;50.客户表a(id name address) 登陆流水表b(id time) 购物流水表c(id time productid productnum)1.求每个客户的最新登陆时间time,姓名name,客户id?答案:select a.id,,d.time as timefrom a left join (select id,max(time) as time from b group by id) don a.id =d.id ;2.查最新登陆并且已经购买商品的客户id,name,登陆的时间time(一条sql语句)答案:select a.id,,d.time as timefrom a,(select id,max(time) as time from b group by id) dwhere a.id =d.idand exists (select * from c where id = a.id);。
游标题目与答案
cursor c_emp2(p_mgr emp.mgr%type) is
select ename from emp2 where mgr=p_mgr ;
begin
open c_emp;
new_sal emp.sal%type;
v_deptno emp.deptno%type;
cursor c_emp is
select ename,sal,deptno,empno from emp2;
begin
for c in c_emp loop
v_empno:=c.empno;
loop
fetch c_emp into v_mgr;
exit when c_emp%notfound;
select ename into up_ename from emp2 where empno=v_mgr;
dbms_output.put('--管理者: '||up_ename||'--下属:');
dow_ename emp.ename%type;
c_num number;
cursor c_emp is
select distinct mgr from emp2 where mgr is not null;
begin
open c_emp;
loop
fetch c_emp into v_empno;
select count(*)into c_num from emp2 where mgr=v_empno;
数据库笔试题及答案
数据库笔试题及答案【篇一:sql数据库经典面试题(修改笔试题)(有答案)】部门,平均工资,要求按部门的字符串顺序排序,不能含有human resource部门,employee结构如下:employee_id, employee_name,depart_id,depart_name,wage 答:select depart_name, avg(wage)from employee where depart_name human resourcegroup by depart_name order by depart_name-------------------------------------------------------------------------- 29.给定如下sql数据库:test(num int(4)) 请用一条sql语句返回num的最小值,但不许使用统计功能,如min,max等答:select top 1 num from test order by num--------------------------------------------------------------------------33.一个数据库中有两个表:一张表为customer,含字段id,name;一张表为order,含字段id,customerid(连向customer中id的外键),revenue;写出求每个customer的revenue总和的sql语句。
建表 create table customer(id int primary key,name char(10))gocreate table [order](id int primary key,customerid int foreign key referencescustomer(id) , revenue float)go--查询select customer.id, sum( isnull([order].revenue,0) )from customer full join [order]on( [order].customerid=customer.id ) group by customer.idselect customer.id,sum(order.revener) from order,customer where customer.id=customerid group by customer.idselect customer.id, sum(order.revener ) from customer full join order on( order.customerid=customer.id ) group by customer.id5数据库(10)a tabel called “performance”contain:name and score,please 用sql语言表述如何选出score最high的一个(仅有一个)仅选出分数,select max(score) from performance仅选出名字,即选出名字,又选出分数: select top 1score ,name from per order by scoreselect name1,score from per where score in/=(selectmax(score) from per).....4 有关系 s(sno,sname) c(cno,cname) sc(sno,cno,grade)1 问上课程 db的学生noselect count(*) from c,sc where ame=db and o=o select count(*) from sc where cno=(select cno from c whereame=db)2 成绩最高的学生号select sno from sc where grade=(select max(grade) from sc ) 3 每科大于90分的人数select ame,count(*) from c,sc where o=o andsc.grade90 group by ameselect ame,count(*) from c join sc on o=o and sc.grade90 group by ame数据库笔试题*建表:dept:deptno(primary key),dname,locemp:empno(primary key),ename,job,mgr,sal,deptno*/1 列出emp表中各部门的部门号,最高工资,最低工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno from emp group by deptno;2 列出emp表中各部门job为clerk的员工的最低工资,最高工资 select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp where job = clerk group by deptno;3 对于emp中最低工资小于1000的部门,列出job为clerk的员工的部门号,最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号 from emp as bwhere job=clerk and 1000(select min(sal) from emp as a wherea.deptno=b.deptno) group by b.deptno4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资select deptno as 部门号,ename as 姓名,sal as 工资 from emp order by deptno desc,sal asc5 写出对上题的另一解决方法(请补充)6 列出张三所在部门中每个员工的姓名与部门号select ename,deptno from emp where deptno = (select deptno from emp where ename = 张三)7 列出每个员工的姓名,工作,部门号,部门名select ename,job,emp.deptno,dept.dname from emp,deptwhere emp.deptno=dept.deptno8 列出emp中工作为clerk的员工的姓名,工作,部门号,部门名select ename,job,dept.deptno,dname from emp,dept wheredept.deptno=emp.deptno and job=clerk9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr) select a.ename as 姓名,b.ename as 管理者 from emp as a,emp as b where a.mgr is not null and a.mgr=b.empno10 对于dept表中,列出所有部门名,部门号,同时列出各部门工作为clerk的员工名与工作select dname as 部门名,dept.deptno as 部门号,ename as 员工名,job as 工作 from dept,empwhere dept.deptno *= emp.deptno and job = clerk11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序select a.deptno as 部门号,a.ename as 姓名,a.sal as 工资 from emp as a where a.sal(select avg(sal) from emp as b wherea.deptno=b.deptno) order by a.deptno12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序select count(a.sal) as 员工数,a.deptno as 部门号 from emp as awhere a.sal(select avg(sal) from emp as b wherea.deptno=b.deptno) group by a.deptno order by a.deptno13 对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序select count(a.empno) as 员工数,a.deptno as 部门号,avg(sal) as 平均工资 from emp as awhere (select count(c.empno) from emp as c wherec.deptno=a.deptno and c.sal(select avg(sal) from emp as b where c.deptno=b.deptno))1 group by a.deptno order bya.deptno14 对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数select a.deptno,a.ename,a.sal,(select count(b.ename) from emp as b where b.sala.sal) as 人数 from emp as awhere (select count(b.ename) from emp as b whereb.sala.sal)5 数据库笔试题及答案第一套一.选择题1. 下面叙述正确的是ccbad ______。
员工部门表综合查询 题
(1)查询20部门的所有员工信息。
(2)查询所有工种为CLERK的员工的员工号、员工名和部门号。
(3)查询奖金(COMM)高于工资(SAL)的员工信息。
(4)查询奖金高于工资的20%的员工信息。
(5)查询10号部门中工种为MANAGER和20部门中工种为CLERK的员工的信息。
(6)查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。
(7)查询有奖金的员工的不同工种。
(8)查询所有员工工资与奖金的和。
(9)查询没有奖金或奖金低于100的员工信息。
(10)查询各月倒数第3天入职的员工信息。
(11)查询工龄大于或等于25年的员工信息。
(12)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。
(13)查询员工名正好为6个字符的员工的信息。
(14)查询员工名字中不包含字母“S”的员工。
(15)查询员工姓名的第二字母为“M”的员工信息。
(16)查询所有员工姓名的前三个字符。
(17)查询所有员工的姓名,如果包含字母“S”,则用“s”替换。
(18)查询员工的姓名和入职日期,并按入职日期从先到后进行排序。
(19)显示所有员工的姓名、工种、工资和奖金,按工种降序排序,若工种相同则按工资升序排序。
(20)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,若月份相同则按入职的年份排序。
(21)查询在2月份入职的所有员工信息。
(22)查询所有员工入职以来的工作期限,用“XX年XX月XX日”的形式表示。
(23.1)查询至少有一个员工的部门信息。
(23.2)查询至少有两个员工的部门信息。
(24)查询工资比SMITH员工工资高的所有员工信息。
(25)查询所有员工的姓名及其直接上级的姓名。
(26)查询入职日期早于其直接上级领导的所有员工信息。
(27)查询所有部门及其员工信息,包括那些没有员工的部门。
(28)查询所有员工及其部门信息,包括那些还不属于任何部门的员工。
(29)查询所有工种为CLERK的员工的姓名及其部门名称。
oracle试题及答案
oracle试题及答案1.用sqlplus连接数据库时,为什么会出Oracle not available错误?Oracle server(即通常所说的数据库)是否启动,ORACLE_SID是否正确设置。
2.找出员工的姓中(last_name)第三个字母是a的员工名字select last_name from s_emp where last_name like '_ _a%';3.找出员工名字中含有a和e的select first_name from s_emp where first_name like '%a%' and first_name like '%e%';比较:select first_name from s_emp where first_name like '%a%e%';此种方式查询出来的数据,只是先出现“a”然后出现“e”的数据表记录。
总的记录条数可能少于第一种方式的。
4.找出所有有提成的员工,列出名字、工资、提出,显示结果按工资从小到大,提成从小到大.select first_name,salary,commission_pct from s_emp where commission_pct is not null order by salary desc,commission_pct;5.42部门有哪些职位select distinct title from s_emp where dept_id=42;6.哪些部门不是Sales部select id,name,region_id from s_dept where name <> 'Sales';注意大小写!7.显示工资不在1000到1550之间的员工信息:名字、工资,按工资从大到小排序。
select first_name,salary from s_emp where salary not between 1000 and 1550 order by salary desc;需要使用到not between and 函数,不能使用salary > 1550 and salary <10008.显示职位为Stock Clerk和Sales Representative,年薪在14400和17400之间的员工的信息:名字、职位、年薪。
查询练习题0627
--hr.regions、hr.countries、hr.locations、hr.departments、hr.jobs、hr.employees表
--各个部门平均、最大、最小工资、人数,按照部门号升序排列。
--各个部门中工资大于5000的员工人数。
--统计每个部门的员工人数
--统计每个部门的平均薪资
--
select * from employees2;
--按部门division_id来统计每个部门的最低、最高、和平均薪资
--按部门division_id 和职位 job_id 来统计每个部门每个职位的最低、最高、平均薪资
--按部门division_id 和职位 job_id 来统计每个部门每个职位的薪资总和,并且输出每个部门的薪资总和和所有的薪资总和
--各个部门平均工资和人数,按照部门名字升序排列。
--列出每个部门中有同样工资的员工的统计信息,列出他们的部门号,工资,人数。
--列出同部门中工资高于1000?的员工数量超过2?人的部门,显示部门名字、地区名称。
--哪些员工的工资,高于整个公司的平均工资,列出员工的名字和工资(降序)。
--列出在同一部门共事,入职日期晚但工资高于其他同事的员工:名字、工资、入职日期(关联子查询)。
--哪些员工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一个部门(非关联子查询)。
--哪些员工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一个部门(关联子查询)。
--查询EMP、DEPT表,输出的列包含员工姓名、工资、部门编号、部门名称、部门地址.
下半年计算机二级VFP笔试模拟题及答案
下半年计算机二级VFP笔试模拟题及答案2015下半年计算机二级VFP笔试模拟题及答案一、选择题(每小题1分,共40分)1 下列关于完全二叉树的叙述中,错误的是( )。
A.除了最后一层外,每一层上的结点数均达到最大值B.可能缺少若干个左、右叶子结点C.完全二叉树一般不是满二叉树D.具有结点的完全二叉树的深度为[1og2n]+1本题共1分,参考答案: BB。
【解析】满二叉树指除最后一层外,每一层上所有结点都有两个子结点的二叉树。
完全二又树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干叶子结点的二叉树。
由定义可知,满二叉树肯定是完全二叉树,而完全二叉树一般不是满二叉树。
2 执行下列程序后,屏幕上显示的结果是( )。
X=2Y=3X,YDO SUBlX,YPROCEDURE SUBlPRIVATE YX=4Y=5RETURNA.2 3 4 5B.2 3 4 3C.4 5 4 5D.2 3 2 3本题共1分,参考答案: BB。
【解析】本题考查了Visual FoxPr0过程文件中不同变量的定义及参数的传递。
主程序中有两个变量x,Y,未指定类型默认为PUBLLC,然后调用SUBl中,使用了两个与主程序同名的变量X,Y,变量Y被定义为私有变量,这样,Y值的变化不会被反映到主程序的Y 中,而x的值默认为PUBLIC。
3 下列叙述甲错误的是( )。
A.面向对象的程序设计,通过消息来实现对象之间的相互关系B.面向对象的程序设计,是用对象模拟问题领域中的实体C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.在面向对象的程序设计中.各个对象之间相互依赖性本题共1分,参考答案: DD。
【解析】面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。
4 在Visual FoxPro 中,假定数据库表S(学号,姓名,性别,年龄)和SC(学号,课程号,成绩)之间使用"学号"建立了表之间的永久联系,在参照完整性的更新规则、删除规则和插人规则中选择设置了"限制"。
软件开发实施面试SQL测试题
一、问答题1、数据库包含哪些哪几种后缀名的文件必须,这些文件分别存放在什么的信息?2、TRUNCATE TABLE命令是什么含义?和DELETE表名有什么区别?3、说出以下聚合数的含义:avg,sum,max,min,count,count(*)4、inner join是什么意思?作用是什么?写出基本语法结构5左向外联接,右向外联接,全联接的关键字如何写6、视图可以更新吗?会影响到实际表吗?7、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快?8、什么是inserted表?什么是deleted表?9、怎么把下面的表(tab)Year month amount1991 1 1.11991 2 1.21991 3 1.31991 4 1.41992 1 2.11992 2 2.21992 3 2.31992 4 2.4查成这样1个结果Year m1 m2 m3 m41991 1.1 1.2 1.3 1.41992 2.1 2.2 2.3 2.410、用一条SQL语句查询每门课都大于80分的学生姓名Name kecheng fengshu张三语文81张三数学75李四语文76李四数学90王五语文81王五数学100王五英语90二、简答题,按要求写出SQL语句,使用SQL标准语句Create table dept(Deptno varchar(10) primary keyDname varchar(10));Create table emp(Empno varchar(10) primary keyEname varchar(10)Job varchar(10)Mgr varchar(10)Sal varchar(10)Deptno varchar(10) references dept(deptno));Drop table dept;Drop table emp;Insert into dept values(‘1’,’事业部’);Insert into dept values(‘2’,’销售部’);Insert into dept values(’3’,’技术部’);Insert into emp values(‘01’,’jacky’,’clerk’,’tom’,’1000’,’1’); Insert into emp values(‘02’,’tom’,’clerk’,’’,’2000’,’1’);Insert into emp values(‘07’,’biddy’,’clerk’,’’,’2000’,’1’);Insert into emp values(‘03’,’jenny’,’sales’,’prety’,’600’,’2’);Insert into emp values(‘04’,’pretty’,’sales’,’’,’800’,’2’);Insert into emp values(‘05’,’buddy’,’jishu’,’canndy’,’1000’,’3’);Insert into emp values(‘06’,’canndy’,’jishu’,’’,’1500’,’3’);Select*from dept;Select*from emp;1、列出emp表中各部门的部门号,最高工资,最低工资2、列出emp表中各部门job为’CLERK’的员工的最低工资,最高工资。
史上最全Oracle数据库基本操作练习题(含答案)
Oracle基本操作练习题使用表:员工表(emp):(empno NUMBER(4)notnull,--员工编号,表示唯一ename VARCHAR2(10),--员工姓名job VARCHAR2(9),--员工工作职位mgr NUMBER(4),--员工上级领导编号hiredate DATE,--员工入职日期sal NUMBER(7,2),--员工薪水comm NUMBER(7,2),--员工奖金deptno NUMBER(2)—员工部门编号)部门表(dept):(deptno NUMBER(2)notnull,--部门编号dname VARCHAR2(14),--部门名称loc VARCHAR2(13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。
建表脚本.txt建表脚本(根据需要使用):练习题:1.找出奖金高于薪水60%的员工信息。
SELECT * FROM emp WHERE comm>sal*0.6;2.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料。
SELECT * FROM emp WHERE (JOB='MANAGER' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20);3.统计各部门的薪水总和。
SELECT deptno,SUM(sal) FROM emp GROUP BY deptno;4.找出部门10中所有理(MANAGER),部门20中所有办事员(CLERK)以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的详细资料。
SELECT * FROM emp WHERE (JOB='MANAGER' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20) OR (JOB NOT IN('MANAGER','CLERK') AND SAL>2000);5.列出各种工作的最低工资。
1数据库的物理结构有哪几种文件组成
1数据库的物理结构有哪几种文件组成?数据文件重做日志文件控制文件其他文件2简要说明例程与数据库之间的联系与区别、ORACLE数据库是安装在磁盘上的ORACLE数据库文件和相关的数据库管理系统的集合。
磁盘上比较重要的文件包括数据文件,控制文件重做日志文件初始化参数文件口临文件。
鬼档重做日志文件例程是由在内从中的一组后台京城和内存结构组成。
3说明数据库,表空间和数据文件之间的关系。
ORACLE数据库的逻辑结构和物理结构的对应关系,一个ORACLE数据库可以拥有多个表空间,每个表空间有多个段组成,每个段由若干个区间组成,每个区间包含多个ORACLE 数据块,每个ORACLE数据块包含多个OS屋里磁盘快。
表空间有多个物理文件支持,具体存储表空间中的个对象。
4说明ORACLE 例程的系统全局区包括哪几部分?风别存储什么?主要包括数据库缓冲存储区,崇左日志缓冲区共享池三部分。
1用于存放最近访问的数据块。
2数据进行的所有更改都存储在崇左日志缓冲区,这些记录在以后会备考摆到重做日志文件中。
3共享池用于存放最近执行的SQL语句和数据字典信息,它的尺寸是由初始化参数SHARED_PLLL_SIZE来定义的。
大池用于为大的内存需求提供内存空间,它的尺寸有初始化参数LARGE_POOL SIZE定义。
6有几种日志操作模式?扎那几种日志操作模式下会生成归档日志?7ORACLE罗技存储结构有哪几部分构成?由表空间,段,区间,ORACLE块构成。
8 ORACLE数据库系统中的进程主要由用户进程和服务器端进程,服务器端进程又可以分为后台进程和服务器进程两类。
服务器端后台进程:数据库写入进程,日志写入进程,日志归档进程(不必要),检查带你进程,系统监控进程和进程监控进程三章ORACLE NET 是ORACLE网络产品的基础,他用需服务和他们的应用程序驻留在不同的计算机上,其主要功能是在客户机和服务器之间活在两个服务器之间建立网络绘画和传输数据。
找出工资比部门平均工资高的员工 with as
查询语句不是以select开始的,而是以“WITH”关键字开头
可认为在真正进行查询之前预先构造了一个临时表secooler_sum,之后便可多次使用它做进一步的分析和处理
WITH Clause方法的优点
增加了SQL的易读性,如果构造了多个子查询,结构会更清晰;
ORACLE WITH AS 语法
1人收藏此文章, 收藏此文章 发表于3个月前 , 已有105次阅读 共0个评论 1人收藏此文章
一种SQL查询方法,颠覆日常以select开始的SQL查询写法
create table t (x number(10), y number(10));
这也是为什么在大型数据仓库系统中推荐使用WITH Clause方法进行查询统计的原因,这样可以大大的提高数据分析和查询的效率
另外,观察WITH Clause方法执行计划,其中“SYS_TEMP_XXXX”便是在运行过程中构造的中间统计结果临时表。
ID
----------
1
2
3
--奇怪?为什么加了WHERE条件还是输出ID=1的记录了,继续往下看:
SQL> with
2 sql1 as (select * from t2),
with
avg_gz as (select deptno,avg(sal) sal from emp group by deptno)
select emp.deptno,emp.sal from emp,avg_gz where emp.deptno=avg_gz.deptno and emp.sal>avg_gz.sal
union all
大数据应用开发(java)1+X模拟练习题(附答案)
大数据应用开发(java)1+X模拟练习题(附答案)一、单选题(共98题,每题1分,共98分)1.socket 编程中,以下哪个 socket 的方法是不属于服务端的()?A、acceptB、listenC、connectD、close正确答案:C答案解析:connect 是客户端主动连接服务端的行为,因此 connect 不是在服务端操作的。
2.在数据库中,删除employees表的全部数据,以下正确的语句是:()。
A、DELETE TABLE FROM employeesB、DELETE TABLE employeesC、DELETE FROM employeesD、DELETE * FROM employees正确答案:C答案解析:删除数据的DELETE语句DELETE FROM TABLENAME3.如果一条 SQL 语句中同时出现了 where 子句、 order by 子句、group by子句、 having 子句,那么正确的执行顺序是?( )A、where,having,group by,order byB、having,where,group by,order byC、order by,where,having,group byD、where,group by,having,order by正确答案:D4.以下哪个用于完成左连接( )。
A、right joinB、natural joinC、joinD、left join正确答案:D5.下列约束中,哪一个属于参照完整性约束?( )A、UNIQUEB、FOREIGN KEYC、PRIMARY KEYD、DEFAULT正确答案:B6.下列关于类的定义,哪一个是正确的()。
A、abstract class C { void a() ; }B、abstract class C { abstract void a() ; }C、class C { abstract void a() ; void b() ; }D、class C { abstract void a() ; }正确答案:B答案解析:普通类中不能包含抽象方法,因此 C、D 错误;抽象类里既可以含有抽象方法,也可以含有普通方法,但是不能只包含普通方法,因此 A 错误。
多表查询的练习题
多表查询的练习题多表查询的练习题1、列出至少有一个员工的所有部门count(*)>=1select deptno,count(*) from emp group by deptno having count(*)>=12、列出薪金比“SMITH”多的所有员工select sal from emp where ename='SMITH';select * from emp where sal>(select sal from emp where ename='SMITH');3、列出所有员工的姓名以及其直接上级的姓名select e.ename 雇员的姓名,m.ename 领导的姓名from emp e,emp mwhere e.mgr=m.empno(+);4、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称select e.empno,e.ename,d.dnamefrom emp e,emp m,dept dwhere e.mgr=m.empno and e.deptno=d.deptno ande.hiredate<m.hiredate;5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select d.*,e.*from emp e,dept dwhere e.deptno(+)=d.deptno;6、列出所有“CLERK”的姓名及其部门名称,部门的人数select deptno,count(*) from emp group by deptno;select e.ename,d.dname,temp.coufrom (select deptno,count(*) cou from emp group by deptno) temp,emp e,dept dwhere temp.deptno=e.deptno and e.deptno=d.deptno andjob='CLERK';7、列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数select job,min(sal) from emp group by job having min(sal)>1500;select count(*)from empwhere job in (select job from emp group by job having min(sal)>1500) group by job;8、列出在部门“sales”(销售部)工作的员工的姓名,假定不知道销售部的部门编号select deptno from dept where dname=upper('sales');select ename from emp where deptno=(select deptno from dept where dname=upper('sales'));9、列出薪金高于公司平均薪金的所有员工,所在部门,上级领导等级,公司的工资等级select avg(sal) from emp;sal>(select avg(sal) from emp)select e.*,d.dname,d.loc,ms.grade 上级领导等级,es.grade 雇员等级from emp e,dept d,emp m,salgrade ms,salgrade eswhere e.deptno=d.deptno and e.mgr=m.empno(+) and e.sal between es.losal and es.hisaland m.sal between ms.losal and ms.hisal and e.sal>(select avg(sal) from emp);10、列出与“scott”从事相同工作的所有员工及部门名称select job from emp where ename=upper('scott');select e.*,d.dnamefrom emp e,dept dwhere e.deptno=d.deptno and ename!=upper('scott') andjob=(select job from emp where ename=upper('scott'));11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金select sal from emp where deptno=30;select ename,salfrom emp where sal in (select sal from emp where deptno=30) and deptno!=30;12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金,部门名称select e.ename,e.sal,d.dnamefrom emp e,dept dwhere e.deptno=d.deptno and e.sal>all(select sal from emp where deptno=30);13、列出在每个部门工作的员工数量、平均工资和平均服务期限selectdeptno,count(*),round(avg(sal),2),trunc(avg(months_betwee n(sysdate,hiredat e)/12))from empgroup by deptno;14、列出所有员工的姓名、部门名称和工资select e.ename,d.dname,e.salfrom emp e,dept dwhere e.deptno=d.deptno;15、列出所有部门的详细信息和部门人数select deptno,count(*) cou from emp group by deptno;select d.*,temp.coufrom (select deptno,count(*) cou from emp group by deptno) temp,dept d where temp.deptno(+)=d.deptno;16、列出各种工作的最低工资以及从事此工作的雇员姓名select job,min(sal) from emp group by job;select ename,sal from emp where (job,sal) in(select job,min(sal) from emp group by job);17、列出各个部门的经理的最低薪金select deptno,min(sal)from empwhere job='MANAGER'group by deptno;18、列出所有员工的年工资,按年薪从低到高排序select (nvl(comm,0)+sal)*12 income from emp order by income;19、查出某个员工的上级主管,并要求出这些主管中的薪水超过3000select distinct m.*from emp e,emp mwhere e.mgr=m.empno and m.sal>3000;20、求出部门名称中,带'S'字符的部门员工的工资总和、部门人数select deptno from dept where dname like '%S%';select sum(sal),count(*)from empwhere deptno in (select deptno from dept where dname like '%S%') group by deptno;。
SQLServer笔试题解答
SQLServer笔试题解答SQL Server笔试题(Sql2000常见笔试题)一单词解释(2分/个) 34分Data 数据Database 数据库RDBMS 关系数据库管理系统GRANT 授权REVOKE 取消权限DENY 拒绝权限DECLARE 定义变量PROCEDURE存储过程事务 Transaction 触发器 TRIGGER 继续 continue 唯一 unqiue 主键 primary key 标识列 identity 外键 foreign key 检查 check 约束 constraint二编写SQL语句(5分/题) 50分(包含笔试题问题和解答答案)1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号 int ,姓名 varchar(8),年龄 int,性别 varchar(4),家庭地址 varchar(50),联系电话 int);2) 修改学生表的结构,添加一列信息,学历Alter table stu add 学历 varchar(6);3) 修改学生表的结构,删除一列信息,家庭住址Alter table stu drop column 家庭地址4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历1A22男123456小学2B21男119中学3C23男110高中4D18女114大学Insert into stu values(1,’A’,22,’男’,123456,’小学’)Insert into stu values(2,’B’,21,’男’,119,’中学’)Insert into stu values(3,’C’,23,’男’,110,’高中’)Insert into stu values(4,’D’,18,’女’,114,’大学’)5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”Update stu set 学历=’大专’ where 联系电话like ‘11%’6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除Delect from stu where 性别=’男’ and 姓名like ‘c%’7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来Select 姓名,学号 from stu where 年龄<22 and 学历=’大专’8) 查询学生表的数据,查询所有信息,列出前25%的记录Select top 25 percent * from stu9) 查询出所有学生的姓名,性别,年龄降序排列Select 姓名,性别 from stu order by 年龄 desc10) 按照性别分组查询所有的平均年龄Select avg(年龄) from stu group by 性别三填空(3分/题) 36分(包含笔试题问题和解答答案)1) 索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。
二级VISUALFOXPRO笔试-315_真题-无答案
二级VISUAL FOXPRO笔试-315(总分100,考试时间90分钟)一、选择题在下列各题的A) 、B) 、C) 、D) 四个选项中,只有一个选项是正确的。
1. 在查询设计器中可以根据需要为查询输出“查询去向”的,有A. 浏览、临时表、表、图形、屏幕、标签B. 浏览、临时表、表、图形、屏幕、报表、视图C. 浏览、临时表、表、图形、屏幕、报表、标签D. 浏览、临时表、表、图形、报表、标签2. 给WH1仓库的职工提高10%的工资可使用命令A. UPDATE 职工WHERE 工资=工资*1.10 FOR 仓库号=“WH1”B. UPDATE 职工SET 工资=工资*1.10 WHERE 仓库号=“WH1”C. UPDATE 职工SET 工资=工资*1.10 FOR 仓库号=“WH1”D. UPDATE FROM 职工SET 工资=工资*1.103. 运行查询的命令是A. OPEN QUERYB. DO QUERYC. MODI VIEWD. DO VIEW4. 在Visual FoxPro中有如下程序文件TEST:*程序名:TEST.PRG*调用方法:DO TESTSET TALK OFFCLOSE ALLmX=“Visual FoxPro”mY=“二级”DO SUB1 WITH mY?mY+mXRETURN*子程序:SUB1.PRGPROCEDURE SUB1PARAMETERS mYmY=“计算机等级”+mYRETURN执行命令DO TEST后,屏幕的显示结果为A. 二级Visual FoxProB. 计算机等级二级Visual FoxProC. 计算机等级Visual FoxProD. 计算机等级二级5. 下列关于并运算的说法不正确的是A. ALL防止UNION删除组合结果中的重复行B. 在SQL语句中支持集合的并运算C. 两个SELECT语句的查询结果中的列数可以不相同D. 两个SELECT语句的查询结果中的对应列必须有相同的数据类型和宽度6. 假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A. log2nB. n2C. O(n1.5)D. n(n-1)/27. 检索每个部门职工工资的总和,要求显示部门名称和工资,正确的命令是A. SELECT部门号,SUM(工资)FROM部门表,职工表;WHERE 职工表.部门号=部门表.部门号;GROUP BY 部门号B. SELECT 部门号,SUM(工资)FROM职工表;WHERE 职工表.部门号=部门表.部门号;GROUP BY职工表.部门号C. SELECT 部门号,SUM(工资)FROM 部门表,职工表;WHERE 职工表.部门号=部门表.部门号;ORDRE BY职工表.部门号D. SELECT 部门号,SUM(工资)FROM 部门表,职工表;WHERE 职工表.部门号=部门表.部门号;GROUP BY职工表.部门号8. 在Visual FoxPro中,?ABS(-7*8)的输出是A. -56B. 56C. 15D. -159. 使用视图之前,首先应该A. 新建一个数据库B. 新建一个数据库表C. 打开相关的数据库D. 打开相关的数据表10. 执行下列一组命令后,选择“职32'表所在工作区的错误命令是CLOSE ALLUSE 仓库IN 0USE职工IN 0A. SELECT 职工B. SELECT 0C. SELECT 2D. SELECT B11. 关系表中的每一横行称为一个A. 元组B. 字段C. 属性D. 码12. 表格常用的列属性有A. ControlsoureeB. CurrentControlC. SparseD. 以上三项都正确13. 下列字段名中不合法的是A. 当前B. 7个考生C. dDc_111D. DDD14. 设CJ.DBF数据库有2条记录,内容如下:Record# XM EF1 李四 550.002 张三 750.00程序如下:SET TALK OFFUSE CJM->EF=0DO WHILE. NOT. EOF()M->EF=M->EF+EFSKIPENDDO?M->EFRETURN该程序执行的结果是A. 1300.00B. 1000.00C. 1600.00D. 1200.0015. 线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是A. 每个元素都有一个直接前件和直接后件B. 线性表中至少要有一个元素C. 表中诸元素的排列顺序必须是由小到大或由大到小D. 除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件16. 下列表达式中,结果为数值型的是A. CTOD([04/06/03])-10B. 100+100=300C. “505”-“50”D. LEN(SPACE(3))+117. 关于内存变量的调用,下列说法正确的是A. 局部变量不能被本层模块程序调用B. 私有变量只能被本层模块程序调用C. 局部变量能被本层模块和下层模块程序调用D. 私有变量能被本层模块和下层模块程序调用18. 在单链表中,增加头结点的目的是A. 方便运算的实现B. 使单链表至少有一个结点C. 标识表结点中首结点的位置D. 说明单链表是线性表的链式存储实现19. 分布式数据库系统不具有的特点是A. 数据分布性和逻辑整体性B. 位置透明性和复制透明性C. 分布性D. 数据冗余20. 在数据流图(DFD) 中,带有名字的箭头表示A. 模块之间的调用关系B. 程序的组成成分C. 控制程序的执行顺序D. 数据的流向21. 算法分析的目的是A. 找出数据结构的合理性B. 找出算法中输入和输出之间的关系C. 分析算法的易懂性和可靠性D. 分析算法的效率以求改进22. SQL的计算查询中,用于求平均值的函数是A. A VG()B. A VE()C. A VERAGE()D. A VER()23. Show方法用来将表单的A. Enabled属性设置为.FB. Visible属性设置为.F.C. Visible属性设置为.T.D. Enabled属性设置为.T.24. 检索有职工的工资大于或等于W1部门中任意一名职工工资的部门号,正确的命令是第(32)~(35)题使用如下的部门表和职工表。
MySQL_SQL实际操作练习题
MySQL SQL综合练习题
练习题:
1.查询雇员表中工资最高的雇员的员工号、员工姓名、工资和部门
号
2.薪水大于1200的雇员,按照部门编号进行分组,分组后的平均
薪水必须大于1500,查询各分组的平均工资,按照工资的倒序进行排列。
Having:分组函数的条件不能使用别名,在group by having order by 一同使用时需要注意顺序
3.查询每个雇员和其所在的部门名
4.查询每个雇员姓名及其工资所在的等级
5.查询雇员名第2个字母不是a的雇员的姓名、所在的组名、工资
所在的等级。
6.查询每个雇员和其经理的姓名
7.查询每个雇员和其经理的姓名(包括公司老板本身(他上面没有
经理))
8.查询每个雇员的姓名及其所在部门的部门名(包括没有雇员的部
门)
9.查询每个部门中工资最高的人的姓名、薪水和部门编号
10.查询每个部门平均工资所在的等级吗,
11.查询每个部门内平均的薪水等级
12.查询雇员中有哪些人是经理人
13.雇员表中薪水的最高值
14.平均薪水最高的部门的部门编号
15.求平均薪水最高的部门的部门名称。
sql学生
一、选择:2.2NF 消除了_D__。
A.非主属性对于码的函数依赖关系。
B.非主属性对于码的传递函数依赖关系。
C.非主属性对于码的部分函数依赖关系。
D.码对于非主属性的传递函数依赖关系。
4.在SELECT语句中,分组应使用_B__。
A.WHERE B. GROUP BY C. ORDER BY D. HAVING下面有关主码的说法,错误的是_C__。
A.一个关系的主码是惟一的B. 一个关系的主码只能包含一个属性列C. 关系R的主码的任何真子集都不可能是关系R的主码D. 主码不能取空值6.删除数据库使用_C__命令。
A.create database B. alter database C.drop database D. dbcc shinkdatabase7.DBMS对数据库恢复的重要文件是_B__。
A.日志文件 B. 数据文件C. 数据库文件D. 备注文件8.涉及四个表的查询时,where子句中至少有_D__个条件表达式。
A.0 B. 1C.2 D. 3 9.更新数据表内的数据的语句是_D__。
A.alter table B. alter rule C. update D. delete11.3NF消除了_D__。
A.非主属性对码的传递函数依赖。
B.码对非主属性的传递函数依赖。
C.非主属性对码的部分函数依赖。
D.码对非主属性的传递函数依赖。
12.在SELECT语句中,需对查询结果进行排序时,应使用__C_。
A.WHERE B. GROUP BYC. ORDER BYD. HA VING14.下面__D_不是DML触发器的种类。
A.update B. delete C. insert D. select15.左外连接的语句是_A__。
A.left join B. right joinC. right inner joinD. left inner join 16.下面_C___可以获取系统当前时间。