1.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束:
(1)“图书表”结构如下:
书号:统一字符编码定长类型,长度为6,主键;
书名:统一字符编码可变长类型,长度为30,非空;
第一作者:普通编码定长字符类型,长度为10,非空;
出版日期:小日期时间型;
价格:定点小数,小数部分1位,整数部分3位。
(2)“书店表”结构如下:
书店编号:统一字符编码定长类型,长度为6,主键;
店名:统一字符编码可变长类型,长度为30,非空;
电话:普通编码定长字符类型,8位长,每一位的取值均是0~9的数字;
地址:普通编码可变长字符类型,40位长。
:普通编码定长字符类型,6位长。
(3)“图书销售表”结构如下:
书号:统一字符编码定长类型,长度为6,非空;
书店编号:统一字符编码定长类型,长度为6,非空;
销售日期:小日期时间型,非空;
销售数量:小整型,大于等于1。
主键为(书号,书店编号,销售日期);
其中“书号”为引用“图书表”的“书号”的外键;
“书店编号”为引用创建唯一约束sql语句“书店表”的“书店编号”的外键。
答:
CREATE TABLE 图书表 (
书号 nchar(6) primary key,
书名 nvarchar(30) not null,
第一作者 char(10) not null,
出版日期 smalldatetime,
价格 numeric(4,1))
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))
CREATE TABLE 图书销售表 (
书号 nchar(6) not null,
书店编号 nchar(6) not null,
销售日期 smalldatetime not null,
销售数量 smallint check(销售数量>=1),
primary key(书号,书店编号,销售日期),
foreign key(书号) references 图书表(书号),
foreign key(书店编号) references 书店表(书店编号))
1.1为图书表添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。
答:ALTER TABLE 图书表
ADD 印刷数量 int check (印刷数量>=1000)
1.2删除“书店表”中的“”列。
答:ALTER TABLE 书店表
DROP COLUMN
1.3将“图书销售表”中的“销售数量”列的数据类型改为整型。
答:ALTER TABLE 图书销售表
ALTER COLUMN 销售数量 int
2.设某商业集团数据库中有三个实体集:
商店:商店编号、商店名、地址
商品:商品编号、商品名、规格、单价
职工:职工编号、姓名、性别、业绩
每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品时有月销售量;每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。
(1)试画出E-R图,要求在图上注明属性及联系的类型;
(2)将E-R图转换成关系模型,并注明主码;
(3)根据实际情况,使用SQL创建表,包括各种约束;
(4)用SQL语句查大于平均业绩的职工姓名;
(5)用SQL语句创建一个业绩大于100的所有男职工信息的视图。
(1)(5分)
(2)这个E-R图可转换为4个关系模式:(8分)
商店(商店编号,商店名,地址) (2分)
职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪) (2分)
商品(商品编号,商品名,规格,单价) (2分)
销售(商店编号,商品编号,月销售量) (2分)
(3) create shop(Sid char(3) primary key, Sname char(10), Sadd char(50)); (2分)
create employee(Eid char(3) primary key, Ename char(5), Esex char(1), Each real, Sid char(3),Ere date, Esa int, foreign key (Sid) references (shop)); (2分)
create commodity(Cid char(3) primary key, Cname char(10), Csp char(10), Cpr real); (2分)
create vendition(Sid char(3), Cid char(3), Vse int, primary key (Sid,Cid), foreign key (Sid) references (shop), foreign key (Cid) references (commodity)); (2分)
(4)(4)select Ename from employee x where Each>=(select avg(Each) from employee y where y.Each=x.Each);
(5) create view Eman(Eid, Ename, Esex, Each, Sid, Ere, Esa)
As select Eid, Ename, Esex, Each, Sid, Ere, Es from employee where Each>100 and Esex=’男’;(2分)
3. (共10分)设学校数据库中有两个实体集:
学生表:学号、姓名、班级
课程表:课程号、课程名称、教师
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论