你创建了如下的表来存储玩具的信息:
create table qz_toys (
toy_id integer not null primary key,
toy_description varchar2(100) not null,
price number(4, 2) not null
);
下列的哪些插入语句
增加一行数据;
在price列存储的数据和传入insert语句的值相同?
(A)
insert into qz_toys values ( 1, 'No toy needed', 65.48 );
(B)
insert into qz_toys values ( 2, 'Internal toy code', 600 );
(C)
insert into qz_toys values ( 3, 'Toy not found', 0.6592 );
(D)
insert into qz_toys values ( 4, 'Unique toy violated', 0.01 );
(E)
insert into qz_toys values ( 5, 'Too many toys', -14.22 );
答案ADE, 2楼得奖。
A: number (4, 2) 允许你在小数点两边分别存储两位数字。数据库将会保存和所示一样的数值。
B: 不对,精度是4, 所以你最多可存储四位有效数字。刻度为2,因此该值包括小数点右侧的两位数字和左侧的两位数字。 所以允许的最大值是99.99。这会报错:
"ORA-01438: value larger than specified precision allowed for this column".
C: 不对,两位刻度意味着数据库仅仅存储小数点右边的两位数字。它会将右边的多余数字进行舍入。所以这个值被存储为0.66
D: 是的,你可以存储少于指定位数的有效数字。
E: 是的,你也可以存储负数。