数据库课程上机实验报告_数据库上机实验报告

2020-02-27 其他范文 下载本文

数据库课程上机实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据库上机实验报告”。

一、实验目的通过用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;

五、实验总结

在实验过程中我对于创建和修改触发器和完整性约束的语法搞不明白

通过本实验,我理解/了解/熟悉了.......熟悉了完整性约束的添加删除 熟悉了触发器的使用方式 熟悉了触发器语法熟悉级联式更新删除的语法

《数据库课程上机实验报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据库课程上机实验报告
点击下载文档
相关专题 数据库上机实验报告 实验报告 课程 数据库 数据库上机实验报告 实验报告 课程 数据库
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文