学生(STUDENT)表包括了如下的列定义:
ID NUMBER(9)PK
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
SUBJECT_ID NUMBER(9)
比较以下的两个SQL语句,其结果将有哪些不同
(1)SELECT DISTINCT subject_id, last_name, first_name
FROMstudent
ORDER BY 1;
(2)SELECT id, last_name, first_name, subject_id
FROMstudent
ORDER BY subject_id;
A.第一个语句的结果将以字母顺序排序,而第二个语句则不是
B.第一个语句将限制重复的subject_id,而第二个语句则不是
C.第二个语句将从输出结果中去掉重复行,而第一个语句则不能
D.第一和第二个语句将显示学生(STUDENT)表中一些值的不同组合
参考答案:D
解析: 这一题测试对DISTINCT、主键(primaiy key)和ORDER BY子句的理解。根据有关ORDER BY子句的介绍,可知第一个SQL语句中的“ORDER BY 1”子句是对SELECT列表中的第一列subject_id进行升序排序。
根据学生(STUDENT)表中subject_id的定义可知subject_id是数字类型,所以第一个语句只能以数字的顺序排序,而不可能以字母顺序排序,所以选项A肯定是错误的。
由于id是STUDENT表中的主键,按照关系数据库的理论,在关系表中主键必须唯一,所以第二个语句返回的结果中每一行肯定都是唯一的。而由于第一个语句的SELECT列表中使用了DISTINCT关键字,所以这一语句返回的结果的每一行肯定也是唯一的(不同的)。所以选项B和选项C都不可能正确,因为它们各有一个语句的结果不是唯一的。因此,在所有的四个选项中只有选项D才适用于这两个SQL语句。