1.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束:
1图书表结构如下:
书号:统一字符编码定长类型,长度为6,主键;
书名:统一字符编码可变长类型,长度为30,非空;
第一作者:普通编码定长字符类型,长度为10,非空;
出版日期:小日期时间型;
价格:定点小数,小数部分1位,整数部分3位。
2书店表结构如下:
书店编号:统一字符编码定长类型,长度为6,主键;
店名:统一字符编码可变长类型,长度为30,非空;
电话:普通编码定长字符类型,8位长,每一位的取值均是09的数字;
地址:普通编码可变长字符类型,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小时内删除。