以下是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 |
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是正确的。