【正确答案】CREATE TABLE学生(
学号CHAR(7) PRIMARY KEY
CHECK (学号 LIKE 'S[0-9][0-9][0-9][0-9][0-9][0-9]'),
姓名CHAR(6) NOT NULL UNIQUE,
性别CHAR(2)NOT NULL CHECK(性别='男' OR 性别='女'),
出生日期DATETIME CHECK(出生日期>'1989-12-31'),
专业CHAR(10) NOT NULL,
年级TINYINT CHECK(年级>=1 AND 年级<=4)
)
【答案解析】[解析] 对各列分析如下。
(1)学号:普遍编码定长字符型,数据类型为char,长度为6;由于是标识属性,因此要定义主码约束;由于需要满足规定格式要求,因此需要定义检查约束。
(2)姓名:普遍编码定长字符型,数据类型为char,长度为6;要求非空且唯一,需要定义非空约束和单值约束。
(3)性别:普遍编码定长字符型,数据类型为char,长度为2;要求非空,需要定义非空约束;要求取值范围是“男”或“女”,需要定义检查约束。
(4)出生日期:日期时间型,数据类型可为datetime或smalldatetime;要求必须在1989年12月31日之后,需要定义检查约束。
(5)专业:普通编码定长字符型,数据类型为char,长度为10;要求非空,需要定义非空约束。
(6)年级:整型,数据类型可用bigint、int、smallint或tinyint,由于该值必须在1~4之间,考虑到存储空间,这4种整型占用的存储空间分别为8字节、4字节、2字节和1字节,因此最好选择tinyint型:要求值在1~4之间,需要定义检查约束。