一、 单选题
1.观察下表(EMP)
本月老板要在所有员工原有奖金的基础上多发500元的奖金,查询出所有员工姓名以及他的奖金,下列SQL语句能够满足该需求的是()
A:
SELECT ENAME,COMM+500 FROM EMP;
B:
SELECT ENAME,NVL(COMM,0)+500 FROM EMP;
C:
SELECT ENAME,NVL(COMM+500,0) FROM EMP;
D:
SELECT ENAME,NVL2(COMM,0)+500 FROM EMP;
参考答案:B
解析:
有null参与的数学运算,其结果都是null。为了达到给每位员工都加500元奖金的目的,必须对null值做处理,将其用0替换,再加500,也即NVL(comm,0)+500。
NVL2(exp,value1,value2): NVL2函数的参数必须是三个,其作用是如果exp的值为null,则表达式的值为value2,否则为value1。请务必记牢!
2.您需要创建一个视图EMP_VU。 该视图应允许用户仅操作部门10或20工作的员工的记录。您将使用哪个SQL语句创建视图EMP_VU?
A:
CREATE VIEW emp_vu AS
SELECT *
FROM employees
WHERE department_id IN (10,20);
B:
CREATE VIEW emp_vu AS
SELECT *
FROM employees
WHERE department_id IN (10,20)
WITH READ ONLY;
C:
CREATE VIEW emp_vu AS
SELECT *
FROM employees
WHERE department_id IN (10,20)
WITH CHECK OPTION;
D:
CREATE FORCE VIEW emp_vu AS
SELECT *
FROM employees
WHERE department_id IN (10,20);
E:
CREATE FORCE VIEW emp_vu AS
SELECT *
FROM employees
WHERE department_id IN (10,20)
NO UPDATE;
参考答案:C
解析:
创建视图语句里含有 with check option 子句时,当你操作视图时就会受到创建视图的where子句的限制。
3.观察customers表的表结构
CUSTOMER_ID列是表的主键。您需要确定您的客户群如何分散。 哪个表达式能够找出CUSTOMERS表中不同国家/地区的数量?
A:COUNT(UPPER(country_address))
B:COUNT(DIFF(UPPER(country_address)))
C:COUNT(UNIQUE(UPPER(country_address)))
D:COUNT DISTINCT UPPER(country_address)
E:COUNT(DISTINCT (UPPER(country_address)))
参考答案:E
解析:
查找国家/地区的数量,首先应该排除国家/地区大小写的影响,然后剔除重复,最后计数即可。
4.SQL语言具有( )的功能
A:关系规范化、数据操纵、数据控制
B:数据定义、数据操纵、数据控制
C:数据定义、关系规范化、数据控制
D:数据定义、关系规范化、数据操纵
参考答案:B
5.观察下列三张表(分别为学生表STUDENT,课程表SUBJECT,成绩表SCORE)的表结构
下列SQL语句能正确运行的是()
A:
SELECT stuId,stuName,subName,SCORE
FROM STUDENT stu,SUBJECT sub,SCORE1 sc
WHERE SC.stuId=STU.stuId AND SC.subId=SUB.subId;
B:
SELECT STU.stuId,stuName,subId,subName,SCORE
FROM STUDENT stu,SUBJECT sub,SCORE1 sc
WHERE SC.stuId=STU.stuId AND SC.subId=SUB.subId;
C:
SELECT stuId,stuName,subName,subId,SCORE
FROM STUDENT stu,SUBJECT sub,SCORE1 sc
WHERE SC.stuId=STU.stuId AND SC.subId=SUB.subId;
D:
SELECT STU.stuId,stuName,subName,SCORE
FROM STUDENT stu,SUBJECT sub,SCORE1 sc
WHERE SC.stuId=STU.stuId AND SC.subId=SUB.subId;
参考答案:D
解析:
当我们要连接的表含有相同的列名是,在select子句中一定要给该列指定一个表名,以防出现列名相同带来的歧义
6.您需要设计一个学生注册数据库,其中包含存储学员信息的多个表。STUDENTS表存储有关学生的信息。 STUDENT_GRADES表存储有关学生成绩的信息。 这两个表都有一个名为STUDENT_ID的列。 STUDENTS表中的STUDENT_ID列是主键。
您需要在STUDENT_GRADES表的STUDENT_ID列上创建指向STUDENTS表的STUDENT_ID列的外键。
下列哪个语句完成了建表和上述要求?
A:
CREATE TABLE student_grades
(student_id NUMBER(12),
semester_end DATE,
gpa NUMBER(4,3),
CONSTRAINT student_id_fk REFERENCES (student_id)
FOREIGN KEY students(student_id));
B:
CREATE TABLE student_grades
(student_id NUMBER(12),
semester_end DATE,
gpa NUMBER(4,3),
student_id_fk FOREIGN KEY (student_id)
REFERENCES students(student_id));
C:
CREATE TABLE student_grades
(student_id NUMBER(12),
semester_end DATE,
gpa NUMBER(4,3),
CONSTRAINT FOREIGN KEY (student_id)
REFERENCES students(student_id));
D:
CREATE TABLE student_grades
(student_id NUMBER(12),
semester_end DATE,
gpa NUMBER(4,3),
CONSTRAINT student_id_fk