数据库原理与SQLServer课程实验报告.docx
《数据库原理与SQLServer课程实验报告.docx》由会员分享,可在线阅读,更多相关《数据库原理与SQLServer课程实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
![数据库原理与SQLServer课程实验报告.docx](https://file1.bdocx.com/fileroot1/2023-4/17/d122b534-8c9d-4f51-a46c-db47fb71fa0f/d122b534-8c9d-4f51-a46c-db47fb71fa0f1.gif)
数据库原理与SQLServer课程实验报告
中国地质大学江城学院
数据库原理与SQLServer
课程实验报告
姓名涂晨曦
班级学号23000801
指导教师宋亚岚
2010年11月30日
实验1熟悉SQLServer2000环境
目的和要求
(1)掌握SQLServer服务器的安装
(2)掌握企业管理器的基本使用方法
(3)掌握查询分析器的基本使用方法
(4)对数据库及其对象有一个基本了解
实验准备
(1)了解SQLServer2000各种版本安装的软/硬件要求
(2)了解SQLServer支持的身份验证模式
(3)SQLServer各组件的主要功能
(4)对数据库、表、数据库对象有一个基本了解
(5)了解在查询分析器中执行SQL语句的方法
实验内容及结果
1.利用企业管理器访问系统自带的pubs数据库。
(1)启动SQLServer服务管理器。
(2)以系统管理员身份登录到企业管理器并访问pubs数据库。
(3)在企业管理器的目录树中展开文件夹→展开pubs数据库图标,则将列出该数据库所有对象,如表、视图、存储过程、默认、规则等。
(4)选中pubs下的“表”图标,将列出pubs数据库所有的表(系统表和用户表),在此以用户表publishers为例,打开该表,查看其内容。
(5)在表的尾部插入记录(9943,zhang,Beijing,null,china)和(1408,li,shanghai,null,china),会发生情况?
2.查询分析器的使用
(1)在查询分析器对象浏览器的的目录树中展开pubs数据库图标,则将列出该数据库的所有对象,如表、视图、存储过程等。
(2)以pubs数据库的用户表stores为例,选中该表的图标,单击鼠标右键,出现快捷菜单,执行“打开”菜单项,打开该表,查看其内容。
(3)在表的尾部插入一记录。
(4)在查询分析器的输入窗口,输入如下T-SQL语句:
usepubs
select*fromstores
go
实验2数据库管理
目的和要求
(1)了解SQLServer数据库的逻辑结构和物理结构
(2)了解表的结构和特点
(3)了解SQLServer的基本数据类型
(4)了解空值概念
(5)学会在企业管理器中创建数据库和表
(6)学会使用T-SQL语句创建、修改数据库和表
实验准备
(1)明确创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
(2)创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长即增长方式)和存储数据的文件。
(3)确定数据库包含哪些表,以及所包含的个表的结构,还要了解SQLServer的常用数据类型,以创建数据库的表。
(4)了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL语句创建。
实验内容及结果
1.创建test1数据库,逻辑文件名为testdata,数据文件名为test1data.mdf,初始容量为1MB,最大容量为10MB,空间大小按10%递增。
①SQL命令:
CREATEDATABASEtest1
ON
(NAME=testdata,
FILENAME='D:
\data1\test1data.mdf',
SIZE=1MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
②结果
2.创建test2数据库,逻辑主数据文件名为testdata,存放在文件夹“D:
\text”中,数据文件名为test2data.mdf,日志文件名为test2data.ldf,初始容量为2MB,最大容量为20MB,递增大小为2MB。
①SQL命令:
CREATEDATABASEtest2
ON
(NAME=testdata,
FILENAME='D:
\text\test2data.mdf',
SIZE=1MB,
MAXSIZE=10MB,
FILEGROWTH=10%
)
LOGON
(NAME=test2data,
FILENAME='D:
\text\test2data.ldf',
SIZE=2MB,
MAXSIZE=20MB,
FILEGROWTH=2MB)
②结果:
3.修改test2数据库,添加两个次数据文件test_add1和test_add2,他们的初始大小为10MB,不允许自动增长空间。
将test2数据库中的test2data主数据文件的初始大小修改为5MB,添加一个日志文件test2log.ldf,初始容量为1MB,最大容量为5MB,空间大小按10%递增。
①SQL命令:
alterdatabasetest2
addfile(
name=test_add1,
filename='D:
\text\test_add1.ndf',
size=10mb)
go
alterdatabasetest2
addfile(
name=test_add2,
filename='D:
\text\test_add2.ndf',
size=5mb)
go
alterdatabasetest2
addlogfile(
name=test2log,
filename='D:
\text\test2log.ldf',
size=1mb,
maxsize=5mb,
filegrowth=10%)
②结果:
4.压缩test2数据库文件为原来的20%。
①SQL命令:
dbccshrinkdatabase(test2,20)
②结果:
5.删除test1数据库。
①SQL命令:
dropdatabasetest1
②结果:
6.创建名称为“通讯录”数据库,并在该数据库中创建名为“个人信息”的数据表,包括如下字段:
编号(int,自动编号)、姓名(char(8)notnull)、性别(char
(2)notnull)、出生日期(datetime)、联系方式(char(16))。
①SQL命令:
createdatabase通讯录
on(name=数据库_data,filename=’D:
\sqldata\数据库_data.mdf’)
go
createtable个人信息
(编号intidentity(100,1)primarykey,
姓名char(8)notnull,
性别char
(2)notnull,
出生日期datetime,
联系方式char(16)
)
②结果:
7.利用ADD子句为个人信息表添加家庭地址字段(text,null),修改性别为int类型。
从表中删除性别、联系方式字段。
8.在“个人信息”表中插入如下记录信息:
编号
姓名
性别
出生日期
联系方式
100
陈兵
男
1970-12-01
552233
101
金阳
男
1972-09-08
567121
102
王小美
女
1978-03-15
521111
103
王工林
女
1978-08-18
721331
①用企业管理器插入信息:
9.将编号为103记录的姓名改为“楮红”。
①SQL命令:
update个人信息
set姓名=’楮红’
where个人信息.编号=’103’
②结果:
10.删除所有男同志的数据记录。
①SQL命令:
deletefrom个人信息where性别=’男’
②结果:
实验3查询管理
目的和要求
(1)理解索引的概念、索引的作用、索引的分类;
(2)掌握使用命令和企业管理器创建和删除索引的方法。
(3)理解查询的概念;掌握使用SQL命令创建查询的方法;
实验准备
(1)了解CREATEINDEX语句的语法格式
(2)了解DROPINDEX语句的语法格式
(3)了解SELECT语句的基本语法格式
(4)了解SELECT语句的执行方法
实验内容及结果
1.创建“个人信息”表,在“个人信息”表中插入如下记录信息:
编号
姓名
性别
出生日期
联系方式
100
陈兵
男
1970-12-01
552233
101
金阳
男
1972-09-08
567121
102
王小美
女
1978-03-15
521111
103
王工林
女
1978-08-18
721331
(1)关于姓名、性别建立复合唯一索引,索引名为“name-id”,要求输入数据时,显现重复的姓名和性别组合的值时,忽略数据的重复。
①SQL命令:
createunique
indexname_idon个人信息(姓名,性别)
with
ignore_dup_key
②结果:
(2)关于出生日期建立非簇索引,要求填充因子为90,索引名为“birthday-ID”。
(3)修改索引birthday-ID,要求按照出生日期的降序排序,填充因子为90,指定删除同名索引。
①SQL命令:
create
indexbirthday_ID
on个人信息(出生日期desc)
with
pad_index,fillfactor=90,
drop_existing
②结果:
(4)使用SQL命令查看“个人信息”表的空间使用情况。
①SQL命令:
sp_spaceused个人信息
②结果:
2.设学生选课数据库中有三个数据表:
S(SNO,SNAME,SEX,BIRTHDAY,SDEPARTMENT,TEL)
C(CNO,CNAME,TEACHER,PCNO)
SC(SNO,CNO,GRADE)
完成下列任务:
(1)定义表结构并向S、C和SC表中输入记录。
(2)检索每个学生的出生年份。
①SQL命令:
selectsno,year(birthday)as'出身年份'froms
②结果:
(3)在S中检索学生的姓名和出生年份,输出的列名分别为STUDENT_NAME和BIRTH_YEAR。
①SQL命令:
selectsnameas'STUDENT_NAME',year(birthday)as'BIRTH_YEAR'froms
②结果:
(4)向基本表SC中插入一条元组(S0404,C06,90)。
①SQL命令:
insertintos(sno,sname,tel)values('J0404','李洋','44-5555')
insertintoscvalues('J0404','C06','90')
②结果:
(5)把课程名为VB的成绩从基本表SC中删除。
①SQL命令:
deletefromscwherecno='C05'
②结果:
(6)把女生的成绩提高10%。
①SQL命令:
updatesc
setgrade=grade*1.1
wheresc.sno='J0401'
②结果:
实验4视图和查询管理
目的和要求
(1)掌握子查询和连接查询的表示
(2)掌握SELECT语句的GROUPBY子句的作用和使用方法
(3)掌握SELECT语句的ORDERBY子句的作用和使用方法
(4)理解视图的概念
(5)掌握使用视图设计器和SQL命令创建视图的方法
(6)掌握视图数据的查询、插入、修改、删除
实验准备
(1)了解子查询和连接查询的方法
(2)了解SELECT语句的GROUPBY子句的作用和使用方法
(3)了解SELECT语句的ORDERBY子句的作用和使用方法
(4)理解视图与查询的区别
(5)掌握使用视图设计器创建视图的方法
(6)掌握使用SQL命令创建视图的方法
实验内容及结果
设学生选课数据库中有三个数据表:
S(SNO,SNAME,SEX,BIRTHDAY,SDEPARTMENT,TEL)
C(CNO,CNAME,TEACHER,PCNO)
SC(SNO,CNO,GRADE)
完成下列任务
1.检索学习课程号为C02的学生学号和姓名。
①SQL命令:
selects.sno,snamefroms,sc
wherecno='C02'ands.sno=sc.sno
②结果:
2.检索没有选修课程“数据库”的学生学号和姓名。
①SQL命令:
selects.sno,snamefroms,sc,c
wherecname<>'数据库'ands.sno=sc.snoando=o
②结果:
3.检索选修课程号为C02或C04的学生学号。
①SQL命令:
selectsnofromsc
wherecno='c02'orcno='c04'
②结果:
4.检索至少选修课程号为C02和C04的学生姓名。
①SQL命令:
selectsnamefroms
wheresnoin(selectsc1.snofromscassc1,scassc2
wheresc1.sno=sc2.snoando='c02'ando='c04')
②结果:
5.检索没有选修课程“数据库”的学生的姓名和年龄。
①SQL命令:
selectsname,year(getdate())-year(birthday)froms
wheresnoin(selectsnofromscwherecno<>'数据库')
②结果:
6.列出选修课程超过3门的学生姓名和选修门数。
①SQL命令:
selectsname,count(s.sno)as课程门数froms,sc
wheres.sno=sc.sno
groupbysname
havingcount(s.sno)>3
②结果:
7.求选修了各课程的学生人数。
①SQL命令:
selectcno,count(sno)as学生人数fromsc
groupbycno
②结果:
8.在表SC中求选修课程C01的学生的学号和得分,并将结果按分数降序排序。
①SQL命令:
selectsno,gradefromsc
orderbygradedesc
②结果:
9.查找每个学生的学号及选修课程的平均成绩情况。
①SQL命令:
selectsno,avg(grade)as平均分fromsc
groupbysno
②结果:
10.创建视图pride7,按照学号升序,将前30%的同学的学号、平均成绩显示出来。
①SQL命令:
createviewpride7
as
selecttop30percentsno,avg(grade)as平均成绩
fromsc
groupbysno
orderbysnoasc
②结果:
11.创建加密视图pride4,将课程名及课程平均成绩显示出来。
①SQL命令:
createviewpride4
withencryption
as
selectcname,avg(grade)as平均成绩fromc,sc
whereo=o
groupbycname
②结果:
12.创建视图pride5,将课程成绩大于80分的学生姓名、课程名及课程成绩显示出来。
要求当修改视图pride5时,必须满足限制条件:
成绩大于80分。
①SQL命令:
createviewpride5
as
selects.sname,cname,gradefroms,c,sc
wheres.sno=sc.snoando=oandgrade>80
withcheckoption
②结果:
13.从视图pride4中查询课程平均成绩在70到80分之间的课程名。
①SQL命令:
selectcnamefrompride4
where平均成绩between70and80
②结果:
14.向视图pride6中,插入一条记录:
(j0408,乔海石,1997-07-07,计算机系,女)
①SQL命令:
insertintopride6values('J0408','乔海石',1997-07-07,'计算机系',null,'女')
15.删除视图pride6中在1997年出生的所有记录。
①SQL命令:
deletefrompride6whereyear(birthday)=1997