日记

你创建了如下的表来存储玩具的信息:

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: 是的,你也可以存储负数。

请使用浏览器的分享功能分享到微信等