第一篇:数据库课程上机实验报告模版
《数据库原理与设计》实验报告(实验名称 :)
专业班级学号学生姓名任课教师朱焱老师辅导教师杨方蓉、梁懿
年月日
一、实验目的本次实验所涉及并要求掌握的知识点。根据老师实验前的讲授自行撰写。(小四号字,宋体)
二、实验环境
本次实验所使用的系统平台和相关软件。(小四号字,宋体)
三、实验内容:
本次实验的内容描述及相关题目
四、程序源码与运行结果
按照实验内容编写的代码与结果显示(五号字,宋体),重复的SQL语句只写一次。
五、实验总结
(小四号字,宋体).实验中遇到的问题、原因分析及解决方法.实验体会和收获。
第二篇:数据库课程上机实验报告
一、实验目的通过用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;
五、实验总结
在实验过程中我对于创建和修改触发器和完整性约束的语法搞不明白
通过本实验,我理解/了解/熟悉了.......熟悉了完整性约束的添加删除 熟悉了触发器的使用方式 熟悉了触发器语法熟悉级联式更新删除的语法
第三篇:数据库上机实验报告
兰州理工大学
学生上机报告
学院计算机与通信学院课程名称数据库原理
学生姓名侯予南学号05550204
专业班级基地班05级1班
上机日期2008年4月17日
指导教师李明
上机实验报告
(一)实验内容:
1、熟悉SQL Server 2000应用环境;
熟悉查询分析器的使用方法;
2、运行课堂示例:建立表Teacher , Course ;
进行数据插入、查询、更新、建立视图、创建触发器等操作;
3、完成作业(P108 第5题,P145第5题);
4、完成实验报告。
实验环境:
数据库系统:SQL Server 2000
实验过程:
在实验中发现的问题:
小结:
教师评语:
成绩:
第四篇:数据库上机实验报告
数据库上机实验报告
试验内容
1、数据表的建立
基本表《简单的》带有主键
带有外码约束的(外码来自其他表或者本表)
2、数据表的修改
添加删除列
修改列属性类型
添加删除约束(约束名)
元组的添加,修改,删除
删除数据表
试验过程
1、create
table
student
(sno
char(9)
primary
key,/*sno是主码
列级完整性约束条件*/
sname
char(20)
unique,/*sname取唯一值*/
ssex
char(2),sage
smallint,/*类型为smallint*/
sdept
char(20)
/*所在系*/);
create
table
course
(cno
char(4)
primary
key,/*列级完整性约束条件,cno是主码*/
cname
char(40),cpno
char(4),/*cpno的含义是先行课*/
ccredit
smallint,foreign
key
(cpno)
references
course(cno)
/*表级完整性约束条件,cpno是外码,被参照表是course,被参照列是cno*/);
create
table
sc
(sno
char(9),cno
char(4),grade
smallint,primary
key
(sno,cno),/*主码有两个属性构成,必须作为表级完整性进行定义*/
foreign
key
(sno)
references
student(sno),/*表级完整性约束条件,sno是外码,被参照表是student*/
foreign
key
(cno)
references
course(cno),/*表级完整性约束条件,cno是外码,被参照表示course*/);
例
1、create
table
s
(cno
varchar(3),/*变长的字符串,输入2个字符就是两个字符不会补空格*/
sname
varchar(20),status
int,city
varchar(20),constraint
pk_sno
primary
key(sno),/*约束条件的名字为pk_sno*/);
create
table
p
(pno
varchar(3),pname
varchar(20),color
varchar(3),weight
int,constraint
pk_pno
primary
key
(pno),/*约束条件的名字是pk_pno*/);
create
table
j
(jno
varchar(3),jname
varchar(20),city
varchar(20),constraint
pk_jno
primary
key(jno)
/*约束条件的名字为pk_jno*/);
例
2、create
table
spj
(sno
varchar(3),/*第一个表中的主码*/
pno
varchar(3),jno
varchar(3),qty
int,/*数量*/
constraint
pk_spj
primary
key(sno,pno,jno),/*主码由3个属性组成*/
foreign
key(sno)
references
s(sno),/*表级完整性约束条件,sno是外码,被参照表是s*/
foreign
key(pno)
references
p(pno),/*表级完整性约束条件,pno是外码,被参照表是p*/
foreign
key(jno)
references
j(jno),
第五篇:数据库上机实验报告
数据库上机实验报告
试验内容
1、数据表的建立
基本表《简单的》带有主键
带有外码约束的(外码来自其他表或者本表)
2、数据表的修改
添加删除列
修改列属性类型
添加删除约束(约束名)
元组的添加,修改,删除
删除数据表
试验过程
1、createtablestudent
(snochar(9)primarykey,/*sno是主码列级完整性约束条件*/
snamechar(20)unique,/*sname取唯一值*/
ssexchar(2),sagesmallint,/*类型为smallint*/
sdeptchar(20)/*所在系*/);
createtablecourse
(cnochar(4)primarykey,/*列级完整性约束条件,cno是主码*/
cnamechar(40),cpnochar(4),/*cpno的含义是先行课*/
ccreditsmallint,foreignkey(cpno)referencescourse(cno)
/*表级完整性约束条件,cpno是外码,被参照表是course,被参照列是cno*/);
createtablesc
(snochar(9),cnochar(4),gradesmallint,primarykey(sno,cno),/*主码有两个属性构成,必须作为表级完整性进行定义*/
foreignkey(sno)referencesstudent(sno),/*表级完整性约束条件,sno是外码,被参照表是student*/
foreignkey(cno)referencescourse(cno),/*表级完整性约束条件,cno是外码,被参照表示course*/);
例
1、createtables
(cnovarchar(3),/*变长的字符串,输入2个字符就是两个字符不会补空格*/
snamevarchar(20),statusint,cityvarchar(20),constraintpk_snoprimarykey(sno),/*约束条件的名字为pk_sno*/);
createtablep
(pnovarchar(3),pnamevarchar(20),colorvarchar(3),weightint,constraintpk_pnoprimarykey(pno),/*约束条件的名字是pk_pno*/);
createtablej
(jnovarchar(3),jnamevarchar(20),cityvarchar(20),constraintpk_jnoprimarykey(jno)/*约束条件的名字为pk_jno*/);
例
2、createtablespj
(snovarchar(3),/*第一个表中的主码*/
pnovarchar(3),jnovarchar(3),qtyint,/*数量*/
constraintpk_spjprimarykey(sno,pno,jno),/*主码由3个属性组成*/
foreignkey(sno)referencess(sno),/*表级完整性约束条件,sno是外码,被参照表是s*/
foreignkey(pno)referencesp(pno),/*表级完整性约束条件,pno是外码,被参照表是p*/
foreignkey(jno)referencesj(jno),/*表级完整性约束条件,jno是外码,被参照表是j*/);
2、数据表的更改
在s表中添加一个concat列
altertablesaddconcatvarchar(20)
在s表中删除concat列
altertablesdropcolumnconcat
更改s表concat列的属性把长度由20改为30
altertablesaltercolumnconcatvarchar(30)
联系方式名字为concat修改属性为唯一的属性名为con_concat
altertablesaddconstraintcon_concatunique(concat)
删除约束关系con_concat
altertablesdropconstraintcon_concat
/*插入一个元组*/
insertintosvalus(‘s1’,’精益’,20,’天津’)/*20不能写成’20’*/
试验中的问题的排除与总结:
1、在创建spj时
有三个实体所以从3个实体中取主码,还有一个数量属性也要写上
主码由那3个主码确定
2、更改一个数据库中数据表时一定要先使该数据库处于正在使用状态
3、constraint
是可选关键字,表示primarykey、notnull、unique、foreignkey或check约束定义的开始。约束是特殊属性,用于强制数据完整性并可以为表及其列创建索引。
4、--go可以不加但是要注意顺序注:go--注释提示错误
5、注意添加一个空元素用null
附sql备份
--创建一个数据库student
createdatabasestudent
go
--在数据库student中创建表studentcoursesc注意顺序
usestudent
--
createtablestudent
(snochar(9)primarykey,/*sno是主码列级完整性约束条件*/
snamechar(10)unique,/*sname取唯一值*/
ssexchar(2),sagesmallint,/*类型为smallint*/
sdeptchar(20)/*所在系*/);/*;要加*/
-----------