数据库实验报告.docx
- 文档编号:3589474
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:52
- 大小:3.89MB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(52页珍藏版)》请在冰豆网上搜索。
数据库实验报告
计算机与信息学院
数据库系统概论实验报告
专业班级
学生姓名及学号
课程教学班号
任课教师
实验指导教师
实验地点
三号实验楼第四机房
2012~2013学年第二学期
实验1使用向导创建和删除数据库
一、实验目的
1.熟悉SQLServer中SQLServerManagementStudio的环境
2.了解SQLServer数据库的逻辑结构和物理结构
3.掌握使用向导创建和删除数据库的方法
二、实验要求
1.熟练使用SSMS进行数据库的创建和删除操作。
2.完成实验报告。
三、实验内容
设有一学籍管理系统,其数据库名为“EDUC”。
初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;
日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”,物理文件名为“student_data.mdf,存放路径为“E:
\sql_data”(注意:
此文件名必须已经建立的前提下才可以此操作)。
日志文件的逻辑文件名为“student_log”,物理文件名为“student_log.ldf”,存放路径为“E:
\sql_data”。
四、实验步骤
1.使用SQLServerManagementStudio(简称SSMS)创建数据库。
(1)启动SSMS
在开始菜单中:
所有程序-SQLServer2005-SQLServerManagementStudio
单击“连接”按钮,便可以进入【SQLServerManagementStudio】窗口。
如果身份验证选择的是“混合模式”,则要输入sa的密码。
(2)建立数据库
在“对象资源管理器”窗口,建立上述数据库EDUC。
在数据库节点上右击选择新建。
同时建立一个同样属性的数据库EDUC1。
2.使用向导删除上面建立的数据库。
用SSMS删除建立的数据库EDUC。
3、数据库的分离
将刚建好的数据库分离出来,即点击新建的EDUC——任务——分离,将删除连接和更新打一个钩,然后点击确定。
如图所示:
4、数据分离出来之后可以附加进去
。
即右击数据库——附加——点击添加按钮,
找到数据库文件.mdf所存放的路径,然后点击确定,即可以将我们刚所创建的文件添加回去。
五、实验总结
通过本次实验熟悉了sqlserver2005的环境,了解SQLServer数据库的逻辑结构和物理结构,并学会了用向导建立,删除,以及分离一个数据库,为以后的实验做了一个环境准备。
实验二使用SQL语句创建和删除数据库
一.实验目的:
1.了解SQLServer2005数据库的逻辑结构和物理结构。
2.掌握使用SQL语句创建、删除和修改数据库。
二.实验要求
1.熟练使用查询分析器进行数据库的创建、删除和修改操作。
2.完成实验报告。
三.实验内容
使用SQL语句创建数据库userdb1。
四.实验步骤
1.创建数据库userdb1的SQL语句,
createdatabaseuserdb1
on
(name=userdb1_data,--数据文件的逻辑名称,注意不能与日志逻辑同名
filename='g:
\xygl\userdb1.mdf',--物理名称,注意路径必须存在
size=5,--数据初始长度为5M
maxsize=10,--最大长度为10M
filegrowth=1)--数据文件每次增长1M
logon
(name=userdb1_log,
filename='g:
\xygl\userdb1.ldf',
size=2,
maxsize=5,
filegrowth=1)
执行上述语句建立数据库userdb1
2.根据步骤1的sql语句,写出创建实验1中数据库EDUC的sql语句,并建立数据库EDUC.
初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;
日志文件初始为2MB,最大可增长到5MB,按1MB增长。
createdatabaseEDUC
on
(name=EDUC_data,--数据文件的逻辑名称,注意不能与日志逻辑同名
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\EDUC.mdf',--物理名称,注意路径必须存在
size=10,--数据初始长度为M
maxsize=50,--最大长度为M
filegrowth=5%)--数据文件每次增长%
logon
(name=EDUC_log,
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\EDUC.ldf',
size=2,
maxsize=5,
filegrowth=1)
3.用SQL语句删除步骤1建立的数据库userdb1。
dropdatabaseuserdb1
或者直接语句usemasterdropdatabaseuserdb1
4、在查询分析器中还可以实现对数据库的修改操作,
AlterDATABASE数据库名
{ADDFILE<文件选项>新增数据文件
|ADDLOGFILE<文件选项>新增数据日志文件
|REMOVEFILE逻辑文件名删除指定文件
|ADDFILEGROUP文件组名新增文件组
|REMOVEFILEGROUP文件组名删除文件组
|MODIFYFILE<文件选项>修改文件属性
|MODIFYNAME=新数据库名数据名更改
(1)、将文件名EDUC改为EDUC1
ALTERDATABASEEDUC
MODIFYNAME=EDUC1;
(2)、增加一个日志文件,文件名为EDUC_LOG,初始大小为10mb,最大为20MB,增加为1MB
ALTERDATABASEEDUC1
ADDLOGFILE
(NAME=EDUC_LOG,
FILENAME='E:
\sql_data\EDUC_LOG.LDF',
SIZE=10MB,
MAXSIZE=20MB,
FILEGROWTH=1MB
5.实验总结
通过本次实验,学会了用sql语言建立,删除以及修改一个数据库,体会到用向导和sql语言对数据库进行操作的异同点。
实验三使用SQL语句创建和删除表
一.实验目的
1.了解表的结构特点。
2.了解SQLServer的基本数据类型。
3.学会使用T-SQL语句创建表。
二.实验准备
1.确定数据库包含的各表的结构,还要了解SQLServer的常用数据类型,以创建数据库的表。
2.已成功创建了数据库EDUC。
3.掌握SQL创建基本表的方法。
4.掌握SQL修改基本表的方法。
5.掌握SQL删除基本表的方法。
三.实验内容
在数据库EDUC中,创建如下几个表:
表3.1class表(班级信息表)
字段名称
类型
允许空值
主键
说明
ClsNO
Char(6)
NOTNULL
是
班号
ClsName
Varchar(16)
NOTNULL
班名
Director
Varchar(10)
NULL
辅导员
Specialty
Varchar(30)
NULL
专业
表3.2student表(学生信息表)
字段名称
类型
允许空值
主键
说明
Sno
Char(8)
NOTNULL
是
学号
Sname
Varchar(10)
NOTNULL
姓名
Ssex
Char
(2)
性别:
男、女
ClsNO
Char(6)
NULL
班级的编号,(外键)参照表Class
Saddr
Varchar(20)
住址
Sage
numeric(3,0)
年龄,大于10,但小于30岁
Height
Decimal(4,2)
身高
表3.3course表(课程信息表)
字段名称
类型
允许空值
主键
说明
Cno
Char(4)
NOTNULL
是
主键
Cname
Varchar(16)
NOTNULL
课程的名称
Cpno
char(4)
NULL
先修课程的课程号(外键),参照cno
Ccredit
Tinyint
学分
表3.4sc表(学生选课成绩表)
字段名称
类型
允许空值
主键
说明
Sno
Char(8)
NOTNULL
是
学号,参照Student,与Cno组成主键
CNO
Char(4)
NOTNULL
是
课程号,参照Course
grade
Numeric(4,1)
NULL
成绩
四.实验步骤
1.打开查询窗口,输入创建基本表的sql语句,点击“执行”按钮,完成表的创建。
创建class表如下:
CREATETABLEclass(ClsNoCHAR(6)primarykey,
ClsNamevarchar(16)notnull,
Directorvarchar(10),
Specialtyvarchar(30),
);
2.用上述方法创建其他表。
创建student表如下:
CREATETABLEstudent(
Snochar(8)primarykey,
Snamevarchar(10)notnull,
Ssexchar
(2)check(Ssex='男'orSsex='女'),
ClsNochar(6)notnull,
Saddrvarchar(20),
Sagenumeric(3,0)check((Sage>'10')And(Sage<'30')),
Heightdecimal(4,2),
foreignkey(ClsNo)referencesclass(ClsNo),
);
创建course表如下:
CREATETABLEcourse(
Cnochar(4)primarykey,
Cnamevarchar(16)notnull,
Cpnochar(4),
Ccredittinyint,
foreignkey(Cpno)referencescourse(Cno),
);
创建SC表如下:
CREATETABLEsc(
Snochar(8),
Cnochar(4),
gradenumeric(4,1),
primarykey(Sno,Cno),
foreignkey(Sno)referencesstudent(Sno),
foreignkey(Cno)referencescourse(Cno),
);
3.按照student的要求创建表student1,修改基本表student1
向student1表增加“入学时间”列s_entrance,其数据类型为日期型。
CREATETABLEstudent1(
Snochar(8)primarykey,
Snamevarchar(10)notnull,
Ssexchar
(2)check(Ssexin('男','女'),
ClsNochar(6)notnull,
Saddrvarchar(20),
Sagenumeric(3,0)check((Sage>'10')And(Sage<'30')),
Heightdecimal(4,2),
foreignkey(ClsNo)referencesclass(Clsno),
);
alterTABLEstudent1adds_entrancedatetime;
4.按照student的要求创建表student2,并将年龄的数据类型由字符型改为整数。
Altertablestudent2altercolumnsageint;(报错:
因为sage上有check约束,删除check约束后再修改类型)
CREATETABLEstudent2(
Snochar(8)primarykey,
Snamevarchar(10)notnull,
Ssexchar
(2)check(Ssexin('男','女'),
ClsNochar(6)notnull,
Saddrvarchar(20),
Sagenumeric(3,0)check((Sage>'10')And(Sage<'30')),
Heightdecimal(4,2),
foreignkey(ClsNo)referencesclass(Clsno),
);
Altertablestudent2dropCK__student2__Sage__1FCDBCEB
Altertablestudent2altercolumnSageint;
5.将student2表中sage改回smallint型。
Altertablestudent2altercolumnSagesmallint;
6.删除sage后再增加新列和新的完整性约束
Altertablestudent2addSagenumeric(3,0)check((Sage>'10')And(Sage<'30'))
7.按照student的要求创建Student1,然后删除Ssex完整性约束。
altertablestudent1dropCK__student1__Ssex__239E4DCF
8.删除基本表student1。
droptablestudent1
如果基本表上有参照或是外码,先删除有关的参照再删除基本表
9、将在sudent1中新加入的列名s_entrance修改为Sentrance
exec sp_rename 'student1.S_entrance','sentrance'
10、将student2表名改为student1
exec sp_rename 'student2','student1'
5.实验总结
通过本次实验,熟悉了对基本表的创建,删除,以及修改操作,体会到了完整性约束的作用以及对其他操作的制约性。
实验四数据更新操作
一.实验目的
1.熟悉使用UPDATE/INSERT/DELETE语句进行表操作;
2.能将这些更新操作应用于实际操作中去;
二.实验要求
1.完成下面的实验内容,并提交实验报告;
2.在实验报告中附上相应的代码;
三.实验内容
(1)向表(Class)中插入数据
ClsNO
ClsName
Director
Specialty
CS01
计算机一班
张宁
计算机应用
CS02
计算机二班
王宁
计算机应用
MT04
数学四班
陈晨
数学
PH08
物理八班
葛格
物理
GL01
地理一班
张四
应用地理
插入数据之后使用命令:
Select*fromClass;检查插入数据的正确性
(2)向表(Student)中插入数据
Sno
Sname
Ssex
ClsNO
Saddr
Sage
Height
20090101
王军
男
CS01
下关40#
20
1.76
20090102
李杰
男
CS01
江边路96#
22
1.72
20090306
王彤
女
MT04
中央路94#
19
1.65
19940107
吴杪
女
PH08
莲化小区74#
18
1.60
插入数据之后使用命令:
Select*fromStudent;检查插入数据的正确性
(3)向表(Course)中插入数据
Cno
Cname
Cpno
Credit
0001
高等数学
Null
6
0003
计算机基础
0001
3
0007
物理
0001
4
插入数据之后使用命令:
Select*fromCourse;检查插入数据的正确性
(4)向表(SC)中插入数据
SNO
CNO
Grade
20090101
0001
90
20090101
0007
86
20090102
0001
87
20090102
0003
76
20090306
0001
87
20090306
0003
93
19940107
0007
85
20090306
0007
90
(5)对于student表,将所有班级号为‘CS01’的,并且年龄小于20岁的学生的班级号改为‘CS02’。
(6)对于student表,删掉所有年龄不小于20岁,并且专业号为‘CS02’的学生的记录。
(7)对于student表,插入一条新记录,它的具体信息为,学号:
20071101、姓名:
张三、性别:
男、年龄:
19、班级编号:
‘CS01’。
(8)对于student表,将年龄最小的学生的家庭地址去掉。
(9)对于student表,将平均年龄最小的一个班级编号改为‘GL01’
四、实验步骤:
1.向class表插入数据如下:
insertintoclassvalues('CS01','计算机一班','张宁','计算机应用')
insertintoclassvalues('CS02','计算机二班','王宁','计算机应用')
insertintoclassvalues('MT04','数学四班','陈晨','数学')
insertintoclassvalues('PH08','物理八班','葛格','物理')
insertintoclassvalues('GL01','地理一班','张四','应用地理')
插入成功后查询如下:
2.向Student表插入数据如下:
insertintostudentvalues('20090101','王军','男','CS01','下关#','20','1.76')
insertintostudentvalues('20090102','李杰','男','CS01','江边路#','22','1.72')
insertintostudentvalues('20090306','王彤','女','MT04','中央路#','19','1.65')
insertintostudentvalues('19940107','吴杪','女','PH08','莲化小区#','18','1.60')
插入成功后查询如下:
3.向course表插入数据如下:
insertintoCoursevalues('0001','高等数学',Null,'6')
insertintoCoursevalues('0003','计算机基础','0001','3')
insertintoCoursevalues('0007','物理','0001','4')
4.向表SC中插入数据
insertintoscvalues('20090101','0001','90')
insertintoscvalues('20090101','0007','86')
insertintoscvalues('20090102','0001','87')
insertintoscvalues('20090102','0003','76')
insertintoscvalues('20090306','0001','87')
insertintoscvalues('20090306','0003','93')
insertintoscvalues('19940107','0007','85')
insertintoscvalues('20090306','0007','90'
5.对于student表,将所有班级号为‘CS01’的,并且年龄不大于20岁的学生的班级号改为‘CS02’
Updatestudentsetclsno='cs02'whereclsno='cs01'andsage<=20;
6.对于student表,删掉所有年龄不小于20岁,并且专业号为‘CS02’的学生的记录。
如果建表的时候没写级联删除,就在删除前先添加级联删除语句
Deletefromstudent,SCwheresage>=20andclsno='cs02'andstudent.sno=sc.sno
7.对于student表,插入一条新记录,它的具体信息为,学号:
20071101、姓名:
张三、性别:
男、年龄:
19、班级编号:
‘CS01’。
Insertintostudent(sno,sname,ssex,sage,clsno)values('20071101','张三','男',19,'cs01');
8.对于student表,将年龄最小的学生的家庭地址去掉。
Updatestudentsetsaddr=''wheresage<=(selectmin(sage)fromstudent)
9.对于student表,将平均年龄最小的一个班级编号改为‘GL01’
Updatestudentsetclsno='GL01'groupbyclsnohavingavg(sage)<=all(Selectavg(sage)fromstudentgroupbyclsno)
10、对于student表,将学号为19940107的学生的姓名该成“吴用”;
Updatestudentsetsname='吴用'wheresno='19940107';
10、对于sc表,将学号为20090101且的成绩为86的学生的成绩改为96
Updatescsetgrade=96wheresno='20090101'andgrade=86;
五.实验总结
通过本次实验,学会了对基本表的数据更新操作,如插入,删除,修改,并体会到如何将这些操作运用到实际中去。
但是对级联删除操作仍有疑问,不知道如何在创建表时没有写级联删除的情况下再添加级联删除的语句。
通过第九题,也认识到自己对聚集函数与having,groupby语句配合使用时仍不熟练,有待进一步学习。
实验五创建和删除索引
一.实验目的
1.了解索引的类型和应用。
2.学会用SQL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告