ORACLE数据库习题_第1页
ORACLE数据库习题_第2页
ORACLE数据库习题_第3页
ORACLE数据库习题_第4页
ORACLE数据库习题_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.ORACLE数据库物理结构包括以下三种文件,以下不属于的是( ) A系统文件B日志文件C数据文件D控制文件2.下列哪个命令是用于ORACLE中数据导出的 ( )Aexp Bimp Cinput Doutput3.()是用于控制数据访问的语言。ADML BDDL CDCL DDLL4.NULL表示什么()A0 B空格 C值 D没有值5.下面四个语句中哪一个是正确的?()ASELECT * , ENAME FROM EMP;B DELETE * FROM EMP;C SELECT DISTINCT EMPNO ,HIREDATE FROM EMP;DSELECT ENAME|SAL AS “n

2、ame” FROM EMP ;6.假定有一张表用户表users,其中一身份证字段ID_card。为了维护数据的完整性,在设计数据库时,最好对ID_card字段添加约束,请问应该添加什么约束()A primary key Bcheck Cdefault Dnot null7.下面哪一个like命令会返回名字象HOTKA的行?()Awhere ename like _HOT%' B where ename like H_T%' C where ename like %TKA_' D where ename like %TOK%'8.()操作符只返回由第一个查询选定但

