#SQL#第二章测验和练习
一、测验
1、判断对错:个人社会保险号码,输入格式为‘1111111111’, 它可以是下面任何一种数据类型:定长字符、变长字符、数值。
对,有效数字达到必要长度。
2、判断对错:数值类型的标度是指数值的总体长度。
错,有效数字才是总体长度,而标度表示小数点右侧保留的位数。
3、所有的SQL实现都使用同样的数据类型吗?
不是,大多数实现的数据类型都有所不同。虽然他们都遵循ANSI描述的标准,但不同的厂商采取了不同的存储方式,可能导致数据类型有所差异。
4、下面定义的有效位和标度分别是多少?
DECIMAL(4,2); DECIMAL(10,2); DECIMAL(14,1)
注:DECIMAL(p, s) p 表示字段允许的最大长度,s表示小数点后面的位数。
有效位指数值的总体长度,不包含小数点。标度是小数点后面的位数,也就是小数点后面保留多少位的问题。
5、下面哪个数值能够输入到定义为DECIMAL(4,1)的字段里?
A、16.2
B、116.2
C、16.21
D、1116.2
E、1116.21
前三个都可以,但16.21会被四舍五入为16.2.后面两个数值超过了有效位数。
6、什么是数据?
数据是信息的集合,以某种数据类型保存在数据库里。
二、练习
a) ssn 社保卡号(Social Security Number)
b) state 国家
c) city 城市
d) phone_number 电话号码
e) zip
f) last_name
g) first_name
h) middle_name
i) salary
j) hourly_pay_rate
k) date_hired
1、为上面的数据设置适当的数据类型,确定恰当的长度,并给出一些示范数据。
2、同样是这些字段,判断他们应该是NULL或者NOT NULL。体会在不同的应用场合,有些一般是NOT NULL的字段可能应该是NULL,反之亦然。
NULL和NOT NULL的本质区别在于,所指的数据类型是否必须指定值,比如电话号码,不是每一个人都有电话号码,所以可以为NULL,但是SSN就不一样了,每一个人都是有社保卡号的(在美帝国),就像中国的身份证号一样。