真题1 某国企银行数据库工程师笔试题
一、选择题
1.下列不属于Oracle的逻辑结构的是( )
A.区
B.段
C.数据文件
D.表空间
2.下面不是Oracle的用户的是( )
A.SYSDBA
B.SYSTEM
C.SCOTT
D.SYS
3.下面情况中,会让普通用户连接到Oracle数据库,但不能创建表的是( )
A.授予了CONNECT的角色,但没有授予RESOURCE的角色
B.没有授予用户系统管理员的角色
C.数据库实例没有启动
D.数据库监听没有启动
4.SELECT语句在带有下列哪个选项中的子句时可以在表的一行或多行放置排它锁( )
A.FOR INSERT
B.FOR UPDATE
C.FOR DELETE
D.FOR REFRESH
5.在Oracle中,可以释放锁的命令是( )
A.INSERT
B.DELETE
C.ROLLBACK
D.UNLOCK
6.在Oracle中,当以SYSDBA登录,CUSTOMER表位于MARY用户方案中,下面语句中,能为数据库中的所有用户创建CUSTOMER表的同义词的是( )
A.CREATE PUBLIC SYNONYM CUST ON MARY.CUSTOMER;
B.CREATE PUBLIC SYNONYM CUST FOR MARY.CUSTOMER;
C.CREATE SYNONYM CUST ON MARY.CUSTOMER FOR PUBLIC;
D.不能创建CUSTOMER的公用同义词。
7.在Oracle中,下列关于PL/SQL的描述中,正确的是( )
A.PL/SQL代表Power Language/SQL
B.PL/SQL不支持面向对象编程
C.PL/SQL块包括声明部分、可执行部分和异常处理部分
D.PL/SQL提供的四种内置数据类型是CHARACTER、INTEGER、FLOAT、BOOLEAN
8.在Oracle数据库中,下面关于函数的描述中,正确的是( )
A.SYSDATE函数返回Oracle服务器的日期和时间
B.ROUND数字函数按四舍五入原则返回与指定十进制数最靠近的整数
C.ADD_MONTHS日期函数返回指定两个月份天数的和
D.SUBSTR函数从字符串指定的位置返回剩余的子串
9.阅读下面的PL/SQL程序块:
运行上面的程序,下面选项中能永久保存到数据库中的更改有( )(多选题)
A.INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(50000,'LDD', 'FRIK');
B.INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(32000,'CHUNG', 'MIKE');
C.INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(35000,'WANG', 'FRED');
D.INSERT INTO EMPLOYEE(SALARY,LAST_NAME,FIRST_NAME) VALUES(40000,'WOO', 'DAVID');
10.在Oracle数据库中,表VENDOR包含以下列:
下面对表VENDOR运用分组函数的子句合法的是( )
A.FROM MAX(ORDER_DT)
B.SELECT SUM(ORDER_DT)
C.SELECT SUM(ORDER_AMOUNT)
D.WHERE GROUP BY ORDER_D
11.下列不适合建立索引的属性有( )
A.经常出现在GROUP BY字句中的属性
B.经常参与连接操作的属性
C.经常出现在WHERE字句中的属性
D.经常需要进行更新操作的属性
12.在SQL Server 2000中,如果希望用户U1在DB1数据库中具有查询T1表的权限,那么正确的授权语句是( )
A.GRANT SELECT ON DB1(T1) TO U1
B.GRANT SELECT TO U1 ON DB1(T1)
C.GRANT SELECT TO U1 ON T1
D.GRANT SELECT ON T1 TO U1
13.数据模型定义了数据库中数据的组织、描述、存储和操作规范,可以分为概念模型、数据结构模型和物理模型三大类。概念模型的典型代表是( )
A.实体-联系模型
B.关系模型
C.面向对象模型
D.网状模型
14.以下关于查询语句叙述错误的是( )
A.查询语句的功能是从数据库中检索满足条件的数据
B.查询的数据源可以来自一张表,或多张表甚至是视图
C.查询的结果是由0行或是多行记录组成的一个记录集合
D.不允许选择多个字段作为输出字段
15.关于视图的属性列有如下说法,正确的是( )
A.组成视图的属性列名应该全部指定
B.组成视图的属性列名可以省略一部分或者指定一部分,其他隐含在子查询中
C.组成视图的属性列名或者全部省略或者全部指定,别无选择
D.组成视图的属性列名应该全部省略
二、应用题
已知有如下4张表:
学生表:STUDENT(S#,SNAME,SAGE,SSEX)
课程表:COURSE(C#,CNAME,T#)
成绩表:SC(S#,C#,SCORE)
教师表:TEACHER(T#,TNAME)
其中,S#代表学号,SNAME代表学生姓名,SAGE代表学生年龄,SSEX代表学生性别,C#代表课程编号,CNAME代表课程名字,T#代表教师编号,TNAME代表教师名字,SCORE代表成绩。
根据以上信息按照下面要求写出对应的SQL语句。
1.查询课程编号为“001”的课程比编号为“002”的课程成绩高的所有学生的学号
2.查询平均成绩大于60分的学生的学号和平均成绩
3.查询所有学生的学号、姓名、选课数、总成绩
4.查询姓“李”的老师的个数
5.查询没学过“李美玲”老师所教的课程的学生的学号和姓名
6.查询学过编号为“001”的课程并且也学过编号为“002”的课程的学生的学号和姓名
7.查询学过“李多多”老师所教的所有课程的学生的学号和姓名
8.查询课程编号为“002”的总成绩
9.查询所有课程成绩小于60分的学生的学号和姓名
10.查询没有学全所有课程的学生的学号和姓名
11.查询至少有一门课程与学号为“1001”的学生所学课程相同的学生的学号和姓名
12.查询所学课程和学号为“001”的学生所有课程一样的其他学生的学号和姓名
13.把“SC”表中“李多多”老师教的课程的成绩都更改为此课程的平均成绩
14.查询没有学习过“1002”号课程的学生的学号和姓名
15.删除学习“李多多”老师所教的课程的SC表记录
16.向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号为“003”课程的学生的学号、编号为002的课程的平均成绩
17.按平均成绩从高到低显示所有学生的“数据库”“企业管理”“英语”三门课程的成绩,其中数据库的c#为004,企业管理的c#为001,英语的c#为006,按如下形式显示:
学生ID 数据库 企业管理 英语 有效课程数 有效平均成绩
18.查询各科成绩最高和最低的分数,以如下形式显示:课程ID 最高分 最低分
19.按各科平均成绩从低到高和及格率的百分数从高到低排列,以如下形式显示:
课程号 课程名 平均成绩 及格百分数
20.查询如下课程平均成绩和及格率的百分数(用1行显示),其中企业管理为001,马克思为002, UML为003,数据库为004
21.查询不同老师所教不同课程平均分从高到低显示
22.查询如下课程成绩第3名到第6名的学生成绩单,其中企业管理为001,马克思为002,UML为003,数据库为004,以如下形式显示:
学生ID 学生姓名 企业管理 马克思 UML 数据库 平均成绩
23.使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计各分数段人数:课程ID和课程名称
24.查询学生平均成绩及其名次
25.查询各科成绩前三名的记录(不考虑成绩并列情况)
26.查询每门课程被选修的学生数
27.查询出只选修了一门课程的全部学生的学号和姓名
28.查询男生和女生人数
29.查询姓“张”的学生名单
30.查询同名同性别学生名单并统计同名人数
31.1981年出生的学生名单(注:STUDENT表中SAGE列的类型是DATE)
32.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时按课程号降序排列
33.查询平均成绩大于85的所有学生的学号、姓名和平均成绩
34.查询课程名称为“数据库”且分数低于60的学生姓名和分数
35.查询所有学生的选课情况
36.查询任何一门课程成绩在70分以上的姓名、课程名称和分数
37.查询不及格的课程并按课程号从大到小排列
38.查询课程编号为003且课程成绩在80分以上的学生的学号和姓名
39.查询选了课程的学生人数
40.查询选修“李多多”老师所授课程的学生中成绩最高的学生姓名及其成绩
41.查询各门课程及相应的选修人数
42.查询有2门不同课程成绩相同的学生的学号、课程号、学生成绩
43.查询每门课程成绩最好的前两名
44.查询每门课程的学生选修人数,超过10人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同按课程号升序排列
45.查询至少选修两门课程的学生学号
46.查询全部学生都选修的课程的课程号和课程名
47.查询没学过“李多多”老师讲授的任一门课程的学生姓名
48.查询两门以上不及格课程的同学的学号及其平均成绩
49.检索课程编号为“004”且分数小于60的学生学号,结果按分数降序排列
50.删除学生编号为“002”的,课程编号为“001”的课程的成绩
三、设计题
有商品表(商品号、商品名、分类、单价),请编写一个实现更改商品单价的存储过程(存储过程名为PUPDATE),更改规则如下:“电脑”类商品降价10%,“电视”类商品降价6%,“冰箱”类商品降价3%,其他商品不降价。以商品的分类作为输入参数,假设“分类”为字符串类型,长度最多为6个字符。如果商品表中没有用户指定的分类,那么用输出参数返回字符串“指定的分类不存在”;如果用户指定的分类存在,那么用输出参数返回字符串“修改已成功”。
四、简答题
1.数据库系统的组成与结构有哪些?
2.什么是视图?视图的作用是什么?哪一类是可更新视图?
3.什么是聚簇索引和非聚簇索引?在哪些列上适合创建聚簇索引?
4.在Oracle中,位图索引是什么?在哪些列上适合创建位图索引?
5.在Oracle中,哪几种情况不能用上索引?
6.在Oracle中,行迁移和行连接的区别有哪些?
7.在Windows下启动Oracle的数据库的命令和启动Oracle监听的命令分别是什么?
8.在Oracle中,如何查看登陆到系统用户的用户名?
9.Oracle有哪些预定义角色?
10.在Oracle中,什么是ASMM和AMM?
11.在Oracle中,抛出异常有哪几种方式?
12.Oracle和MySQL中的分组(GROUP BY)有什么区别?
13.Oracle和MySQL中的分组(GROUP BY)后的聚合函数分别是什么?
14.MySQL支持哪几类分区表?