数据库完整性实验报告
数据库完整性实验报告
北京理工大学珠海学院实验报告
ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY
班级 学号 姓名 指导教师 张申勇 成绩
实验题目 数据库完整性 实验时间 2012.4.20
一 实验目的
1. 熟悉通过SQL对数据进行完整性控制;
2. 针对具体应用要求,设计相应的完整性约束。
二 实验工具SQL Server 2005
利用SQL Server 2005 SSMS及其SQL查询编辑器。
三 实验内容和要求
使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN
子句、触发器)。用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。根据以下要求认真填写实验报告,记录所有的实验用例。
具体操作内容:
创建以下两个关系模式,并分别插入相应的数据。
职工(职工号,姓名,年龄,职务,工资,部门号)其中职工号为主码;
部门(部门号,名称,经理名,地址,电话号码),其中部门号为主码;
(1)使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定
义;
(a)定义每个模式的主码;
(b)定义参照完整性;
(c)定义职工的年龄不能小于18岁,并且不能超过60岁;
(d)职工的姓名不能为空;
(e)职工的工资不能为空,且不能小于800;
(f)部门名称不能为空且不能重复,定义约束名为UK_dName;
(2)使用SQL语言分别向两个表中插入7行记录,验证上面的各种约束条
件;
(3)将职工的年龄改为不能小于16岁,并且不能大于65岁;
(4)定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModiDate);在职工表
上定义修改和插入数据的触发器,将插入的职工号和工资数据填入到Emp_log表中,并记录操作的用户和插入时间;如果修改了职工的工资,也把职工号和修改后的工资数据填入到Emp_log表中,并记录操作的用户和插入时间。使用SQL语句向职工表中插入数据和修改工资,验证触发器的效果。
数据库完整性实验报告
四 实验报告
4.1 实验环境:
Windows7
Microsoft SQL server Management Studio 2005
4.2 实验内容与完成情况:
--新建数据库
create database work
go
use work
--创建以下两个关系模式,并分别插入相应的数据。
--Worker(职工号,姓名,年龄,职务,工资,部门号)
go
--()使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定义;
--(a)定义职工号为职工表的主码;
create table Worker(
职工号varchar(10) primary key,
--(d)职工的姓名不能为空;
姓名char(10) not null,
--(c)定义职工的年龄不能小于岁,并且不能超过岁;
年龄int
constraint w_age check (年龄>18 and 年龄<65),
职务char(15),
--(e)职工的工资不能为空,且不能小于;
工资money not null
constraint w_sa check(工资>800),
部门号char(50),
--(b)定义参照完整性
foreign key(职工号) references Worker(职工号)
)
数据库完整性实验报告
--Section(部门号,名称,经理名,地址,电话号码)
create table Section (
--定义部门号为部门表的主码
部门号char(10) primary key,
--(f)部门名称不能为空且不能重复,定义约束名为UK_dName;
名称char(10)not null
constraint UK_dName unique,
经理名char(10),
地址char(50),
电话char(15),
--(b)定义参照完整性
foreign key(部门号) references Section(部门号)
);
go
--()使用SQL语言分别向两个表中插入行记录,验证上面的各种约束条件;
--验证部门名称不能为空且不能重复,定义约束名为UK_dName;
insert into Section values('a001','市场部门','李永','北工','13750000000'); insert into Section values('a002','营销部门','李刚','北工','13750000002'); insert into Section values('a003','营销部门','李忠','北工','13750000003'); insert into Section values('a003',null,'李吧','北工','13750000004');
insert into Worker values('a001001','王明',20,'市场营销员',2000,'a001'); insert into Worker values('a001002','李村',29,'市场营销员',2000,'a001'); --验证职工的工资不能为空,且不能小于;
insert into Worker values('a002001','罗杰',19,'销售员',null,'a002'); insert into Worker values('a002002','李红',24,'销售员',700,'a002'); --验证职工的姓名不能为空;
insert into Worker values('a002003',null,32,'经理',5000,'a002'); --验证职工的年龄不能小于岁,并且不能超过岁;
insert into Worker values('a001003','李永',61,'经理',5000,'a001'); insert into Worker values('a002004','黄鹂',17,'副经理',4500,'a002'); --查询部门表和职工表的数据
--()将职工的年龄改为不能小于岁,并且不能大于岁;
alter table Worker
drop constraint w_age;
alter table Worker
add constraint w_age check(年龄>16 and 年龄<65)
--验证职工年龄不能小于岁,并且不能大于岁
insert into Worker values('a002005','李芳',15,'副经理',4500,'a002'); insert into Worker values('a002006','李姓',66,'副经理',4500,'a002'); --()定义一个表tbl_Emp_Log(eNO, eSalary, Username, ModiDate);在
数据库完整性实验报告
--职工表上定义修改和插入数据的触发器,
--定义表
create table tbl_Emp_Log(
id int identity primary key,
eNo char(20),
eSalary money,
Username char(20),
ModiDate Datetime
)
--定义插入数据的触发器
create trigger insert_Emp on Worker
after insert
as begin insert into tbl_Emp_Log
select 职工号, 工资, User_name(), getDate() from Inserted;
end
drop trigger insert_Emp
--验证触发器
insert into Worker values('a0010011','周涛',29,'市场营销员',2000,'a001'); insert into Worker values('a0010010','霍利',28,'市场营销员',2000,'a001');
select * from tbl_Emp_Log;
drop table tbl_Emp_Log;
--定义修改工资的触发器
create trigger update_Emp on Worker
after update
as if update(工资)
begin declare @eSeleryOld money,@eSeletyNew money
select @eSeleryOld=工资from Deleted
select @eSeletyNew=工资from Inserted
if(@eSeleryOld<>@eSeletyNew)
insert into tbl_Emp_Log select 职工号, 工资, User_name(), getDate() from Inserted;
end
drop trigger update_Emp
--验证触发器
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




