《数据库原理与应用》(第三版) 第 5 章 数据类型及关系表创建 基础 习题参考答案

1.Tinyint数据类型定义的数据的取值范围是多少?
答:0-255

2.SmallDatatime类型精确到哪个时间单位?
答:分钟

3.定点小数类型numeric中的p和q的含义分别是什么?
答:p代表整数位数+小数位数的和值,q代表小数位数。

4.Char(n)、nchar(n)的区别是什么?它们各能存放多少个字符?
答:Char(n)中的n代表能存放n个字节的字符,如果是字母可以存放n个,如果是汉字可存放n/2个。Nchar(n)中的n代表能存放的字符个数。

5.Char(n)和varchar(n)的区别是什么?
答:Char(n)是定长存储,一定占n个字节的空间。Varchar(n)代表最多占n个字节的空间。

6.数据完整性约束的作用对象有哪些?
答:表和列

7.CHECK约束的作用是什么?
答:限制列的取值范围。

8.UNIQUE约束的作用是什么?
答:限制列取值不重。

9.DEFAULT约束的作用是什么?
答:提供列的默认值。

上机练习
1.在第4章创建的Students数据库中,写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束:
(1)“图书”表结构如下:
书号:统一字符编码定长类型,长度为6,主键;
书名:统一字符编码可变长类型,长度为30,非空;
第一作者:普通编码定长字符类型,长度为10,非空;
出版日期:小日期时间型;
价格:定点小数,小数部分1位,整数部分3位。
create table 图书(
书号 nchar(6) primary key,
书名 nvarchar(30) not null,
第一作者 char(10) not null,
出版日期 smalldate,
价格 numeric(4,1)
)
(2)“书店”表结构如下:
书店编号:统一字符编码定长类型,长度为6,主键;
店名:统一字符编码可变长类型,长度为30,非空;
电话:普通编码定长字符类型,8位长,每一位的取值均是0~9的数字;
地址:普通编码可变长字符类型,40位长。
邮政编码:普通编码定长字符类型,6位长。
create table 书店(
书店编号 nchar(6) primary key,
店名 nvarchar(30) not null
电话 char(8) check(电话 like ‘[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]’),
地址 varchar(40),
邮政编码 char(6)
)
(3)“图书销售”表结构如下:
书号:统一字符编码定长类型,长度为6,非空;
书店编号:统一字符编码定长类型,长度为6,非空;
销售日期:小日期时间型,非空;
销售数量:小整型,大于等于1。
主键为(书号,书店编号,销售日期);
其中“书号”为引用“图书表”的“书号”的外键;
“书店编号”为引用“书店表”的“书店编号”的外键。
create table 图书销售(
书号 nchar(6) not null,
书店编号 nchar(6) not null,
销售日期 samlldate,
销售数量 smallint check(销售数量 >= 1),
primary key(书号, 书店编号, 销售日期),
foreign key(书号) references 图书(书号),
foreign key(书店编号) references 书店(书店编号)
)
2.为图书表添加“印刷数量”列,类型为整数,同时添加取值大于等于1000的约束。
Alter table 图书 add 印刷数量 int check(印刷数量 >= 1000)

3.删除书店表中的“邮政编码”列。
Alter table 书店 drop column 邮政编码

4.将图书销售表中的“销售数量”列的数据类型改为整型。
Alter table 图书 alter column 销售数量 int

发布了750 篇原创文章 · 获赞 471 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/weixin_43336281/article/details/105500461