oracle面试测试题.doc_第1页
oracle面试测试题.doc_第2页
oracle面试测试题.doc_第3页
oracle面试测试题.doc_第4页
oracle面试测试题.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

典型oracle面试题一:sql题1、 假设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。现要建立关于系、学生、班级的数据库,关系模式如下:班级表class(班号classid,专业名subject,系名deptname,入学年份entertime,人数num)学生表student(学号studentid,姓名name,年龄age,班号classid)系department(系号departmentid,系名deptname)要求用sql语句完成如下功能: (1)建表,并实现如下要求A:每个表根据实际定义好主外键关系B:系表中编号字段利用数据库自动化增长值实现C:每个班级的人数不超过30人D:学生年龄介于15到30之间E:学生姓名不能为空,系名不能重复(2)输入部分测试数据department表:1 数学2 计算机3 化学4 中文5 经济学class表:101 软件 计算机 1995 20102 微电子 计算机 1996 30111 无机化学 化学 1995 29112 高分子化学 化学 1996 25121 统计 数学 1995 20131 现代语言 中文 1996 20141 国际贸易 经济学 1997 30142 国际金融 经济学 1998 14student表:8101 张三 18 1018102 钱四 16 1218103 王玲 17 1318104 李飞 19 1028105 王五 20 141(3)完成下列查询:A:列出所有人数大于等于28的系的编号和名称B:列出所有开设超过两个专业的系的名字C:显示每个学生的学号、姓名、专业、系名信息2、oracle函数的使用针对scott.emp表,实现如下查询操作:(1) 把员工姓名和工作连接在一起,中间用“-”分隔显示。(2) 分别显示工姓名的前三个字符和第四个字符后的内容(3) 显示字母T在员工姓名中第一次和第二次出现的位置(4) 显示12年前参加工作的员工信息(5) 查询在当月倒数第三天参加工作的员工信息(6) 显示每个员工的工作天数(7) 按照每月30天,计算每个员工的日薪金(8) 按照年和月的格式显示员工参加工作的时间(如 SMITH 1980 12)(9) 查询在1987年2月到5月参加工作的员工信息(包括2月和5月)(10) 显示每个员工的津贴信息,没有津贴就显示0(11) 分别显示员工的总人数和津贴不为空的员工人数(12) 显示部门最低工资大于900的部门和最低工资(13) 显示每个部门工资在1400以上的所有员工的工资总额(14) 显示部门名称以及该部门的员工总数,没有员工的以0显示(15) 显示每个部门中最高工资的员工信息3、员工培训系统的案例Employee员工表:EID Name Department Job Email password 10001 李明 SBB EG10003 李四 LUCK ITM11045 胡斐 SBB EG10044 张三 MTD ETN10023 王刚 MMM ETNTraining 培训记录表:CourseId EID Course Grade orders1 10001 T-SQL 603 11045 java 712 10003 oracle 591 10003 T-SQL 903 10044 java 782 10001 oracle 692 10023 oracle 703 20001 Java 693 10078 Java 58完成如下sql语句:(1)建立两个表的表结构,自行分析,根据需要设置主键(2)用sql语句进行册书数据的添加(3)列出所有员工参加培训的情况,要求显示:EID,Name,department,course,grade用一条sql语句完成(4)列出未参加培训的员工信息,显示格式如上(5)列出所有各课成绩最高的员工信息,显示格式如上(6)把所有表2有但表1没有的员工编号插入表1中,一条语句完成(7)统计各部门的人数(8)统计各部门中姓李的人数4、pl/sql练习(1)输入一个员工号,输出该员工的姓名、薪金和工作天数(2)接手一个员工号,如果该员工职位是”MANAGER”,并且在DALLAS工作,那么加薪15%,如果职位是CLERK,并在NEW YORK工作,降薪5%,其他情况不做处理。(3)接收一个员工号,输出这个员工的所在部门的平均工资。(4)接收一个员工号,如果直接上机是BLAKE,而且1981年6月以前工作的,加薪10%,0981年6月以后工作的加薪5%。(5)接收一个员工号,在部门10工作的加薪10%,部门20工作的加薪20%,一次类推(6)接收一个员工号,检查该雇员的薪水是否在有效范围内。不同职位的薪水范围为:DesignationRangeClerk15002500Salesman25013500Analyst35014500Others4501 and above如果薪水在此范围内,则显示消息“Salary is OK!”,否则,更新薪水为该范围内的最小值。(7)接收两个数相除并且显示结果。如果第二个数为0,则显示信息“Didnt your mother tell you not to DIVIDE BY ZERO?”。(8)根据雇员名输出雇员工资,并为工资低于2000的雇员增加20%,显示雇员增加工资后的新工资(9)为emp表进行更新,根据雇员编号,把comm非空的加100元,其他的加200元,并存入emp表(10)输入雇员的编号,根据雇员的岗位不同ANALYST 加100,CLERK加200,MANAGER加300,PRESIDENT加400,SALESMAN加500.输出雇员的原工资和新工资,不要提交到数据库。(用if语句)(11)利用case语句完成第10题的要求5、索引的使用aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引, 请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因。6、复合查询测试客户表a(id name address) 登陆流水表b(id time) 购物流水表c(id time productid productnum) (1)求每个客户的最新登陆时间time,姓名name,客户id? (2).最新登陆并且已经购买商品的客户id,name,登陆的时间time(一条sql语句) 一个表student中有班级classid,学号id,成绩grade (1)计算各个班的平均成绩 (2).查找比该班平均成绩高的学生的班级classid,学号id,成绩grade二:选择题:1. 你判断下面语句,有什么作用?(选择1项)GRANT update ON inventory TO joe WITH GRANT OPTION; A. 一个系统权限被授予用户JOEB. 一个对象权限被授予用户JOEC. 用户JOE被授予在这个对象上的所有权限D. 一个系统权限和一个对象权限被授予用户JOE2. 表(PERSONNEL)包含以下列:(选择1项)ID NUMBER(9) LAST_NAME VARCHAR2(25) FIRST_NAME VARCHAR2(25) MANAGER_ID NUMBER(9) 假设:部门经理是一名职员,判断下面两个语句执行结果有何不同:SELECT p.last_name, p.first_name, m.last_name, m.first_name FROM personnel p, personnel m WHERE m.id = p.manager_id; SELECT p.last_name, p.first_name, m.last_name, m.first_name FROM personnel p, personnel m WHERE m.manager_id = p.id; A. 其中一个语句不能执行B. 其中一个语句不是自连接C. 结果相同,显示顺序不同D. 结果不同,显示相同3. 哪一子句可实现 SELECT 语句查询单价小于5.00 的 ID_NUMBER ? (选择1项)A. WHERE price 5.00 B. HAVING price 5.00 C. ORDER BY price 5.00 D. GROUP BY price 5.00 4. 判断下面句子:(选择1项)SELECT i.id_number, m.id_number FROM inventory i, manufacturer m WHERE i.manufacturer_id = m.id_number ORDER BY 1; 哪一子句可以防止表INVENTORY和表MANUFACTURER发生完整外部联接? A. ORDER BY 1; B. SELECT i.id_number, m.id_number FROM inventory I, manufacturer m C. WHERE i.manufacturer_id = m.id_number D以上都不对5. 判断这PL/SQL 代码块:(选择1项)BEGIN FOR i IN 1.6 LOOP IF i = 2 OR i = 3 THEN null; ELSE INSERT INTO example(one) VALUES (i); END IF; ROLLBACK; END LOOP; COMMIT; END; 有多少行被插入到表 EXAMPLE ? A. 0 B. 1 C. 2 D. 3 6. 你关闭表INVENTORY上的ID列上的主键约束,且修改表INVENTORY 上的所有值后,你需要激活约束并校验列值是否违反约束。如果ID 值不符合约束,错误信息将返回,判断下面命令:(选择1项)ALTER TABLE inventory ENABLE CONSTRAINT inventory_id_pk; 哪种说法正确? A. 将得到想要的结果. B. 语句执行,但不能激活约束. C. 语句执行,但不能校验ID是否违反约束. C. 将返回语法错误. 7. 表 CLASSES 和 表 SCHEDULE 结构如下: CLASSES:ID NUMBER(9) CLASS_NAME VARCHAR2(20) TEACHER_ID NUMBER(9) SCHEDULE:CLASS_TIME DATE CLASS_ID NUMBER(9) 你建一个视图显示每一课的课名、课时,并按教师ID排序,判断下面语句将返回何种结果? (选择1项)CREATE VIEW class_schedule ASSELECT C.class_name, s.class_time FROM classes c, schedule s WHERE C.id = s.class_id; A. 语句创建视图 CLASS_SCHEDULE 且可产生预期结果. B. 语句创建视图 CLASS_SCHEDULE 但不能产生预期结果.C. 语法错误,因为视图不可基于连接查询. D. 语法错,因为语句未包含 ORDER BY 子句. 8. 判断是否同时满足两个条件,应该用下面哪个操作符? (选择1项)A. OR B. NOT C. AND D. None 9. 哪一个算术运算将返回一个数值? (选择1项)A. 01-FEB-1998 + 25 B. 03-DEC-1997 - 30 C. 07-JUL-1997 + (480/24) D. TO_DATE(01-JAN-1998) - TO_DATE(01-DEC-1996) 10. 哪句可以实现用户 Marilyn 的表INVENTORY不用指定其属主,直接供所有用户引用? (选择1项)A. CREATE SYNONYM inventory FOR inventory; B. CREATE PUBLIC SYNONYM inventory FOR marilyn; C. CREATE PUBLIC SYNONYM inventory FOR marilyn.inventory; D. CREATE PUBLIC inventory SYNONYM FOR marilyn.inventory; 11. 在一个 PL/SQL IF -THEN 语句中, 什么值将引起条件语句执行? (选择1项)A. NULL B. TRUE C. FALSE D. 以上都不对12. 哪句可以实现显示 id 和 description ,条件满足订单时间在 January 1, 1997 以前的,且单价小于 1.00 或者大于 5.00 的, 结果用订单时间降序排列。(选择1项)A. SELECT id_number, description FROM inventory WHERE price IN (1.00, 5.00) OR order_date 01-JAN-97 ORDER BY order_date DESC; B. SELECT id_number, description FROM inventory WHERE price BETWEEN 1.00 AND 5.00 OR order_date 01-JAN-1997 ORDER BY order_date; C. SELECT id_number, description FROM inventory WHERE price 5.00 AND order_date 01 -Jan-97 ORDER BY order_date ASC; D. SELECT id_number, description FROM inventory WHERE (price 5.00) AND order_date 8.00 OR quantity 1000); A. 返回单价大于8.00且数量大于1000的存货的 货号、种类、单价信息 B. 返回单价大于8.00或者数量大于1000的存货的 货号、种类、单价信息. C. 返回单价大于8.00或者数量大于1000且有制造商号的存货的 货号、种类、单价信息.D. 返回单价大于8.00或者数量大于1000的制造商的所有存货的 货号、种类、单价信息. 17. 判断 IF 语句: IF v_num 1 THEN v_example := 1; ELSIF v_num 5 THEN v_example := 2; ELSIF v_num 10 THEN v_example := 3; ELSIF v_num (SELECT MIN(salary) FROM employees GROUP BY department_id);B.SELECT * FROM employees WHERE salary = (SELECT AVG(salary) FROM employees GROUP BY department_id);C.SELECT DISTINCT department_id FROM employeesWHERE salary ANY (SELECT AVG(salary FROM employees GROUP BY department_id);D.SELECT department_id FROM employeesWHERE salary ALL(SELECT AVG(salary) FROM employees GROUP BY AVG(salary);28. EMPLOYEES表结构如下:EMPLOYEE_IDNUMBERNOT NULL, PRIMARY KEYLAST_NAMEVARCHAR2(30)FIRST_NAMEVARCHAR2(30)JOB_IDNUMBERSALNUMBERMGR_ID字段的数据类型为NUMBER,参照EMPLOYEE_ID列和DEPARTMENT_ID列(NUMBER)。现在需要在FIRST_NAME和LAST_NMAE字段上建立名为NAME_IDX的索引,下列哪个SQL语句能执行这项任务:(选择1项)A.CREATE INDEX NAME_IDX(first_name, last_name);B.CREATE INDEX NAME_IDX(first_name AND last_name);C.CREATE INDEX NAME_IDX ON employees(first_name, last_name);D.CREATE INDEX NAME_IDX FOR employees(first_name, last_name);29. Oracle会为下列哪些约束自动建立索引:(选择1项)A.CheckB.UniqueC.Primary keyD.Foreign key41.表(TEACHER)包含以下列: ID NUMBER(7) PK SALARY NUMBER(7,2) SUBJECT_ID NUMBER(7) 判断以下两个SQL语句:(1)SELECT ROUND(SUM(salary),-2) FROM teacher ;(2)SELECT subject_id, ROUND(SUM(salary),-2) FROM teacher GROUP BY subject_id ; 有什么不同结果? (选择1项)A. 语句1将返回每个老师一个结果B. 语句2将返回多个结果C. 结果相同,显示不同 D. 将有一个句子产生错误 42. 哪一个权限允许你删除其他用户的序列对象? (选择1项)A. DROP SEQUENCE B. DELETE SEQUENCE C. DROP ANY SEQUENCE D. DELETE ANY SEQUENCE 43. 哪个命令属于隐含提交命令? (选择1项)A. CREATE B. UPDATE C. COMMIT D. SELECT 44. 你认为下面句子将完成什么任务? (选择1项)CREATE PUBLIC SYNONYM parts FOR marilyn.inventory; A. 一个新对象被创建。B. 一个新对象权限被赋予。C. 一个新系统权限被赋予。 D. 一个对象的同义词被创建。 46. 哪条 SELECT 语句可得到单价大于5.00的记录条数? (选择1项)A. SELECT SUM(*) FROM inventory WHERE price 5.00; B. SELECT COUNT(*) FROM inventory ORDER BY price; B. SELECT COUNT(*) FROM inventory WHERE price 5.00; D. SELECT SUM(*) FROM inventory GROUP BY price 5.00; 47. 关于 PL/SQL 块的执行部分下列说法正确的是?(选择1项)A. PL/SQL 表达式可以包含分组函数. B. PL/SQL表达式不可以包含SQL函数. C. 在SQL 语句中部分分组函数可用. D. 以上都不对 48. 判断 SQL 语句: SELECT * FROM USER_TABLES; 将得到什么结果? (选择1项)A. 你所拥有的所有表的信息 B. 你能查询的所有表的信息C. 数据库的所有表的信息 D. 数据字典的所有表的信息 49. 查找与用户指定雇员ID的部门、薪金相同的所有雇员的姓名、部门、薪金,以下那条语句可以实现?(选择1项)A. SELECT name, department_id, salary FROM employee WHERE (department_id, salary) IN (SELECT department_id, salary FROM employee WHERE employee_id = &1) AND bonus IS NULL; B. SELECT name, department_id, salary FROM employee WHERE (department_id, salary, bonus) = (SELECT department_id, salary, bonus FROM employee WHERE employee_id = &1) AND bonus = NULL; C. SELECT name, department_id, salary FROM employee WHERE (department_id, salary) = (SELECT department_id, salary FROM employee WHERE employee_id = &1) AND bonus IS NULL; D. SELECT name, department_id, salary FROM employee WHERE (SELECT department_id, salary FROM employee WHERE employee_id = &1) AND bonus = 0; 50. PL/SQL的哪一部分实现对数据的操作? (选择1项)A. 头部分B. 列外部分C. 执行部分D. 声明部分51. 判断SCOTT拥有多少个角色?(选择1项)CREATE ROLE manager; CREATE ROLE clerk; CREATE ROLE INVERTORY; CREATE USER scott IDENTIFIED BY tiger; GRANT inventory TO clerk GRANT clerk TO manager GRANT manager TO scott A. 0 B. 1 C. 2 D. 3 52. 表 TEACHER 包含如下字段:列名可为空否?数据类型TEACHER_IDNOT NULLNUMBER(9)NAMEVARCHAR2(25)SALARYNUMBER(7,2)SUBJECT_IDNOT NULLNUMBER(3)SUBJECT_DESCRIPTIONVARCHAR2(2)你需要将理科教师的工资上浮8%,理科教师的SUBJECT_ID是011,你需用哪一句实现? (选择1项)A. UPDATE teacher SET salary = salary * 1.08 WHERE subject_description LIKE SCIENCE B. UPDATE teacher SET salary = salary * .08 WHERE subject_description LIKE SCIENCE AND subject_id = 011 C. UPDATE teacher SET salary = salary * 1.08 WHERE subject_id = 011; D. UPDATE teacher SET salary = salary + (salary * .08) WHERE subject_description LIKE SCIENCE OR subject_id = 011 53. 根据条件,你将使用哪条语句? (选择1项)1) 修改表INVENTORY的 PRICE 列值的精度为6含2位小数且PRICE 的默认值为 $5.002)表INVENTORY中无记录. A. ALTER TABLE inventory ADD OR REPLACE (price NUMBER(8,2) DEFAULT 5); B. ALTER TABLE inventory MODIFY (price NUMBER(6,2) DEFAULT 5); C. ALTER TABLE inventory MODIFY COLUMN (price NUMBER(6,2) DEFAULT $5.00)D. 不能减小列长度. 54. 哪一个是 SQL*Plus 命令? (选择1项)E. UPDATE F. CHANGE G. SELECT H. ALTER TABLE 56. 判断 IF 语句: IF v_num 5 THEN v_example := 1; ELSIF v_num 10 THEN v_example := 2; ELSIF v_num 20 THEN v_example := 3; ELSIF v_num 39 THEN v_example := 4; ELSE v_example := 5; END IF; 如果 V_NUM 是 37, 什么值将被赋值给 V_EXAMPLE? (选择1项)E. 1 F. 2 G. 3 H. 4 57. PL/SQL 块中哪一部分包含 WHEN OTHERS 子句? (选择1项)A. 头部分B. 异常处理部分C. 执行部分D. 声明部分59、在oracle中哪个操作符用于两个或多个字符串合并在一起,或者将一个字符串与一个数据值合并在一起。(选择1项)A)+B)&C)#D)|60、下列哪个集合操作符返回两个查询所选择的所有不同的行。(选择1项)A)UnionB)Union allC)Union onlyD)Intersect62、哪一子句可实现 SELECT 语句查询员工平均工资小于5000的部门信息 ? (选择1项)E. GROUP BY dept_id WHERE AVG(sal) 5000 F. GROUP BY AVG(sal) HAVING AVG(sal) 5000 G. GROUP BY dept_id HAVING AVG(sal) 5000 H. GROUP BY AVG(sal) 15.00; B. SELECT AVG(*) FROM products WHERE price 15.00; D. SELECT AVG(price) FROM products WHERE price 15.00; D. SELECT AVG(DISTINCT price) FROM products GROUP BY price 1 5.00; 69. 查找和

温馨提示

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

评论

0/150

提交评论