《数据库概论》课程期中复习题目汇总
一、为某百货公司设计一个E-R模型。
百货管辖若干个连锁商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。
实体类型“商店”的属性有:商店编号,店号,店址,店经理。实体类型“商品”的属性有:商品编号,商品名,单价,产地。实体类型“职工”的属性有:职工编号,职工名,性别,工资。在联系中应反映出职工参加某商店工作的开始时间,商店销售商品的有销售量。
试画出反映商店、商品、职工实体类型及联系类型的ER图,并将其转换成关系模式集。
二、关系代数
设有三个关系:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
说明:S#——学号 SNAME——学生姓名 AGE——年龄 SEX——性别
C#——课程号 CNAME——课程名 TEACHER——教师 GRADE——成绩
试用关系代数写出查询语句。
(1)检索LIU老师所授课程的课程号、课程名。
(2)检索年龄大于23岁的男学生的学号与姓名。
(3)检索学号为S3学生所学课程的课程名与任课教师名。
(4)检索至少选修LIU老师所授课程中一门课程的女学生的姓名。
(5)检索WANG同学不学的课程号。
(6)检索至少选修两门课程的学生学号。
(7)检索全部学生都选修的课程的课程号与学生学号。
(8)检索选修课程包含LIU老师所授课程的学生学号。
(用∞代表自然连接):排序题
(1)πC#,CNAME(σTEACHER='LIU'(C))
(2)πS#,SNAME(σAGE>'23'∧SEX='男'(S))
(3)πCNAME,TEACHER(σS#='S3'(SC∞C))
(4)πSNAME(σSEX='女'∧TEACHER='LIU'(S∞SC∞C))
(5)πC#(C)-πC#(σSNAME='WANG'(S∞SC))
(6)πS#(σ1=4∧2≠5(SC×SC)) (SC自乘之后,同一个学号下两个课程号不同的元组)
(7)πC#,S#(SC∞(πS#,C#(SC)÷πS#(S))))
(8)πS#(σTEACHER='LIU'(S∞SC∞C))
三、SQL语句(1)
1、建立一个数据库和五张表的表结构。
(1)/*员工人事表employee */
emp_no | char(5) | Not null | primary key | 员工编号 |
emp_name | char(10) | Not null | 员工姓名 | |
sex | char(1) | Not null | 性别 | |
dept | char(4) | Not null | 所属部门 | |
title | char(6) | Not null | 职称 | |
date_hired | datetime | Not null | 到职日 | |
birthday | datetime | Null | 生日 | |
salary | int | Not null | 薪水 | |
addr | char(50) | null | 住址 | |
Mod_date | datetime | Default(getdate()) | 操作者 | |
(2)/*客户表customer */
cust_id | char(5) | Not null | primary key | 客户号 |
cust_name | char(20) | Not null, | 客户名称 | |
addr | char(40) | Not null, | 客户住址 | |
tel_no | char(10) | Not null, | 客户电话 | |
zip | char(6) | null | ||
(3)/*销售主表sales */
order_no | int | Not null | primary key | 订单编号 |
cust_id | char(5) | Not null, | 客户号 | |
sale_id | char(5) | Not null, | 业务员编号 | |
tot_amt | numeric(9,2) | Not null, | 订单金额 | |
order_date | datetime | Not null, | 订货日期 | |
ship_date | datetime | Not null, | 出货日期 | |
invoice_no | char(10) | Not null | 发票号码 | |
(4)/*销货明细表sale_item */
order_no | int | Not null, | primary key | 订单编号 |
prod_id | char(5) | Not null, | 产品编号 | |
qty | int | Not null | 销售数量 | |
unit_price | numeric(7,2) | Not null | 单价 | |
order_date | datetime | null | 订单日期 | |
(5)/*产品名称表product */
prod_id | char(5) | Not null | primary key | 产品编号 |
prod_name | char(20) | Not null | 产品名称 | |
4、通过T-SQL语句修改表约束。
1)分别为每张表建立主键约束。
2)为相关表建立外键约束。
3)在表employee加入CHECK约束:输入的员工编号必须以E开头的5位数编号,性别只能为M/F。
4)为销售主表sales中的发票编号字段建立UNIQUE约束。
5)创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址
6)对视图添加一条记录数据(注意:分别查看customer表和该视图的结果)
7)删除视图中所有姓“王”的客户数据
8)通过视图修改表内某一客户的姓名
9)有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额
10)将上述视图中订单号为10001的记录的销售总金额改为60000
11)给上述视图添加一条记录数据
12)删除上述视图
(1)建立数据库jianghong
create database jianghong
on
(name='jianghong',
filename='E:\数据库\jianghong.mdf',
size=3,
maxsize=10,
filegrowth= 1 )
log on
(name='jianghonglog',
filename='E:\数据库\jianghonglog.ldf',
size=1,
maxsize=5,
filegrowth=1)
go
(2)建立数据表
①创建employee表:
create table employee
(emp_no char(5) not null primary key,
emp_name char(10) not null,
sex char(1) not null,
dept char(4) not null,
title char(6) not null,
data_hired datetime not null,
birthday datetime null,
salary int not null,
addr char(50) null,
Mod_date datetime Default(getdate()),)
②创建customer表:
create table customer
(cust_id char(5) not null primary key,
cust_name char(20) not null,
addr char(40) not null,
tel_no char(10) not null,
zip char(6) null,)
③创建sales表:
create table sales
(order_no int not null primary key,
cust_id char(5) not null,
sale_id char(5) not null,
tot_amt numeric(9,2) not null,
order_date datetime not null,
ship_date datetime not null,
invoice_no char(10) not null,)
④创建sale_item表:
create table sale_item
(order_no int not null ,
prod_id char(5) not null ,
qty int not null,
unit_price numeric(7,2) not null,
order_date datetime null,
primary key (order_no,prod_id),)
⑤创建product表:
create table product
(prod_id char(5) not null primary key,
prod_name char(20) not null,)
(3)为相关表建立外键约束
①alter table sales add foreign key (cust_id) references customer(cust_id);
②alter table sale_item add foreign key (order_no) references sales(order_no);
③alter table sale_item add foreign key (prod_id) references product(prod_id);
(4)为表employee加入check约束:
alter table employee add constraint c1 check(emp_no like 'E____' and (sex='M' or sex='f'));
(5)为表sales发票号建立unique约束:
alter table sales add unique(invoice_no);
(6)创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址:
create view sh_kehu
as
select cust_id,cust_name,addr
from customer
where addr like '上海'
2
(7)删除视图中所有姓“王”的客户数据:
DELETE
FROM sh_kehu
WHERE cust_name LIKE '王%'
(8)通过视图修改表内某一客户的姓名
update sh_kehu
set cust_name='江洪好'
where cust_id='4224'
(9)有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额:
发布评论