问题 单项选择题

以下是CLASS(课程)表和INSTRUCTOR(教师)表中所存储的数据:

CLASS
CLASS_ID CLASS_NAME HOURS_CREDIT INSTRUCTOR_ID
1 Introduction to Accounting 3 4
2 Computer Basics 3 1
3 Tax Accounting Principles 3 4
4 American History 3 2
5 Basic Engineering 3
INSTRUCTOR
INSTRUCTOR_ID LAST_NAME FIRST_NAME
1 Chao Ling
2 Vanderbilt Herbert
3 Wigley Martha
4 Page Albert
要删除没有指派教师(INSTRUCTOR)的课程(CLASS),在如下的DELETE语句中,哪一个将获取所希望的结果

A.DELETE class_id, class_name, hours_credit, instructor_id
FROM class
WHERE instructor_id IS NULL;
B.DELETE FROM class
WHERE instructor_id NOT IN

(SELECT instructor_id

FROM class);
C.DELETE FROM
instructor NATURAL JOIN class
WHERE instructor_id IS NOT NULL;
D.DELETE FROM class
WHERE instructor_id IS NULL;

答案

参考答案:D

解析: 这一题是测试对DELETE语句的理解和熟悉程度。根据有关DELETE语句格式的介绍,可知其格式是“DELETE [FROM]表名”,从而可以断定选项A是错误的,因为在DELETE之后不允许出现列名。
因为WHERE instructor id NOT IN (SELECT instructor_id FROM class); 子句的含义是instructor_id不等于子查询语句所返回的任何一个instructor_id(每一个都不能相等)。参阅表CLASS中的数据可以发现其中第5行数据的instructor_id为空(NULL),因为任何一个值既不能等于空值也不能不等于空值,因此WHERE子句中的条件永远不成立,其结果是查询语句不会返回任何结果,所以选项B也可以排除。
根据有关DELETE语句格式的介绍,可知WHERE子句中的条件是由列名、表达式、常量、子查询和比较运算符组成的,并不包括NATURAL JOIN(自然连接),所以选项C肯定也是错误的。
根据有关DELETE语句格式的介绍,只有选项D符合DELETE语句的语法格式,而且WHERE instructor_id IS NULL子句的含义就是instructor_id为空(没有指派教师),所以可以确信只有选项D是正确的。

单项选择题 A1型题
判断题