3、是没有被第二个查询选定的行。A.UNIONB.UNION ALLC.INTERSECTD.MINUS9EMPLOYEES表的结构如下:EMPLOYEE_ID NUMBER PRIMARY KEYFIRST_NAME VARCHAR2(25)LAST_NAME VARCHAR2(25)HIRE_DATE DATE考虑下面的语句。1.CREATE table new_emp (employee_id NUMBER,name VARCHAR2(30);2.INSERT INTO new_emp SELECT employee_id,last_name from employees;3.Savepoi

4、nt s2;4.DELETE from new_emp;5.ROLLBACK to s2;6.DELETE from new_emp where employee_id=180;7.UPDATE new_emp set name=James;8.ROLLBACK to s2;9.UPDATE new_emp set name =JamesWHERE employee_id=180;10.ROLLBACK;完成本次事务处理以后,以下说法正确的有( )A.表中没有行。B.有一个姓名为James的员工。C.不能多次回滚到相同的保存点。D. 由于已经删除了员工ID180,因此最后一次更新未更新任何行。

5、10以下运算结果不为空值的是() A12+NULL B60*NULL CNULLNULL D12/(60+NULL)11若当前日期为25-5月-06,以下()表达式能计算出5个月后那一天所在月份的最后一天的日期。ANEXT_DAY(ADD_MONTHS(28-5月-06,5) BNEXT_DAY(MONTHS_BETWEEN(28-5月-06,5) CLAST_DAY(MONTHS_BETWEEN(28-5月-06,5) DLAST_DAY(ADD_MONTHS(28-5月-06,5)12( )子句用于列出唯一值。Aunique Bdistinct Corder by Dgroup by13哪

6、一个是子查询执行的顺序()A最里面的查询到最外面的查询B最外面的查询到最里面的查询C简单查询到复杂查询D复杂查询到简单查询14下面哪一个语句可以使用子查询()ASELECT 语句 BUPDATE语句CDELETE语句 D以上都是15如果表DEPT包含3条记录,现在用如下命令对其进行修改,ALTER TABLE DEPT ADD (COMP NUMBER(4) NOT NULL);请问下面哪一个说法是正确的()A该语句在表的最前面插入一个非空列B该语句在表的最后插入一个非空列C该语句执行完成后,应当立即执行COMMIT语句,以确保更改生效D该语句将产生错误16下列哪个是组合主键的特征()A每列有

7、唯一的值,但不是NULL值B组合有唯一的值,并且其中每列没有NULL值C组合的第一列和最后一列有唯一值D组合的第一列和最后一列有唯一值,但没有NULL值17当删除父表中的数据时,在CREATE TABLE语句的外键定义中指定的()选项删除子表中的数据。AON TRUNCATE CASCADE BON DELETE CASCADE CON UPDATE CASCADE DA和C都是18视图可以用于()A限制对表中指定列的访问B限制对表中行的子集的访问CA和B都是DA和B都不是19语句SELECT * FROM dept WHERE NOT EXISTS (SELECT * FROM emp WH

8、ERE deptno=dept.deptno)执行后的结果为()A只显示存在于EMP表中的部门全部信息。B只显示不存在于EMP表中的部门全部信息C未返回任何数据D显示DEPT表中的全部信息20已创建序列S1,若当前值为2,先执行3次S1.CURRVAL,再执行3次S1.NEXTVAL,最后S1的值是() A3 B4 C5 D621 数据库中有两个用户scott和myuser,物资表wz是属于myuser用户的,但当前用户是scott,要求查询物资表wz(wno,wname,wtype,wunit)物资单位wunit列为null的记录,取结果的前5条记录显示,以下正确的SQL语句是() Asel

9、ect*from scott.wz where wunit is null and rownum<5;Bselect*from myuser.wz where wunit = null and rownum<5;Cselect*from myuser.wz where wunit is null and rownum<6; Dselect*form scott.wz where wunit is null and rownum<6;22若用户要连接数据库,则该用户必须拥有的权限是() Acreate table Bcreate index Ccreate session

10、 Dconnect23授予删除任何表的系统权限(DROP ANY TABLE)给user1,并使其能继续授该权限给其他用户,以下正确的SQL语句是() AGrant drop any table to user1; BGrant drop any table to user1 with admin option; CGrant drop table to user1; DGrant drop any table to user1 with check potion;24当给一个有主键的表中插入重复行时,将引发下列哪个异常?()ANO_DATA_FOUND BTOO_MANY_ROWS CDUP

11、_VAL_ON_INDEX DZERO_DIVIDE25下面的查询中哪一个会产生笛卡尔集?()ASELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept dWHERE e.deptno = d.deptno;BSELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept d;CSELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept dWHERE e.empno =

12、101 and e.deptno = d.deptno;DSELECT e.empno, e.ename, e.deptno, d.deptno, d.loc FROM emp e, dept dWHERE e.deptno= d.deptno and d.deptno = 60;26当每个非主键列完全依赖于(整个)主键列时,关系设计属于下列哪一种形式()A第一范式 B第二范式C第三范式 D第四范式27一般在()中有机会使用:NEW和:OLDA游标 B存储过程C函数D触发器28在Oracle中,PL/SQL块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER)

13、 ISSELECT sal, comm FROM emp WHERE deptno = dnum;那么正确打开此游标的语句是()A.OPEN emp_cursor;B.OPEN emp_cursor FOR 20;C.OPEN emp_cursor USING 20;D.FOR emp_rec IN emp_cursor(20) LOOP END LOOP;29下面哪些是函数中的有效参数模式?() A.IN B. INOUT C.OUT D. OUT IN30( )是一个单一的逻辑工作单元。A记录 B数据库C事务 D字段1 数据定义语言是用于()的方法。选择一项A.确保数据的准确性 B、定义和

14、修改数据结构 C、查看数据 D、删除和更新数据2 要以自身的模式创建私有同义词,用户必须拥有()系统权限。选择一项A.CREATE PRIVATE SYNONYMB.CREATE PUBLIC SYNONYMC.CREATE SYNONYMD.CREATE ANY SYNONYM3 通常情况下,( )值可以唯一地标识数据库中的一行。选择二项A.ROWNUMB.PRIMARY KEYC.UNIQUED.ROWID4 Oracle中,表名应该严格遵循下列哪些命名规则()(选择二项)A.表名的最大长度为20个字符B.表名首字符可以为字母或下划线C.同一用户模式下的不同表不能具有相同的名称D.不能使用

15、Oracle保留字来为表命名5 在设计数据库时,要充分考虑数据的完整性或准确性。下面关于primary key和unique的描述错误的是()选择二项)A.primary key用来在表中设置主键,主键列的值是可以重复的,用来唯一标识表中的 每一条记录B.primary key列和unique列都不可以有null值C.设为unique的列的值是不能重复的,用来唯一区别unique列的值D.primary key列不可以有null值, 而unique列是可以有null的6 假定有一张表用户表users,其中一身份证字段ID_card。为了维护数据的完整性,在设计数据库时,最好对ID_card字段

16、添加约束,请问应该添加什么约束()(选择一项)A.primary key B、check C、default D、unique7 下面哪个命令不属于数据操纵语言(DML)( )(选择二项)A.ALTER B.INSERT C、 UPDATE D、 DROP8()操作符只返回由第一个查询选定但是没有被第二个查询选定的行。选择一项E.UNIONF.UNION ALLG.INTERSECTH.MINUS9EMPLOYEES表的结构如下:EMPLOYEE_ID NUMBER PRIMARY KEYFIRST_NAME VARCHAR2(25)LAST_NAME VARCHAR2(25)HIRE_DAT

17、E DATE考虑下面的语句。1.CREATE table new_emp (employee_id NUMBER,name VARCHAR2(30);2.INSERT INTO new_emp SELECT employee_id,last_name from employees;3.Savepoint s2;4.DELETE from new_emp;5.ROLLBACK to s2;6.DELETE from new_emp where employee_id=180;7.UPDATE new_emp set name=James;8.ROLLBACK to s2;9.UPDATE new

18、_emp set name =JamesWHERE employee_id=180;10.ROLLBACK;完成本次事务处理以后,以下说法正确的有( )(不定项选择)E.表中没有行。F.有一个姓名为James的员工。G.不能多次回滚到相同的保存点。H. 由于已经删除了员工ID180,因此最后一次更新未更新任何行。10删除emp表中所有数据,且可以rollback,以下语句哪个命令可以实现()(选择一项)A.truncate table empB.drop table empC.delete * from empD.delete from emp11你发出命令: DROP TABLE emp;

19、此时你还没有明确发出COMMIT命令。你能用什么命令撤消上面的drop语句所做的操作?( )选择一项A.关闭数据库B.什么命令都不可以,因为DDL语句不能被回滚C.发出一个ROLLBACK命令D.终断正在活动的会话12表ORDERS的结构定义如下:ORDER_ID NUMBER(4) NOT NULL;CUSTOMER_ID NUMBER(12) NOT NULL;ORDER_TOTAL NUMBER(10.2);下列哪两个语句,能检索出预定总量在100.00与2000.00之间的记录? ()不定项选择A.SELECT customer_id,order_id,order_total FROM

20、 orders HAVING order_total BETWEEN 100 AND 2000;B.SELECT customer_id,order_id,order_total FROM orders WHERE order_total BETWEEN 100 AND 2000;C.SELECT customer_id,order_id,order_total FROM orders WHERE order_total>=100 AND <=2000;D.SELECT customer_id,order_id,order_total FROM orders HAVING ON o

21、rder_total (100 and 2000) INCLUSIVE;E.SELECT customer_id,order_id,order_total FROM orders WHERE order_total>=100 AND order_total<=2000;13 以下哪些是有效的Oracle约束类型?( )(选择四项)A. UNIQUE B.NONUNIQUE C. CHECKD.CASCADE E. PRIMARY KEY F.CONSTANTG G.NOT NULL14更改oracle用户HR,使其变为不可用(锁定)状态()选择一项A.UPDATE USER HR

22、ACCOUNT DISABLE ;B.UPDATE USER HR ACCOUNT LOCK ;C.ALTER USER HR ACCOUNT LOCK ;D.ALTER USER HR ACCOUNT DISABLE ;15INSERT INTO TEST VALUES(&ID, &NAME); 语句在执行时将()选择一项A. 编译错:提示变量未定义B. 运行错:提示不能识别符号C. 将值&ID和&NAME插入到表中D. 提示用户输入输入ID和NAME的值,再将输入值插入表中16下面关于删除视图的说法哪一个是正确的()。(选择一项)A.删除视图后应立即用COM

23、MIT语句使更改生效B.删除视图后,和视图关联的表中的数据不再存在C.视图被删除后视图中的数据也将被删除D. 用dorp VIEW删除视图17()函数通常用来计算累计排名、移动平均数和报表聚合等。选择一项)A.汇总 B.分析C.分组D.单行18集合操作符Intersect的作用是()选择一项A.将两个记录集联接起来B.选择第一个查询有,而第二个没有的记录C.选择二个查询的交集D.选择第二个查询有,而第一个没有的记录19EMP1表包含下面这些字段。ENAME VARCHAR2(35)SALARY NUMBER(8,2)HIRE_DATE DATE管理部门想要一份已在公司工作了5年以上的员工名单。

24、以下哪个SQL语句可以显示需要的结果。()(选择一项)A.SELECT ENAME FROM EMP1 WHERE SYSDATE-HIRE_DATE>5; B.SELECT ENAME FROM EMP1 WHERE HIRE_DATE-SYSDATE>5;C.SELECT ENAME FROM EMP1 WHERE (SYSDATE-HIRE_DATE)/365>5;D.SELECT ENAME FROM EMP1 WHERE (SYSDATE-HIRE_DATE)*365>5;20在Oracle中,使用下列的语句: CREATE PUBLIC SYNONYM pa

25、rts FOR Scott.inventory; 完成的任务是()。(选择一项)A.需要给出schema被除去的对象名B.指定了新的对象权限C.指定了新的系统权限D.给Scott.inventory对象创建一个公用同义词parts21在Oracle中,有一个名为seq_id的序列对象,假定此时查看seq_id序列当前值显示为100,那么执行下面的sql insert into test(id, name) values(seq_id.NEXTVAL,'tom' ); 很不幸,这个insert没有执行成功,随后马上执行rollback,问:此时查看seq_id序列当前值显示为(

26、)选择一项 A. 99 B、100 C、101 D、不能确定22PL/SQL块中不能直接使用的SQL命令是()选一项A.SELECTB.INSERTC.UPDATED.DROP23在PL/SQL块中,以零作除数时会引发下列( )异常。(选择一项)A.VALUE_ERRORB.ZERO_DIVIDEC.VALUE_DIVIDED.ZERO_ERROR24在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是()(选择一项)A.select seq.ROWNUM from dual;B.select seq.NEXTVAL from dual; C.select

27、 seq.CURRVAL from dual;D.select seq.CURIVAL from dual;25当Select Into语句的返回没有数据时,将引发下列哪个异常?()选择一项A.No_Data_FoundB.To_Many_RowC.Too_Many_RowsD.Invalid_Number26创建序列时,若未指定Cycle选项,则当前值大于MaxValue时将()选择一项A.从MinValue重新开始循环B.重复使用MaxValue 值C.执行出错D.使用随机值27PL/SQL块中哪几部分是可选的()选择二项A.DeclareB.BeginC.ExceptionD.以上均是2

28、8在Oracle中,PL/SQL块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) ISSELECT sal, comm FROM emp WHERE deptno = dnum;那么正确打开此游标的语句是()(选择两项)E.OPEN emp_cursor(20);F.OPEN emp_cursor FOR 20;G.OPEN emp_cursor USING 20;H.FOR emp_rec IN emp_cursor(20) LOOP END LOOP;29在Insert触发器中可使用的引用有()选一项A.new B.Old C.:Update D.:

29、New和:Old30下面哪些是过程中的有效参数模式?()不定项选择 A.IN B. INOUT C.OUT D. OUT IN1.检索部门编号、部门名称、部门所在地及其每个部门的员工总数。select d.deptno,d.dname,d.loc,count(*) from emp e,dept d where e.deptno=d.deptno group by d.deptno,d.dname,d.loc;2.检索员工和所属经理的姓名。select e.ename 雇员,m.ename 经理 from emp e,emp m where e.mgr=m.empno;3. 检索工资等级处于第

30、四级别的员工的姓名。select e.ename from emp e inner join salgrade s on (e.sal between s.losal and s.hisal) where s.grade=4;4.检索工资等级高于smith的员工信息。select * from emp e join salgrade s on (e.sal between s.losal and s.hisal) where s.grade>(select distinct s.grade from emp e join salgrade s on (select sal from em

31、p where ename='SMITH') between s.losal and s.hisal);5.检索30部门中1980年1月份之前入职的员工信息。显示:员工号、员工名、部门号,部门名、入职日期。select empno,ename,d.deptno,d.dname,hiredate from emp,dept d where emp.deptno=d.deptno and d.deptno=30 and hiredate<to_date('1980-01-01','yyyy-mm-dd');6. 检索雇员的雇佣日期早于其经理雇佣

32、日期的员工及其经理姓名。select e.ename 雇员,m.ename 经理,e.HIREDATE 雇员的雇佣日期,m.hiredate 经理雇佣日期 from emp e,emp m where e.mgr=m.empno and e.hiredate<m.hiredate;7.按部门号(deptno) 及 工资(sal)排序检索公司的员工信息(要求部门号从大到小 ,部门号相同的按工资由低到高),显示的字段为:员工号、员工名、工资、部门号。select empno,ename,sal,deptno from emp order by deptno desc,sal;8.检索不同部门

33、经理的最低工资。select m.ename,e.empno,e.sal from emp e,emp m where e.mgr=m.empno and e.deptno in (select deptno from emp group by deptno) and e.sal in (select min(sal) from emp group by deptno);9.检索部门号及其本部门的最低工资。select deptno,min(sal) from emp group by deptno;10.检索从事clerk工作的员工姓名和所在部门名称。select e.ename,d.dna

34、me from emp e join dept d on e.deptno=d.deptno where e.job='CLERK'11.检索和名叫SCOTT的员工相同工资的员工信息,但不显示SCOTT。显示字段:员工号、员工名、工资。select empno,ename,sal from emp where sal =(select sal from emp where ename='SCOTT') and ename!='SCOTT'12. 检索与SCOTT从事相同工作的员工信息。select * from emp where job=(se

35、lect job from emp where ename='SCOTT');13.检索出员工表emp中的第3条到第8条记录。显示字段:emp表中的全部字段。select * from (select rownum num,e.* from emp e) where num>=3 and num<=8;14. 检索与30部门员工工资等级相同的员工姓名与工资。select * from emp e join salgrade s on (e.sal between s.LOSAL and s.HISAL) where s.grade=(select distinct

36、s.grade from emp e join salgrade s on (select avg(sal) from emp where deptno=30) between s.LOSAL and s.HISAL);15. 求分段显示薪水的个数。显示结果如下:DEPTNO 800-2000 2001-5000- - - 30 5 1 20 2 3 10 1 2select t1.deptno, "800-2000", "2001-5000" from ( select deptno , count(*) as "800-2000"

37、 from emp where sal between 800 and 2000 group by deptno ) t1 join ( select deptno , count(*) as "2001-5000" from emp where sal between 2001 and 5000 group by deptno) t2 on t1.deptno = t2.deptno;16. 用PL/sql实现输出7369号员工的姓名。-用PL/sql实现输出7369员工的姓名;set serveroutput on; - 将sql*plus的输出功能开启declare

38、-声明部分var_empno number(4) := 7369 ; -声明一个变量var_empno ,并给赋值,用:= 赋值var_name varchar2(10); -声明一个变量var_name var_sal number(9,2);begin -执行部分的开始 select ename ,sal into var_name ,var_sal from emp where empno = var_empno; dbms_output.put_line(var_empno | ' 的名字是 :' | var_name); -输出语句dbms_output.put_li

39、ne(var_empno | ' 的工资是 :' | var_ sal ); -输出语句end; -执行部分的结束,end后面要加 ;-执行结果为:7369 的名字是 : SMITHPL/SQL 过程已成功完成。17.编写一sql语句,将7369号员工的入职日期改为1997/7/1,工资提高800 ,其他信息不变。update emp set hiredate=to_date('1997/7/1','yyyy-mm-dd'),sal=sal+800 where empno=7369;18.假定现在有一张表,表名为T_emp ,其表结构和现有的em

40、p表结构完全相同,但是T_emp中没有记录,请编写一sql语句,实现将emp中部门编号为20的员工信息添加到T_emp中。19. 对所有员工,如果该员工职位是MANAGER,并且在DALLAS工作那么就给他薪金加15;如果该员工职位是CLERK,并且在NEW YORK工作那么就给他薪金扣除5;其他情况不作处理。要求:使用游标或函数编程实现。set serveroutput on;declare cursor c1 is select * from emp; c1rec c1%rowtype; v_loc varchar2(20);begin for c1rec in c1 loop selec

41、t loc into v_loc from dept where deptno = c1rec.deptno; if c1rec.job = 'MANAGER' and v_loc = 'DALLAS' then update emp set sal = sal * 1.15 where empno = c1rec.empno; elsif c1rec.job='CLERK' and v_loc = 'NEW YORK' then update emp set sal = sal * 0.95 where empno = c1re

42、c.empno; else null; end if; end loop; end;20. 对直接上级是'BLAKE'的所有员工,按照参加工作的时间加薪:1981年6月以前入职的员工加薪10、1981年6月以后入职的员工加薪5。要求:使用游标或函数编程实现。declare cursor c1 is select * from emp where mgr = (select empno from emp where ename='BLAKE'); -直接上级是'BLAKE'的所有员工 c1rec c1%rowtype;begin for c1rec

43、 in c1 loop if c1rec.hiredate < '01-6月-81' then update emp set sal = sal * 1.1 where empno = c1rec.empno; else update emp set sal = sal * 1.05 where empno = c1rec.empno; end if; end loop; end; 1.创建一个角色MYROLE,此角色具有建表,建视图的系统权限和查找SCOTT用户EMP,DEPT表的权限,将此角色授权给TEST用户。CREATE ROLE MYROLE;GRANT CRE

44、ATE TABLE,CREATE VIEW TO MYROLE;GRANT SELECT ON SCOTT.EMP TO MYROLE;GRANT SELECT ON SCOTT.DEPT TO MYROLE;CREATE USER TEST IDENTIFIED BY TEST;GRANT MYROLE TO TEST;2.创建EMP,DEPT两张表的副表(包括它们之间的约束)CREATE TABLE mydept AS SELECT * FROM dept;ALTER TABLE mydept ADD CONSTRAINT pk_mydept_deptno PRIMARY KEY(dept

45、no);CREATE TABLE myemp AS SELECT * FROM empALTER TABLE myemp ADD CONSTRAINT pk_myemp_empno PAIMARY KEY(empno);ALTER TABLE myemp ADD CONSTRAINT fk_myemp_mydept FOREIGN KEY(deptno) REFERENCES mydept(deptno);3.找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料select * from emp where (deptno=10 a

46、nd job=upper('manager') or (deptno=20 and job=upper('clerk ') or (job<>upper(manager) and job<>upper(clerk) and sal>=2000)4.找出不收取佣金或收取的佣金低于100的雇员select * from emp where nvl(comm,0)<100;5.显示不带有'R'的雇员姓名Select ename from emp where ename not like %R%;6.显示所有雇员的姓名

47、、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序Select ename,job,sal from emp order by job desc ,sal asc7.求哪些人工资在平均工资之上,列出姓名和工资。select ename,sal from emp where sal > (select avg(sal) from emp);8.显示除20部门外,部门平均工资在2500以上的部门,列出部门编号和平均工资。select avg(sal) , deptno from emp where deptno <>20 group by deptno having av

48、g(sal) > 2500;9.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。select * from emp where sal in (select sal from emp where deptno=30);10. 列出所有部门的详细信息和部门人数。select a.*,(select count(*) from emp where deptno=a.deptno) tot from dept a ;11. 列出各种工作的最低月收入。select job,min(sal+nvl(comm,0) from emp group by job;12. 返回工资水平(等级)高于

49、平均工资水平的员工详细信息。 select * from emp e join salgrade s on (e.sal between s.losal and s.hisal) where s.grade>(select distinct s.grade from emp e join salgrade s on (select avg(sal) from emp) between s.losal and s.hisal);13. 列出至少有两个员工的所有部门信息select * from dept where deptno in (select deptno from emp gro

50、up by deptno having count(*)>1);14. 查询emp表的第6行到第10行内容Select * from (select rownum r,e.* from emp e) where r between 6 and 10;15. 查询入职最早的前5到10名员工的姓名和入职日期(按年月日格式显示日期)Select ename,to_char(hiredate,yyyy-mm-dd) from (select ename,hiredate,rownum r from (select ename,hiredate from emp order by hiredate

51、 ) where rownum<=10) where r>=5;16.编写一sql语句,将7369号员工的入职日期改为1997/7/1,工资提高800 ,其他信息不变。 update emp set hiredate=to_date('1997/7/1','yyyy-mm-dd'),sal=sal+800 where empno=7369;17. 查询雇员和其直接领导姓名及他们所在部门名称,没有领导的雇员也要列出.select e.ename,ed.dname,m.ename,md.dname from emp e,emp m,dept ed,dep

52、t md where e.deptno=ed.deptno and e.mgr=m.empno(+) and m.deptno=md.deptno(+);18. 列出部门编号,部门名称,部门的员工数量,部门的平均工资.select d.deptno,d.dname,t.cou,t.avg from dept d,(select deptno,count(empno) cou,avg(sal) avg from emp group by deptno) t where d.deptno=t.deptno;19. 定义游标update_cur,根据职务调整雇员的工资,如果职务为“SALESMAN”或者“ANALYST”工资上调100元,如果职务为“MANAGER”工资上调200元,其它职务工资上调50元。DECLARE v_job emp.job%TYPE; CURSOR update_cur IS SELECT job FROM emp FOR UPDATE;BEGIN OPEN emp_cur;LOOP FETCH update_cur INTO v_job; EXIT WHEN emp_c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论