第一篇:数据库上机实验(二)
数据库上机实验内容及要求(第二部分)
1. 建立工厂管理数据库
工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息:
(1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话;
(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;
(3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产;
(4)一个车间制造多种零件,一种零件也可能为多个车间制造。零件有零件号、重
量和价格;
(5)一种产品可由多种零件组成,一种零件也可以装配出多种产品;
(6)产品和零件均存入仓库;
(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。
根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。 分析实体及联系,设计E-R图。
将E-R图转换成关系模式,并规范化到3NF。
在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主
码,外码,索引,约束等)。
测试数据入库
2. 基于“查询分析器”,完成并保存下述题目的SQL脚本
(1)建立“工种”是“钳工”的所有职工详细信息的视图;
(2)建立“车间号”是“CJ01”的钳工详细信息的视图;
(3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图;
(4)查询使用了“零件号”是“LJ0002”的产品的生产车间号;
(5)对零件表按照“零件号”建立唯一索引;
(6)对职工表按照“性别”建立聚簇索引;
(7)查询“车间主任姓名”是“赵平”的“车间地址”和“联系电话”;
(8)查询“职工号”是“ZG0001”的职工所在车间的“车间主任姓名”和“联系电
话”;(连接查询实现)
(9)查询“产品号”是“CP0001”的产品的生产车间的“车间主任姓名”和“联系
电话”;(嵌套查询实现)
(10)查询使用了“零件号”是“LJ0002”的所有产品的“产品号”,且查询结果按照
“零件数量”降序排列;
(11)查询使用了“零件号”是“LJ0002”的所有产品的“产品号”和“产品价格”;
(12)查询使用了“零件号”是“LJ0002”的所有产品的生产车间的“车间主任姓名”
和“联系电话”;
(13)查询使用了“零件号”是“LJ0002”的产品数;
(14)查询“LJ0002”号零件装配产品的使用总量;
(15)查询使用了3种以上零件的产品号;
【注意】:下机时保存数据库文件(.mdf和.ldf)及SQL脚本文件到U盘。
第二篇:数据库上机实验
创建数据表与数据输入
Part I.使用SQL Server Management Studio创建数据表和输入数据 1.在SQL Server Management Studio中创建数据表 P69 1.(1)-(6)
2.为数据表输入数据 P76 4.(1)-(4)
3.数据浏览
P77
1.(1)-(2)
2.(1)-(3)
Part II.使用SQL语句创建数据表和输入数据 1.使用SQL语句创建数据表 P72.例3-2
2.使用SQL语句输入数据 P82.例3.8
习题:P.105(1)(2)insert 数据操作Insert、Update、Delete
P105 3.上机练习题(2)(4)
Insert(100001, 1000, 2002-12-18 0:00:00)(100002, 2000, 2010-3-20 0:00:00)
Update(100001, 1500, 2002-12-18 0:00:00)(100002, 2000, 2012-9-25 0:00:00)
Delete Transact-SQL语句基础1 1.将teaching数据库中score表的studentno列设置为引用表student的外键。ALTER TABLE Score ADD CONSTRAINT FK_score_student FOREIGN KEY(studentno)REFERENCES student(studentno)2.将teaching数据库中class表的classname创建UNIQUE约束。ALTER TABLE class ADD CONSTRAINT UQ_class UNIQUE(classname)执行如下插入语句,查看提示信息
INSERT INTO class VALUES(‘090602’, ’计算机0902’, ’计算机学院’, ’马文斐’)3.为teaching数据库中student表的birthday列创建CHECK约束,规定学生的年龄在17-25岁之间。
ALTER TABLE student ADD CONSTRAINT CK_birthday CHECK(YEAR(GETDATE())-YEAR(birthday))BETWEEN 17 AND 25 执行如下插入语句,查看提示信息
INSERT INTO student(studentno, sname, sex, birthday, classno)VALUES(‘0922221328’, ’张源’, ’男’, ’1983-04-05’, ’090501’)提示:表达式YEAR(GETDATE())-YEAR(birthday)4.为teaching数据库创建规则prof_rule,规定教师职称取值只能为’助教’,’讲师’,’副教授’,’教授’,并将其绑定到teacher表的prof列上。
CREATE RULE prof_rule AS @prof IN(’助教’,’讲师’,’副教授’,’教授’)EXEC sp_bindrule ‘prof_rule’, ‘teacher.prof’
执行如下插入语句,查看提示信息
INSERT INTO teacher VALUES(‘t05002’, ’张源’, ’软件工程’, ’工程师’, ’计算机学院’)提示:表达式IN(职称列表)5.编写程序,输出在1-3000之间能被17整除的最大数值
提示:可使循环控制变量从最大值开始,逐步减少,第一个满足被17整除的数值即为所求解的结果,可通过BREAK语句跳出循环。(如果使循环控制变量从小到大逐步增加,则循环次数将大大增加,程序执行效率将下降。)
PRINT ‘1-3000之间能被17整除的最大数值为:’ +CAST(@i AS CHAR(4))DECLARE @s INT, @i INT SELECT @s=0, @i=3000 WHILE @i>=1 BEGIN
IF @i%17=0
BEGIN
PRINT ‘1-3000之间能被17整除的最大数值为:’ + CAST(@i AS CHAR(4))
BREAK
END @i = @i-1 END Transact-SQL语句基础2 1.利用Transact-SQL语句声明一个长度为16的nchar型变量bookname,并赋初值为“SQL Server数据库编程”,打印该变量。
2.编程求50-100之间的所有能被3整除的奇数之和。
3.编写程序,声明CHAR型变量@ch,并赋初值。判断字符变量@ch中存放的是字母、数字字符还是其他字符,并输出相关信息。(提示:UPPER函数可以将小写字母转换为大写字母)
4.编写程序,求解如下分数序列的前20项之和并打印输出结果。
S=2/1+3/2+5/3+8/5+13/8+21/13+…
分析数列的规律:后一项的分子为前一项的分子和分母之和,后一项的分母则为前一项的分子,通过循环即可实现累加。注意:声明分子和分母为浮点型数据NUMERIC(20,7).5.查询编号为c06108, c08106, c05109课程的学生总评成绩等级,平时成绩usually*0.2+期末成绩final*0.8>=90的为优秀,80-90为良好,70-80为中等,60-70为及格,<60为不及格。(提示:使用CASE …END语句)数据检索1 1.查询course表中所有的记录。2.查询student表中女生的人数。
3.查询teacher表中每一位教授的教师号、姓名和专业名称。
4.利用现有的表生成新表,新表中包括学号、学生姓名、课程号和总评成绩。其中:总评成绩=final*0.8+usually*0.2 5.查询student表中所有年龄大于20岁的男生的姓名和年龄。6.查询计算机学院教师的专业名称。
7.查询Email使用126邮箱的所有学生的学号、姓名和电子邮箱地址。8.查询score表中选修’c05109’或’c05103’课程,并且课程期末成绩在90~100分之间的学生姓名和期末成绩。
9.查询student表中所有学生的基本信息,查询结果按班级号classno升序排列,同一班级中的学生按入学成绩point降序排列。10.查询选修’c05109’课程,并且期末成绩在前5名的学生学号、课程号和期末成绩。(提示:TOP 5)数据检索2
1.按性别分组,求出student表中每组学生的平均年龄。2.统计每个学生期末成绩的平均分。
3.输出student表中没有职称的职工的教师号、姓名、专业和部门。4.查询选修课程且期末成绩不为空的学生人数。
5.查询每名学生的学号、选修课程数目、总成绩,并将查询结果存放到生成的“学生选课统计表”中。6.查询各班学生的人数。
7.查询各课程期末成绩的最高分和最低分。
8.查询教两门及以上课程的教师编号、任课班级数。
9.查询课程编号以’c05’开头、被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序。10.查询所有08级学生的期末成绩平均分,要求利用COMPUTE BY方法显示每一名学生的学生编号、课程号、期末成绩的明细表,以及期末成绩平均分的汇总表。
11.查询所有女生入学成绩的最高分,要求利用COMPUTE BY方法既显示明细又显示汇总结果。SQL语句的高级应用1
1.查询每一位教授的教师号、姓名和讲授的课程名称。表:teacher,course,teach_class 2.分别统计每个学生期末成绩高于75分的课程门数。表:student,score 3.计算每个学生获得的学分。表:student,score,course 4.获取入学时间在2008年到2009年之间的所有学生中入学年龄小于19岁的学生的学号、姓名及所修课程的课程名称。表:student, stu_course 5.查询09级学生的学号、姓名、课程及学分。表:student,stu_course 6.查询所有班级的期末成绩平均分,并按照平均分降序排列。表:score,student 7.查询教师基本信息和教授课程信息,其中包括未分配课程的教师信息。表:teacher,teach_class 8.查询’090501’班级中选修了’韩晋升’老师讲授的课程的学生的学号、姓名、课程名和期末成绩。表:score,student,course,teach_class,teacher 9.查询每门课程的课程号、课程名和选修该课程的学生人数,并按所选人数升序排序。表:score,course 10.查询两门及以上课程的期末成绩超过80分的学生的姓名及其平均成绩。表:student,score SQL语句的高级应用2 – 使用子查询
1.输出student表中年龄大于女生平均年龄的男生的所有信息。2.查询入学考试成绩最高的学生的学号、姓名和入学成绩。3.查询所有教授’c05127’号课程的教师信息。
4.查询同时教授’c05127’和’c05109’号课程的教师信息。
5.查询至少选修了姓名为’韩吟秋’的学生所选修课程中的一门课的学生的学号和姓名。
6.查询没有被任何学生选修的课程编号、课程名称和学分。
7.查询’C语言’课程期末成绩比’电子技术’课程期末成绩高的所有学生的学号和姓名。
8.查询所有班级期末平均成绩的最高分,并将其赋值给变量,通过PRINT语句输出。视图与索引
使用SQL语言
1.创建一个视图v_teacher,查询所有“计算机学院”的教师信息。
CREATE VIEW v_teacher AS SELECT * FROM teacher WHERE department='计算机学院' GO SELECT * FROM v_teacher
2.创建一个视图v_avgstu,查询每个学生的学号、姓名及平均分,并且按照平均分降序排列。
CREATE VIEW v_avgstu AS SELECT TOP 100 student.studentno,sname,avg(final)AS '平均分' FROM student JOIN score ON student.studentno=score.studentno GROUP BY student.studentno,sname ORDER BY avg(final)GO SELECT * FROM v_avgstu
3.修改v_teacher的视图定义,添加WITH CHECK OPTION选项。
ALTER VIEW v_teacher AS SELECT * FROM teacher WHERE department='计算机学院' WITH CHECK OPTION
4.通过视图v_teacher向基表teacher中分别插入数据(‘05039’, ‘张馨月’,’计算机应用’,’讲师’,’计算机学院’)和(‘06018’, ‘李诚’,’机械制造’,’副教授’,’机械学院’),并查看插入数据情况。
INSERT INTO v_teacher VALUES('05039', '张馨月','计算机应用','讲师','计算机学院')GO SELECT * FROM teacher
消息550,级别16,状态1,第1 行
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。语句已终止。
5.通过视图v_teacher将基表teacher中教师编号为05039的教师职称修改为”副教授”。
UPDATE v_teacher SET prof='副教授' WHERE teacherno='05039' GO SELECT * FROM teacher
6.在course表的cname列上创建非聚集索引IDX_name。
CREATE NONCLUSTERED INDEX IDX_name ON course(cname)
7.在student表的studentno和classno列上创建唯一索引UQ_stu,若该索引已经存在,则删除后重建,并输出student表中的记录,查看输出结果的顺序。CREATE UNIQUE INDEX UQ_stu ON student(studentno,classno)
8.教材P.200-204(节7.5.2)使用SQL Server Management Studio创建视图,按照样图进行操作。
第三篇:数据库上机实验总结(含代码)
实验一
(1)无条件单表查询
select sname NAME,'year of birth:' BIRTH,2004-sage BIRTHDAY,LOWER(sdept)DEPARTMENT FROM student;(2)有条件单表查询
SELECT sname,sdept,sage FROM student WHERE sage NOT BETWEEN 20 AND 23;(3)单表嵌套(一层)查询
SELECT sno,sname,sdept FROM student WHERE sdept IN(SELECT sdept FROM student WHERE sname='刘晨');(4)复合条件多表查询
SELECT student.sno,sname,cname,grade FROM student ,sc,course WHERE student.sno=sc.sno AND sc.cno=course.cno;(5)使用COUNT()的单表查询 SELECT COUNT(*)FROM student;(6)使用AVG()的单表查询
SELECT AVG(grade)'平均成绩' from SC where CNO='1';(7)查询结果分组
SELECT cno,COUNT(sno)'人数' FROM sc GROUP BY cno;(8)查询结果排序
SELECT * FROM student ORDER BY sdept,sage DESC;(9)使用通配符的查询
SELECT sname,sno,ssex FROM student WHERE sname NOT LIKE'刘%';(10)使用换码字符的单表查询
SELECT cno,ccredit FROM course WHERE cname LIKE 'DB_Design'ESCAPE'';(11)插入单个元组 插入一个新学生元组
Insert into student(sno,sname,ssex,sdept,sage)values('200215128','陈冬','男','IS',18)(12)插入子查询结果
对每一个系,求学生平均年龄,并把结果存入数据库 Create table dept_age(sdept char(15),avg_age int)Insert into dept_age(sdept,avg_age)select sdept,avg(sage)from student group by sdept(13)修改某个元组的值
将学生200215121的年龄改为22岁
Update student set sage=’22’ where sno=’200215121’(14)修改多个元组的值 将所有学生的年龄增加一岁 Update student set sage=sage+1(15)删除一个元组的值 删除学号为200215128的学生记录
delete from student where sno='200215128'(16)建立视图 建立信息系学生的视图
create view is_student as select sno,sname,sage from student where sdept='IS' ×(17)查询视图
查询选修了1号课程的信息系学生信息
Select is_student.sno,sname from is_student,sc where is_student.sno=sc.sno and sc.cno=’1’ ×(18)更新视图
将信息系学生视图is_student中学号为95001的学生姓名改为李楠 update is_student set sname='李楠' where sno='95002' 将下列问题用SQL命令表示:
1.查询‘IS’系学生的学号、姓名、性别。
SELECT sno,sname,ssex FROM student WHERE sdept='IS';2.查询‘IS’系年龄在20岁以下的学生。
SELECT * FROM student WHERE sdept='IS'AND sage<20;3.查询所有不姓‘刘’的学生的学号、姓名、性别。
SELECT sname,sno,ssex FROM student WHERE sname NOT LIKE'刘%';4.查询student表中学生的总人数。
SELECT COUNT(*)'总人数' FROM student;5.查询和‘李勇’同性别的所有同学的姓名。
SELECT sname from student where ssex in(select ssex from student where sname='李勇');6.查询和‘李勇’同性别并同系的所有同学的姓名。
Select sname from student where ssex in(select ssex from student where sname='李勇')and sdept in(select sdept from student where sname='李勇')7.查询选修2号课程的学生的学号。Select sno from sc where cno='2' 8.求3号课程的平均成绩。
Select avg(grade)from sc where cno=’3’ 9.查询选修2号课程的学生的最高分。Select max(grade)from sc where cno=’2’
10.按成绩降序排列,输出‘IS’系学生选修了2号课程的学生的姓名和成绩。
Select sname,grade from student,sc where sdept='IS' and cno='2' and student.sno=sc.sno order by grade desc SQL查询分析器下建数据库的命令代码: create database 霍双双200826352 on(name='霍双双200826352_data',filename='E:
霍霍
双双
双双
***5
霍霍
双双
双双200826352_data.mdf',size=10mb,maxsize=50mb,filegrowth=10%)log on(name='霍双双200826352_log',filename='E:200826352_log.ldf',size=10mb,maxsize=50mb,filegrowth=10%)在查询分析器重建立各表的命令代码: 建立student表:
create table student(sno char(5)primary key,sname char(20),ssex char(2),sage int,sdept char(15))建立course表:
create table course(cno char(2)primary key,cname char(15),cpno char(2),ccredit int)建立cs表:
use 霍双双200826352 create table sc(sno char(5),cno char(2),grade smallint,primary key(sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno))实验二
T-SQL查询、存储过程、触发器、完整性上机作业题 第一部分 :T-SQL程序设计
(1).如果3号课程的平均成绩在80分以上,则输出“3号课程成绩良好”,否则输出“3号成绩一般” declare @avg float set @avg=(select avg(grade)from sc where cno='3')if @avg>80print'3号课程成绩良好'else print'3号成绩一般'(2)计算并输出95003号学生的平均成绩,若无该生信息,则显示“该生未选课”,提示信息.declare @avg float if(select count(*)from sc where sno='95003')=0 print '该生未选课' else begin select @avg=avg(grade)from sc where sno='95003' print'95003号学生平均成绩' print @avg end(3).如果有成绩在90分以上的学生,则显示他的学号,课程和成绩,否则显示“没有学生的课程成绩在90分以上”提示信息
declare @text char(10)if exists(select grade from SC where grade>90)select Sno,Cno,Grade from SC where Grade>90 else begin set @text='没有学生的课程成绩在90分以上' print @text end ×(4).利用游标逐行显示student表中的记录。
declare stu cursor for select *from student open stu fetch next from stu while @@fetch_status=0 fetch next from stu close stu deallocate stu(5).用自定义函数计算全体男生的平均年龄
create function avg_age(@sex char(2))returns int as begin declare @aver int select @aver=(select avg(Sage)from Student where Ssex=@sex)return @aver end go declare @aver1 int,@sex char(2)set @sex='男' select @aver1=dbo.avg_age(@sex)select @aver1 as '全体男生的平均年龄' go(6).显示course表中课程名的前2个字符。select substring(Cname,1,2)from Course(7).在一列中显示student中各元组的学号中的年级,列名显示为“年级”;另一列中显示学号中的学生序列号,列名显示为“序号”。
select substring(Sno,1,2)年级,substring(Sno,3,len(Sno)-1)序号 from Student order by Sno(8).在选课表中显示学号、课程号,并根据成绩:0-59显示“不合格”;60-79显示“合格”;80-89显示“良好”;90-100显示“优秀。”
select Sno as '学号',Cno as '课程号', grade =case when Grade<=59 then '不合格' when Grade>=60 and Grade<=79 then '合格' when Grade>=80 and Grade<=89 then '良好' else '优秀' end from SC 第二部分 :存储过程
(1)创建一个为worker表添加职工记录的存储过程Addworker go
if exists(select name from sysobjects where name='Addworker' and type='P')drop procedure Addworker go create proc Addworker @职工号 char(4),@姓名 char(8),@性别 char(2),@出生日期 datetime,@党员否 char(2),@参加工作 datetime,@部门号 char(4)as insert into worker(职工号,姓名,性别,出生日期,党员否,参加工作,部门号)values(@职工号,@姓名,@性别,@出生日期,@党员否,@参加工作,@部门号)go exec Addworker '16','王璐','女','1988-11-20','否','2010-08-21','11'(2)创建一个存储过程Delworker删除worker表中指定职工号的记录 go
if exists(select name from sysobjects where name='Delworker' and type='P')drop procedure Delworker go create procedure Delworker @职工号 char(4)as delete from worker where 职工号=@职工号
go exec Delworker '16'(3)显示存储过程Delworker的定义信息。Sp_helptext Delworker(4)删除存储过程Addworker和Delworker。drop procedure Addworker, Delworker(5)创建并执行以下存储过程:
a.从数据库表中查询,返回学生学号、姓名、课程名、成绩 use 霍双双200826351 go if exists(select name from sysobjects where name='select_stu' and type='P')drop procedure select_stu go create procedure select_stu as select SC.Sno,Sname,Cname,Grade from Student,SC,Course where SC.Sno=Student.Sno and SC.Cno=Course.Cno go exec select_stu b.从数据库表中查询指定学号的学生学号,姓名,该存储过程接受与传递参数,精确匹配的值 use 霍双双200826351 go if exists(select name from sysobjects where name='select_sno' and type='P')drop procedure select_sno go create procedure select_sno @Sno char(5)as select Sno,Sname from Student where Sno=@Sno go exec select_sno '95002' ×第三部分:触发器
(1)在表depart上创建一个触发器 depart_update , 当更改部门号时同步更改 worker表中对应的部门号。Go If exists(select name from sysobjects where name='depart_update'and type='tr')drop trigger depart_update go Create trigger depart_update on depart for update as set worker.部门号=(select 部门号 from inserted)where worker.部门号=(select 部门号from deleted)(2)在表worker上创建一个触发器worker_delete,当删除职工记录时同步删除salary表中对应的职工记录。Go If exists(select name from sysobjects where name='worker_delete'and type='tr')drop trigger worker_delete go create trigger worker_delete on worker for delete as delete salary where salary.职工号=(select 职工号 from deleted)(3)删除触发器depart_update(4)删除触发器worker_delete(5)在数据库中创建一个触发器,向选课表添加一条纪录时,检查该纪录的学号在学生表中是否存在,检查该纪录的课程号在课程表中是否存在,若其中有一项为否,则拒绝添加操作,并显示“违反数据一致性”提示信息。Go If exists(select name from sysobjects where name='add_student'and type='tr')drop trigger add_student go
create trigger add_student on sc for insert as go 第四部分:数据库完整性
1、实施worker表的“性别”字段默认值为“男”的约束 create default default_sex as '男' go sp_bindefault'default_sex','worker.性别'
2、实施salary表的“工资”字段值在0~9999的约束、create rule salary_rule as @salary='[0~9999]' go sp_bindrule 'salary_rule','salary.工资'
3、实施depart表的“部门号”字段值唯一的非聚集索引的约束
4、为worker表建立外键“部门号”,参考表depart的“部门号”列。
5、建立一个规则 sex:@性别=’男’OR @性别=’女’,将其绑定到worker表的“性别”列上。Create rule sex as @性别='男'OR @性别='女' Go Sp_bindrule 'sex','worker.性别'
6、删除1小题所建立的约束。
7、删除2小题所建立的约束。
8、删除3小题所建立的约束
9、删除4小题所建立的约束
10.解除5小题所建立的绑定并删除规则sex
第四篇:数据库上机实验8实验报告
上机实验八——完整性约束的实现
一、实习目的:
掌握SQL中实现数据完整性的方法,加深理解关系数据模型的三类完整性约束。
二、实习准备:
1.复习“完整性约束SQL定义”
2.完成习题四第10题中的各项操作的SQL语句。
3.了解SQL Server 中实体完整性、参照完整性和用户自定义完整性的实现手段
三、实习内容:
1.验证习题四第10题四个表结构的SQL语句。
表一:Sstudent CREATE TABLE Sstudent(Sno char(7)NOT NULL PRIMARY KEY, Sname VarChar(20)NOT NULL, Ssex Char(2)NOT NULL DEFAULT('男')check(Ssex IN('男','女')), Sage smallint check(Sage >14 AND Sage<65), Clno Char(5)NOT NULL REFERENCES Cclass(Clno)ON UPDATE CASCADE);
表二:Ccourse CREATE TABLE Ccourse(Cno Char(1)NOT NULL PRIMARY KEY, Cname VarChar(20)NOT NULL, Credit Smallint CHECK(Credit IN(1,2,3,4,5,6)));
表三:Cclass CREATE TABLE Cclass(Clno Char(5)NOT NULL PRIMARY KEY, Speciality VarChar(20)NOT NULL, Inyear Char(4)NOT NULL, Number Integer CHECK(Number>1 AND Number<100), Mointor Char(7)REFERENCES Student(Sno));
表四:Ggrade CREATE TABLE Ggrade(Sno Char(7)NOT NULL REFERENCES Student(Sno)ON DELETE CASCADE ON UPDATE CASCADE, Cno Char(1)NOT NULL REFERENCES Course(Cno)ON DELETE CASCADE ON UPDATE CASCADE, Gmark Numeric(4,1)CHECK(Gmark>0 AND Gmark<100), PRIMARY KEY(Sno,Cno));
2.SQL Server中提供了那些方法实现实体完整性、参照完整体和用户自定义完整性
答:实体完整性:是通过主码的定义(PRIMARY KEY)来实现的;
参照完整性:是利用外部码(REFERENCES)的说明,以限制相关表中某些属性的取值,当用户违反规则时,提供三种:RESTRICT(限制策略),CASCADE(级联策略),SET NULL(置空策略);
用户自定义完整性:check约束,对元组的CHECK约束
第五篇:《网络数据库应用》上机实验
《网络数据库应用》实验大纲
实验学时为18学时,要求完成七个实验。为了保证能按时完成实验,学生应事先按照下面的具体要求编写好有关有程序,然后在安排的实验期间进行调试,只有程序调试通过后,实验方为合格。
实验
一、创建数据库及数据库对象(2课时)
要求自定义数据库模式,建立SQL的数据库表及其他数据库对象 实验
二、数据库安全及备份与恢复练习(4课时)
要求能够使用数据库安全和备份与恢复各种方法。
实验
三、分布与复制(2课时)
学习实用Sqlserver 2000 分布式数据库,建立出版服务器,发布服务器,订阅服务器.并且完成自定义数据库的分布.实验
四、Transact_SQL语言(2课时)
学习Transact_SQL语言,建立数据库应用中存储过程,触发器,自定义函数.实验
五、利用ODBC,DAO开发数据库应用(2课时)
使用vb建立基于DAO数据对象的数据库应用程序
实验
六、ADO对象(3课时)
要求对ADO的对象进行操作
实验
七、JDBC WEB应用(3课时)
要求对WEB中使用的一小程序进行实验