以下是INVENTORY(库存)表的定义和所存储的数据:
INVENTORY | ||||||
Column Name | ID_HUMBER | DESCRIPTION | MANUFACTURER_ID | QUANTITY | PRICE | ORDER_DATE |
Key Type | PK | FK | ||||
Nulls/Unique | HN, U | NN | NN | |||
FK Table | MANUFACTURER | |||||
FK Column | ID_NUMBER | |||||
Datatype | NUM | VARCHAR2 | VARCHAR2 | NUM | HUM | DATE |
Length | 9 | 25 | 26 | 9 | 8, 2 |
基于以上INVENTORY表的定义和所存储的数据,如下的哪个语句将成功地执行
A.INSERT INTO
inventory (id_number, description, price)
VALUES
(25029, ’Cotton’);
B.INSERT INTO
inventory (id_number, description, price)
VALUES
(25029, ’Cotton’, 5.60);
C.INSERT INTO
inventory (id_number, description, manufacturer_id, price)
VALUES
(25029, ’Cotton’, ’packex0122’, 5.60);
D.INSERT INTO
inventory (id_number, description, manufacturer_id, price)
VALUES
(K25029, ’Cotton’, packex0122, 5.60);
参考答案:C
解析: 这一题是测试对非空(NOT NULL)约束的理解和熟悉程度,以及对插入语句的理解程度。根据有关INSERT语句的介绍,可知在使用INSERT语句插入一行数据时,日期型和字符型的数据必须用单引号括起来。参阅INVENTORY(库存)表的定义,可以确定选项D是错误的,因为manufacturer_id的数据类型是变成字符型的,而在这个语句的VALUES子句中所输入的manufacturer_id值并未用单引号括起来,而且id_number的数据类型是数字型,所以输入的值中不能包括字母K。
继续参阅INVENTORY表的定义,因为在id_number、description和manufacturer_id这三列上都有非空约束,而在这两个INSERT语句中都缺少manufacturer_id列,必然会造成manufacturer_id列出现空值,所以选项A和B肯定是错误的。实际上,到此为止已经可以确定只有选项C是正确的了。参阅INVENTORY表的定义,在id_number列上除了非空约束外,还有主键和唯一约束,将选项C的VALUES子句中的数据与INVENTORY表的数据进行对比,可以发现在INVENTORY表中并没有id_number为25029的记录,而且其他部分的值也没有问题,所以可以断定选项C确实是正确的。