湘潭大学oracle试卷.doc_第1页
湘潭大学oracle试卷.doc_第2页
湘潭大学oracle试卷.doc_第3页
湘潭大学oracle试卷.doc_第4页
湘潭大学oracle试卷.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

注:如果题目无特殊说明,本试卷所用的表如下所示:employeesemployee_idnumber(6,0)manager_idnumber(6,0)department_idnumber(4,0)first_namevarchar2(20)last_namevarchar2(25)emailvarchar2(25)phone_numbervarchar2(20)hire_datedatejob_idvarchar2(10)salarynumber(8,2)commission_pctnumber(2,2)departmentsdepartment_idnumber(4,0)department_namevarchar2(30)manager_idnumber(6,0)location_idnumber(4,0)locationslocation_idnumber(4,0)street_addressvarchar2(40)postal_codevarchar2(12)cityvarchar2(30)state_provincevarchar2(25)country_idchar(2)countriescountry_idchar(2)country_namevarchar2(40)region_idnumberregionsregion_idnumberregion_namevarchar2(25)jobsjob_idvarchar2(10)job_titlevarchar2(35)min_salarynumber(6,0)max_salarynumber(6,0)job_historyemployee_idnumber(6,0)start_datedateend_datedatejob_idvarchar2(10)department_idnumber(4,0)一、填空(20空=20分)1.oracle有(内置函数)和(用户自定义函数)两种函数2.用户要得到自己能访问的所有表的信息,要查看(all_tables)视图3.启动和关闭oracle数据库的命令分别是(startup)和(shutdown)4.查看一个表或视图的结构的命令是(describe)5.把查询结果按salary的降序排序应该在查询语句中使用(order by salary desc)6.逻辑运算符中优先级最高的是(not)最低的是(or)7.通配符%表示(任意零个或多个字符)8.oracle数据库中的字符串连接符是(|)9.select instr(HelloWorld,w) from dual的查询结果是(0)看。10.select trunc(1542.35,-2) from dual的查询结果是(1500)看。11.在查询语句中去掉重复记录,应该在查询语句加上(distinct)选项12.当对一个表定义一个主键时,系统自动会为该表建立(唯一)索引13.rollup操作符中一共有n个表达式,一共要执行(n+1)次grouping操作14.改变会话时区,使用(alter session set time_zone)命令15.当一个select语句块在一条查询语句多次使用时,我们可以使用(with)子句来提高性能16.正则表达式m,n、|分别表示(连续的任意mn个数字字符),(将两个匹配条件进行逻辑“或”运算)二、选择题(10题=20分)1.设系统日期为今天,select to_char(to_date(85-11-12,RR-MM-DD),YYYY-MM-DD) from dual的查询结果为(C)A.2085-11-12B. 85-11-12 C.1985-11-12 D.2185-11-122. 与where salary between 2500 and 3500等价的语句是(D)A.salary2500 or salary 2500 and salary =2500 or salary =2500 and salary =35003. 下面哪一个like命令会返回名字像HOTKA的行(B)A.where last_name like _HOT% B. where last_name like H_T% C. where last_name like %TKA_ D. where last_name like %TOK%4. oracle数据库默认的最高管理员是(C)A.administrator B.sysman C.sys D.sa5. 将字符串05-3月-2009转换成日期,下列写法正确的是(D)A.to_date(05-3月-2009,dd-mm-yyyy) B. to_date(05-3月-2009, yyyy -mm- dd)C. to_date(05-3月-2009, yyyy -mon- dd)D. to_date(05-3月-2009,dd-mon-yyyy)6. 下列哪条语句与select employee_id,last_name from employees where salary(select min(salary) from employees)等价(B)A. select employee_id,last_name from employees where salary in (select min(salary) from employees) B. select employee_id,last_name from employees where salaryall (select salary from employees) C. select employee_id,last_name from employees where salaryany (select salary from employees) D. select employee_id,last_name from employees where salary(select salary from employees)7. 下列语句正确的是(D)A.select department_id,avg(salary) from employees where department_id=50B. select department_id,avg(salary) from employees having department_id=50C. select department_id,avg(salary) from employees order by department_idD. select department_id,avg(salary) from employees group by department_id8. 下列语句不正确的是(B)A.select sysdate-hire_date from employees B. select sysdate+hire_date from employeesC. select sysdate-100 from employeesD. select sysdate+100 from employees9. 下列语句哪两条是等价的(D)1)select employee_id,last_name,department_name from employees natural join departments2)select employee_id,last_name,department_name from employees full join departments3)select employee_id,last_name,department_name from employees join departmentsusing (department_id)4)select employee_id,last_name,department_name from employees a join departments b on(a.department_id=b.department_id)A.1和3 B.1和4 C.2和4 D.3和410.设一个名为test_seq的sequence,其当前值为100,每次增长10。用户A执行select test_seq.nextval from dual,接着用户B执行select test_seq.nextval from dual,接着用户A执行select test_seq.currval from dual, 接着用户B执行select test_seq.currval from dual,这四条语句分别得到的结果是(D)A.110,120,120,120 B.110,110,110,110 C.120,120,120,120 D.110,120,110,120三、判断题(10题=10分)1. 对一个表建立索引会改变表中行的内部顺序()2. 从一个表中删除元组时,delete和drop table命令可以起到同样的效果()3. delete可以有选择的删除记录,使用rollback语句可以取消这个命令的执行()4. 使用alter table命令的add选项向一个已存在的表中添加一个新的属性列时,新列的每一行最初的值均为null。只有当一个表还没有行的时候,才可以对添加的列用not null约束。()可以在非空表中添加一个同时有not null约束和default的新的属性列5.SGA是针对某一服务器进程而保留的内存区域,它是不可以共享的 ()【系统全局区又称SGA (System Global Area)主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA是不能共享的)】6. create table as select能够创建一个复制表对象()7. to_char函数可以将数字和日期转变成字符()8. 建立视图时,如果使用了with check option子句,则不能通过该视图来修改数据()【with check option -更新后的每一条数据都要满足创建视图时指定的where条件】【with read only -只读视图】9. minus和intersect分操作符分别表示“交”和“差”( )10. tablespace是oracle数据库中最大的逻辑存储单位()四、综合题(10题=50分)1.改正下列查询语句中的错误,写出正确的语句select employee_id,last_name sal*12 ANNUAL SALARYfrom employeeswhere nvl(commission_pct,not_pct)=not_pct;改正后为:select employee_id,last_name, salary*12 ANNUAL SALARYfrom employeeswhere nvl(commission_pct,0)=0;【或者where commission_pct is null】2.用sql语言在oracle数据库中建立一个名为emp的表,其表结构如下:列名IDlast_namefirst_namesalaryhire_date是否为主键Yes默认值系统当前日期数据类型numbervarchar2varchar2numberdate长度725257create table emp(id number(7) constraint emp_id_pk primary key,last_name varchar2(25),first_name varchar2(25),salary number(7),hire_date date default sysdate)3.创建2个用户testA和testB,密码为testA、testB,然后创建一个角色demo,并将建立连接、建表、建视图及对hr用户的employees表的select等权限赋给该角色,然后将该角色赋给testA和testB。写出以上语句。create user testA identified by testA;create user testB identified by testB;create role demo;grant create session,create table,create view to demo;grant select on hr.employees to demo;grant demo to testA,testB;4.建立一个名为dept的视图,视图里包含列为departmen_id,平均salary(命名为avg_salary),最高salary(命名为max_salary),最小salary(命名为min_salary),视图里包含数据为平均salary大于5000。写出建立该视图的语句。create or replace view dept as select department_id,avg(salary) avg_salary,max(salary) max_salary,min(salary) min_salary from employees group by department_id having avg(salary)5000;5.把employees表中department_id为80的employee_id,last_name,first_name,salary,hire_date数据分别插入第2题所建立的emp表的id,last_name,first_name,salary,hire_date中,然后删除emp表中id为3的记录,将hire_date在2000年1月1日之前的记录的工资增长10%,并将以上所有操作提交。insert into emp select employee_id,last_name,first_name,salary,hire_date from employees where department_id=80;delete from emp where id=3;update empset salary=salary*1.1where hire_date( SELECT AVG(salary) FROM employees e2 WHERE e1.department_id=e2.department_id GROUP BY e2.department_id )8.建立一个除job_id等于IT_PROG和last_name等于De Haan及De Hann的下属员工之外公司管理层次报表,开始位置为公司的最高管理人,即manager_id为空。报表结果示例如下:last_nameemployee_idmanager_idKing100Kochhar101100Greenberg108101Fawiet109108Chen110108Sciarra111108select last_name,employee_id,manager_idfrom employeeswhere job_idIT_PROGstart with manager_id is nullconnect by prior employee_id=manager_id and last_nameDe Haan;9.企业要提高员工(employees)的工资(salary)增加的标准是:从开始上班(hire_date)至今没有超过5年的员工的工资在原来的基础上增加10%,大于5年小于等于10年的员工的工资增长20%,10年以上的增长30%。试用一条sql语句完成上述操作。update employeesset salary=(case when hire_date add_months(sysdate,-5*12) then salary*1.1when hire_date add_months(sysdate,-10*12) then salary*1.2when hire_date add_months(sysdate,-10*12) then salary*1.3else salary end);【case表达式

温馨提示

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

评论

0/150

提交评论