数据库课程上机实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据库上机实验报告”。
一、实验目的通过用SQL语句对数据进行完整性控制,了解掌握提供定义完整性约束条件的机制、提供完整性检查的方法以及违约处理
二、实验环境
WINDOWS XP 和 SQLServer200
5三、实验内容:
参照完整性定义
参照完整性检查和违约处理
属性上的约束条件的定义(1.不允许去控空值 2.劣质唯一 3.用CHECK短语指定列值应该满足的条件)
属性上的约束条件检查和违约处理
元祖上的约束条件的定义
完整性约束命名子句
修改表中的完整性限制
定义触发器
激活触发器
四、程序源码与运行结果
一、定义SC中的参照完整性。
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno));
二、显式说明参照完整性的违约处理示例。
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno)
ON DELETE CASCADE
ON UPDATE CASCADE
FOREIGN KEY(Cno)REFERENCES Course(Cno)
ON DELETE NO ACTION
ON UPDATE CASCADE);
三、在定义SC表时,说明Sno,Cno,Grade属性不允许取空值。
CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL,PRIMARY KEY(Sno,Cno),四、建立部门表 DEPT,要求部门名称 Dname列取值唯一,部门编号Deptno列为主码。(列值唯一)
CREATE TABLE DEPT
(Deptno NUMERIC(2),Dname CHAR(9)UNIQUE,Location CHAR(10),PRIMARY KEY(Deptno)
五、Student表中Ssex只允许“男”或“女”。(用 CHECK 短语指定列值应该满足的条件)CREATE TABLE Student
(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN(„男‟,„女‟)),Sage SMALLINT,Sdept CHAR(20)
六、当学生的性别是男时,其名字不能以 MS.打头。(元组上的约束条件的定义)CREATE TABLE Student
(Sno CHAR(9),Sname CHAR(8)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno),CHECK(Ssex=„女‟ OR Sname NOT LIKE „ MS.% ‟));
七、完整性约束命名子句
CONSTRAINT [PRIMARY KEY 短语ㄧCHECK 短语]
例1:建立学生登记表Student,要求学号在90000-99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。
CREATE TABLE Student
(Sno NUMERIC(6)
CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99999),Sname CHAR(20)
CONSRAINT C2 NOT NULL,Sage NUMERIC(3)
CONSTRAINT C3 CHECK(Sage
Ssex CHAR(2)
CONSTRAINT C4 CHECK(Ssex IN(„男‟,„女‟)),CONSTRAINT StudentKEY PRIMARY KEY(Sno));
例2:建立教师表 TEATHER,要求每个教师的应发工资不低于3000元。应发工资实际上就是实发工资例Sal与扣除项Deduct之和。
CREATE TABLE TEATHER
(Eno NUMERIC(4)PRIMARY KEY,Ename CHAR(10),Job CHAR(8),Sal NUMERIC(7,2),Deduct NUMERIC(7,2),Deptno NUMERIC(2),CONSTRAINT EMPFKey FOREIGN KEY(Deptno)REFERENCES DEPT(Deptno),CONSTRAINT C1 CHECK(Sal+Deduct >=3000));
八、限制修改表Student中的约束条件,要求学号改在900000-999999之间,年龄由小于30改为小于40。(修改表中的完整性)
可以先删除原来的约束条件,再增加新的约束条件。
ALTER TABLE Student
DROP CONSTRAINT C1;
ALTER TABLE Student
ADD CONSTRAINT C1 CHECK(Sno BETWEEN 900000 AND 999999),ALTER TABLE Student
DROP CONSTRAINT C3;
ALTER TABLE Student
ADD CONSTRAINT C3 CHECK(Sage
九、SQL 使用 CREATE TRIGGER 命令建立触发器,其一般格式为
CREATE TRIFFER
{ BEFORE AFTER } ON
FOR EACH {ROW STATEMENT}
[WHEN ]
例:定义一个BEFORE 行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于40000元,自动改为4000元”。
CREATE TRIGGER Insert_Or_Sal
BEFORE INSERT OR UPDATE ON Teacher
FOR EACH ROW
AS BEGIN
IF(new.Job=‟教授‟)AND(new.Sal
new.Sal :=4000;
END IF;
END;
十、执行修改某个教师工资SQL语句,激活上述定义的触发器。
UPDATE Teacher SET Sal=800 WHERE Ename=„陈平‟;
执行顺序是:
执行触发器 Insert_Or_Update_Sal;
执行SQL语句“UPDATE Teacher SET Sal=800 WHERE Ename="陈平";" 执行触发器Insert_Sal;
执行触发器Update_Sal.十一、删除触发器的SQL语法如下:
DROP TRIGGER ON;
触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户的删除.例: 删除教师表 Teacher 上的触发器 Insert_Sal。
DROP TRIGGER Insert_Sal ON Teacher;
五、实验总结
在实验过程中我对于创建和修改触发器和完整性约束的语法搞不明白
通过本实验,我理解/了解/熟悉了.......熟悉了完整性约束的添加删除 熟悉了触发器的使用方式 熟悉了触发器语法熟悉级联式更新删除的语法
《数据库原理与设计》实验报告 (实验名称 :)专业班级学号学生姓名任课教师朱焱老师辅导教师杨方蓉、梁懿年月日一、实验目的本次实验所涉及并要求掌握的知识点。 根据老师实验......
兰州理工大学学生上机报告学院计算机与通信学院课程名称数据库原理学生姓名侯予南学号05550204专业班级基地班05级1班上机日期2008年4月17日指导教师李明上机实验报告(一)实验......
数据库上机实验报告试验内容1、数据表的建立基本表《简单的》带有主键带有外码约束的(外码来自其他表或者本表)2、数据表的修改添加删除列修改列属性类型添加删除约束(约束名)元......
北京交通大学经管学院Acce数据库上机实验报告陶瓷公司管理信息系统项目1 实验目的1.了解信息系统开发的主要过程,体会在系统开发中系统实施的主要步骤。 2.掌握使用Acce的表......
广西科技大学理学院《数据库原理》上机实验报告实验序号与实验名称:实验九:用户管理和权限管理姓名:薛亚妮学号:201000901045专业班级:信计101实验日期:2012年 12月15日一、实验目......