数据库上机实验报告.docx
《数据库上机实验报告.docx》由会员分享,可在线阅读,更多相关《数据库上机实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
数据库上机实验报告
实验一:
建立数据库及基本表
一、实验目的
1、了解SQLServer数据库的逻辑结构和物理结构;
2、了解SQLServer的基本数据类型;
3、学会在企业管理器中创建数据库和表;
4、使用SQL查询分析器用CREATE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。
二、实验内容
1、创建数据库和查看数据库属性。
2、创建表。
3、查看和修改表结构。
4、熟悉企业管理器和查询分析器工具的使用方法
三、实验步骤
1、在企业管理器中创建数据库和数据表。
(1)使用企业管理器建立图书管理数据库,数据库名为BM,初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名和物理文件名均采用默认值。
详细步骤:
(2)在企业管理器中查看图书管理数据库的属性,并进行修改,使之符合要求。
(3)通过企业管理器,在建好了图书管理数据库BM中建立图书(book)、读者(reader)和借阅(borrow)3个表,其结构为:
图书(书号,类别,出版社,作者,书名,定价);读者(编号,姓名,单位,性别,电话);
借阅(书号,读者编号,借阅日期)。
三个表各个字段的数据类型:
Book表
Reader表
Borrow表
字段名
数据类型
说明
字段名
数据类型
说明
字段名
数据类型
说明
书号
编号
书号
类别
姓名
读者编号
出版社
单位
借阅日期
作者
性别
书名
电话
定价
(4)利用企业管理器向表中输入数据。
2、在查询分析器中创建数据库和数据表
(1)创建数据库S-C的sql语句:
createdatabases_c
(2)在数据库S-C下,创建基本表学生表student(sno,sname,ssex,sage,sdept)的sql语句:
createtablestudent(snoc(8),snamec(10),ssexc
(2),sage(4),sdeptc(8))
创建基本表课程表course(cno,cname,ccredit)的sql语句:
createtablecourse(cnoc(4),cnamec(10),ccreditc
(2))
创建基本表成绩表sc(sno,cno,grade)的sql语句:
createtablesc(snoc(8),cnoc(4),graden(4))
(3)在窗口下分别键入DROPTABLEStudent及DROPTABLESC命令,运行后观察结果。
再重新运行和,并观察结果。
(4)利用查询分析器编写SQL语句修改表。
在student表中增加一个新的字段“smerit”(特长),数据类型为char(30);该sql语句:
altertablestudentaddsmeritc(30)
修改student表中sdept字段的数据类型为varchar(20),其sql语句
altertablestudentaltersdeptvarchar(20)
实验二:
数据查询
一、实验目的
1、掌握查询分析器的使用方法,加深对SQL的语句的理解;
2、使用查询分析器用SELECT语句进行数据查询;
3、熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二、实验内容
1、完成简单查询操作。
该实验包括投影、选择条件表达,数据排序,使用临时表等。
2、完成连接查询、嵌套查询、组合查询和统计查询等操作。
三、实验步骤
1、熟悉pubs数据库中的三个用户表:
employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date),
job(job_id,job_desc,min_lvl,max_lvl),publishers(pub_id,pub_name,city,state,country)。
他们分别是关于雇员、职务和出版社的基本表。
2、在查询分析器在窗口下用SELECT语句完成单表查询:
查询全体出版社的详细记录;
Sql语句:
select*frompublishers
查询所有工作的job_id为7的职工的职工编号;
Sql语句:
selectemp_idfromemployeewherejob_id=7
查询工作的job_id小于7的职工的职工编号;
Sql语句:
selectemp_idfromemployeewherejob_id<7
查询在Germany和France的出版社的名字和所在城市;
Sql语句:
selectpub_name,cityfrompublisherswherecountryin(Germany,France)
查询lname为Jablonski的雇员的fname、job_id和hire_date;
Sql语句:
selectfname,job_id,hire_datefromemployeewherelname=“Jablonski”
查询lname的前两个字符为cr的职员的编号和fname;
Sql语句:
selectemp_id,fnamefromemployeewherelnamelike“cr%”
3、在查询分析器在窗口下用SELECT语句完成连接(嵌套)查询:
查询各个工作号与相应的工作人数;
Sql语句:
selectjob.job_id,count(*)as人数
fromemployee,job
where=
groupby
查询每个职工及其工作的描述(job_desc)的情况;
Sql语句:
selectemployee.emp_id,job_desc
fromemployee,job
where=
4、在查询分析器在窗口下用SELECT语句完成集合查询:
查询job_id为5和job_id为6的职工的姓名和职工所在出版社的名字
Sql语句:
(selectfname,pub_namefromemployee,publishers
where=andjob_id=5)
union
(selectfname,pub_namefromemployee,publishers
where=andjob_id=6)
实验三:
数据更新、视图的创建与修改
一、实验目的
1、学会使用INSERT、UPDATE、DELETE等SQL语句进行数据更新;
2、学会使用CREATE、DROP等SQL语句创建和删除视图。
二、实验内容
1、在查询分析器中使用INSERT、UPDATE、DELETE语句进行数据更新。
2、在查询分析器中使用CREATE、DROP语句创建和删除视图。
三、实验步骤
1、利用企业管理器在数据库S-C的三个表中分别插入以下数据:
学生表student:
sno
sname
ssex
sage
sdept
95001
李勇
男
20
CS
95002
刘晨
女
19
IS
95003
王敏
女
18
MA
95004
张立
男
19
IS
课程表course:
cno
cname
cpno
ccredit
1
数据库
5
4
2
数学
2
3
信息系统
1
4
4
操作系统
6
3
5
数据结构
7
4
6
PASCAL语言
6
4
成绩表sc:
sno
cno
grade
95001
1
92
95001
2
85
95001
3
88
95002
2
90
95002
3
80
2、在查询分析器中:
(1)选择数据库S-C,用INSERT语句向学生表student中插入一个新生记录(学号:
95020;姓名:
陈东;性别:
男;所在系:
IS;年龄:
18)。
Sql语句:
insertintostudent
values(“9520”,”陈东”,”男”,18,“IS”)
(2)在数据库S-C中建立一个新表deptage,其中一个字段存放系名,另一个字段存放相应的学生平均年龄;然后对学生表student按系分组求平均年龄,再把系名和平均年龄存入新表中。
Sql语句:
createtabledeptage(sdeptc(4),avgan(4))
selectsdept,avg(sage)fromstudentgroupbysdept
3、在查询分析器中用UPDATE语句更改表中数据。
(1)将所有学生的年龄都增加1岁。
updatestudentsetsage=sage+1
(2)将IS系全体学生的成绩置零。
updatescsetgrade=0
wheresnoin(selectsnofromstudentwheresdept=”IS”)
(3)分别运行SQL语句,观察运行结果。
4、在查询分析器中用DELETE语句删除表中数据。
(1)删除学号为“95020”的学生记录。
deletefromstudentwheresno=”95020”
(2)删除IS系所有学生的成绩记录。
deletefromstudentwheresdept=”IS”
(3)分别运行SQL语句,观察运行结果。
5、在查询分析器中用CREATE语句建立视图。
建立IS系学生的视图IS_student。
createviewIS_student
asselect*fromstudentwheresdept=”IS”
实验四:
数据完整性
一、实验目的
在课程结束时,使用SQL查询分析器用PRIMARYKEY、CHECK、FOREIGNKEY……REFERENCES、NOTNULL、UNIQUE等关键字验证SQL2000的实体完整性、参照完整性及用户定义完整性。
二、实验内容
1、在查询分析器中用PRIMARYKEY子句保证实体完整性;
2、在查询分析器中用FOREIGNKEY……REFERENCES子句保证参照完整性;
3、在查询分析器中用短语NOTNULL、UNIQUE、CHECK、DEFAULT保证用户定义完整性。
三、实验步骤
1、在企业管理器中为图书管理数据库BM各表加完整性约束:
(1)定义每个表的主键;
详细步骤:
ALTERTABLEbook
ADDCONSTRAINTbkPRIMARYKEY(书号)
ALTERTABLEreader
ADDCONSTRAINTrkPRIMARYKEY(编号)
ALTERTABLEborrow
ADDCONSTRAINTbkPRIMARYKEY(书号,读者编号)
(2)借阅表与图书表间、借阅表与读者表之间的ForeignKey(外码)约束;
详细步骤:
ALTERTABLEborrow
ADDCONSTRAINTbK_owFOREIGNKEY(书号)REFERENCESbook(书号)
ALTERTABLEborrow
ADDCONSTRAINTrK_owFOREIGNKEY(读者编号)REFERENCESreader(编号)
(3)实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;
详细步骤:
ALTERTABLEborrow
ADDCONSTRAINTU_bhUNIQUENONCLUSTERED(书号)
ALTERTABLEborrow
ADDCONSTRAINTU_dhUNIQUENONCLUSTERED(读者编号)
(4)实现读者性别只能是“男”或“女”的check(检查)约束;
详细步骤:
ALTERTABLEreader
ADDCONSTRAINTbrCHECK(性别 IN(’男’,’女’))
(5)图书表的定价字段的缺省值为0
详细步骤:
ALTERTABLEreader
ALTERSETDEFAULTd10FORbook(定价)
实验五:
数据库应用系统的设计
一、实验目的
1、通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握本书中所讲解的内容;
2、提高学生分析能力和抽象能力的目的。
二、实验内容
1、设计一个简单的图书管理系统的数据库。
2、用SQL实现数据库的设计,并在SQLServer上调试通过。
三、实验步骤
三个表各个字段的数据类型:
Book表
Reader表
Borrow表
字段名
数据类型
说明
字段名
数据类型
说明
字段名
数据类型
说明
书号
编号
书号
类别
姓名
读者编号
出版社
单位
借阅日期
作者
性别
书名
电话
定价
1、图书管理系统的E—R图:
2、图书管理系统的关系模式:
book(书号,类别,出版社,作者,书名,定价)
reader(编号,姓名,单位,性别,电话)
borrow(书号,读者编号,借阅日期)
各关系模式之间的相互关系:
book与borrow之间是一对多关系
reader与borrow之间是一对多关系
3、图书管理系统的视图及其作用:
read_book(读者姓名,书名,借阅日期)
4、数据库的定义sql语句:
createdatabaserb
基本表定义的sql语句(包含约束):
createtablebook(书号c(5),类别c
(2),出版社c(20),作者c(10),书名c(10),定价n(6),
PRIMARYKEY(书号)
)
createtablereader(编号c(4),姓名c(10),单位c(20),性别c
(2),电话c(10),
PRIMARYKEY(编号)
)
Createtableborrow(书号c(5),读者编号c(4),借阅日期d(8),
PRIMARYKEY(书号,读者编号),
FOREIGNKEY(书号)REFERENCESbook(书号),
FOREIGNKEY(读者编号)REFERENCESreader(编号)
)
视图定义的sql语句:
createviewread_book(读者姓名,书名,借阅日期)
asselect姓名,书名,借阅日期
frombook,reader,borrow
wherebook.书号=borrow.书号andborrow.读者编号=reader.编号
5、在SQLServer上进行调试。