《数据库概论》课程期中复习题目汇总
一、为某百货公司设计一个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#,CNAMETEACHER='LIU'(C))
2πS#,SNAMEAGE'23'SEX=''(S))
3πCNAME,TEACHERS#='S3'(SC∞C))
4πSNAMESEX=''TEACHER='LIU'(S∞SC∞C))
5πC#(C)-πC#SNAME='WANG'(S∞SC))
6πS#1=42≠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有两个基本表employeesales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额: