第一篇:数据库课程上机实验报告
一、实验目的通过用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 < 30),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 <40);
九、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<4000)THEN
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;
五、实验总结
在实验过程中我对于创建和修改触发器和完整性约束的语法搞不明白
通过本实验,我理解/了解/熟悉了.......熟悉了完整性约束的添加删除 熟悉了触发器的使用方式 熟悉了触发器语法熟悉级联式更新删除的语法
第二篇:数据库课程上机实验报告模版
《数据库原理与设计》实验报告(实验名称 :)
专业班级学号学生姓名任课教师朱焱老师辅导教师杨方蓉、梁懿
年月日
一、实验目的本次实验所涉及并要求掌握的知识点。根据老师实验前的讲授自行撰写。(小四号字,宋体)
二、实验环境
本次实验所使用的系统平台和相关软件。(小四号字,宋体)
三、实验内容:
本次实验的内容描述及相关题目
四、程序源码与运行结果
按照实验内容编写的代码与结果显示(五号字,宋体),重复的SQL语句只写一次。
五、实验总结
(小四号字,宋体).实验中遇到的问题、原因分析及解决方法.实验体会和收获。
第三篇:数据库上机实验报告
兰州理工大学
学生上机报告
学院计算机与通信学院课程名称数据库原理
学生姓名侯予南学号05550204
专业班级基地班05级1班
上机日期2008年4月17日
指导教师李明
上机实验报告
(一)实验内容:
1、熟悉SQL Server 2000应用环境;
熟悉查询分析器的使用方法;
2、运行课堂示例:建立表Teacher , Course ;
进行数据插入、查询、更新、建立视图、创建触发器等操作;
3、完成作业(P108 第5题,P145第5题);
4、完成实验报告。
实验环境:
数据库系统:SQL Server 2000
实验过程:
在实验中发现的问题:
小结:
教师评语:
成绩:
第四篇:地质数据库上机实验报告
《地质数据库设计与应用》上机实习报告
班级:姓名:学号:成绩:
五、实习中存在的主要问题
一、实习名称
二、实习目的三、实习内容
四、实习主要操作步骤(或所用主要命令、函数操作方法)
第五篇:数据库原理上机实验报告
广西科技大学理学院《数据库原理》上机实验报告
实验序号与实验名称:实验九:用户管理和权限管理
姓名:薛亚妮学号:201000901045
专业班级:信计101实验日期:2012年 12月15日
一、实验目的:理解和体会数据库安全性的内容,加强对DBMS功能的认识。
二、实验内容:数据库的用户管理和操作权限管理。
三、程序源代码:
1、对象操作授权
sp_grantdbaccess 201000901035
grant select on 产品1045 to 201000901035
grant create view,create table to 201000901035
grant execute on sp_getgoods to 2010009010352、在授权过程中体会GRANT命令中WITH GRANT OPTION 短语的作用。
--用户201000901045--
grant select on产品1045 to [201000901035] WITH GRANT OPTION
--用户201000901035--
grant select on 产品1045 to [201000901035]
As [201000901035]
3、分情况收回授权,并体会REVOKE命令中GRANT OPTION FOR和CASCADE
--短语的作用
revoke select on 产品1045 from 201000901035
revoke create view,create table to 201000901035
revoke grant option for select on 产品1045 from 201000901035 CASCADE
四、实验结果分析与总结
安全性控制是数据库管理员(或系统管理员)的一个重要任务,他要充分利用数据库管理系统的安全功能,保证数据库和数据库中数据的安全。
授权登录用户为当前数据库用户 :
sp_grantdbaccess [@loginame =] login
[,[@name_in_db =] name_in_db]
使一个登录用户成为数据库用户只是授权的第一步,数据库管理员可以进一步为能够连接到自己所管理数据库的用户在该数据库上授予所需要的权限.收回权限:收回语句授权 :REVOKE { ALL | statement_list } FROM name_list
收回对象授权 :
REVOKE [GRANT OPTION FOR]
{ ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
FROM name_list
[ CASCADE ]
[ AS { group | role } ]
禁止语句权限: DENY { ALL | statement_list } TO name_list
禁止对象权限: DENY { ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
TO name_list
[CASCADE]