数据库实验报告.docx
- 文档编号:27764621
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:76
- 大小:5.74MB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(76页珍藏版)》请在冰豆网上搜索。
数据库实验报告
计算机与信息学院
数据库系统实验报告
专业班级
信息安11-1班
学生姓名及学号
王俊懿20112881
课程教学班号
任课教师
沈明玉
实验指导教师
沈明玉
实验地点
第三机房
2012~2013学年第二学期
实验一使用向导创建和删除数据库
一.实验目的
1.熟悉SQLServer中SQLServerManagementStudio的环境
2.了解SQLServer数据库的逻辑结构和物理结构
3.掌握使用向导创建和删除数据库的方法
二.实验准备
1.装有SQLServer2005/2008的PC机。
2.创建数据库的用户必须是DBA,或被授权使用CREATEDATABASE语句的用户。
三.实验要求
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所存放的路径,然后点击确定,即可以将我们刚所创建的文件添加回去。
实验二使用SQL语句创建和删除数据库
一.实验目的:
1.了解SQLServer2005数据库的逻辑结构和物理结构。
2.掌握使用SQL语句创建、删除和修改数据库。
二.实验准备
1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
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='E:
\sql_data\EDUC.mdf',--物理名称,注意路径必须存在
size=10,--数据初始长度为10M
maxsize=50,--最大长度为50M
filegrowth=5%)--数据文件每次增长5%
logon
(name=EDUC_log,
filename='E:
\sql_data\EDUC.ldf',
size=2,
maxsize=5,
filegrowth=1)
3.用SQL语句删除步骤1建立的数据库userdb1。
dropdatabaseuserdb1
或者直接语句usemasterdropdatabaseuserdb1
如下图所示,刷新后数据库中的userdb1数据库就没有了。
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
实验三使用SQL语句创建和删除表(数据仅供参考)
一.实验目的
1.了解表的结构特点。
2.了解SQLServer的基本数据类型。
3.学会使用T-SQL语句创建表。
二.实验要求
1.完成SQL语句创建、修改、删除基本表。
2.完成实验报告。
三.实验准备
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),
DirectorVarchar(10),
SpecialtyVarchar(30)
);
实验心得:
在左侧查询是否建立表成功时需要刷新。
注意各变量的类型。
2.用上述方法创建其他表。
创建student表如下:
createtablestudent
(SnoChar(8)primarykey,
SnameVarchar(10),
SsexVarchar
(2),
ClsNOchar(6),
SaddrVarchar(20),
Sagenumeric(3,0),
HeightDecimal(4,2),
foreignkey(clsno)referencesclass(clsno)
);
实验心得:
若要删除该表需要先删除class表。
创建course表如下:
createtablecourse
(CnoChar(4)primarykey,
CnameVarchar(16),
Cpnochar(4),
CreditTinyint,
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,其数据类型为日期型。
altertablestudentadds_entrancedatetime;
实验心得:
在sqlserver中没有data,要用datatime.
4.按照student的要求创建表student2,并将年龄的数据类型由字符型改为整数。
Altertablestudent2altercolumnsageint;(报错:
因为sage上有check约束,删除check约束后再修改类型)
createtablestudent1
(SnoChar(8)primarykey,
SnameVarchar(10),
SsexVarchar
(2),
ClsNOchar(6),
SaddrVarchar(20),
Sagenumeric(3,0),
HeightDecimal(4,2),
foreignkey(clsno)referencesclass(clsno)
);
实验心得:
没有报错,对check还不是很理解,但不影响接下来的实验。
5.将student2表中sage改回smallint型。
altertablestudent1adds_entrancedatetime;
6.删除sage后再增加新列和新的完整性约束
7.按照student的要求创建Student1,然后删除Ssex完整性约束。
8.删除基本表student1。
droptablestudent1;
如果基本表上有参照或是外码,先删除有关的参照再删除基本表
实验心得:
需要先删除student1的参照关系。
9.将以上创建表的SQL语句以.SQL文件的形式保存在磁盘上。
实验心得:
要先将数据库分离才能操作保存。
10、将在sudent1中新加入的列名s_entrance修改为Sentrance
exec sp_rename 'student1.S_entrance','sentrance'
11、将student2表名改为student1
exec sp_rename 'student2','student1'
实验四数据更新操作
一.实验目的
1.熟悉使用UPDATE/INSERT/DELETE语句进行表操作;
2.能将这些更新操作应用于实际操作中去;
二.实验准备
1.向EDUC数据库的各表中插入、修改和删除数据。
2.了解INSERT、UPDATE及DELETE语句。
三.实验要求
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’的学生的记录。
对于student表,插入一条新记录,它的具体信息为,学号:
20071101、姓名:
张三、性别:
男、年龄:
19、班级编号:
‘CS01’。
(7)对于student表,将年龄最小的学生的家庭地址去掉。
(8)对于student表,将平均年龄最小的一个班级编号改为‘GL01’
五、实验步骤:
1.向class表插入数据如下:
insertintoclass(clsno,ClsName,Director,Specialty)
values('cs01','计算机一班','张宁','计算机应用');
insertintoclass(clsno,ClsName,Director,Specialty)
values('cs02','计算机一班','wang宁','计算机应用');
insertintoclass(clsno,ClsName,Director,Specialty)
values('mt04','数学四班','陈晨','数学');
insertintoclass(clsno,ClsName,Director,Specialty)
values('ph08','物理八班','葛格','物理');
insertintoclass(clsno,ClsName,Director,Specialty)
values('gl01','地理一班','赵c','地理');
插入成功后查询如下:
实验心得:
变量和数据要一一对应。
2.向Student表插入数据如下:
insertintostudent(Sno,Sname,Ssex,ClsNO,Saddr,Sage,Height)
values('20090101','王军','男','CS01','下关#','20','1.76');
insertintostudent(Sno,Sname,Ssex,ClsNO,Saddr,Sage,Height)
values('20090102','李杰','男','CS01','江边路#','22','1.72');
insertintostudent(Sno,Sname,Ssex,ClsNO,Saddr,Sage,Height)
values('20090306','王彤','女','MT04','中央路#','19','1.65');
insertintostudent(Sno,Sname,Ssex,ClsNO,Saddr,Sage,Height)
values('19940107','吴杪','女','PH08','莲化小区#','18','1.60');
查询如下:
实验心得:
sqlserver出入数据为数字类的类型时,用’....’也可,系统会自动更改类型。
3.向course表插入数据如下:
insertintocourse(Cno,Cname,Cpno,Credit)
values('0002','高等数学',Null,'6');
insertintocourse(Cno,Cname,Cpno,Credit)
values('0003','计算机基础','0001',3);
insertintocourse(Cno,Cname,Cpno,Credit)
4.向表SC中插入数据
insertintosc(SNO,CNO,Grade)
values('20090101','0001',90);
insertintosc(SNO,CNO,Grade)
values('20090101','0007',86);
insertintosc(SNO,CNO,Grade)
values('20090102','0001',87);
insertintosc(SNO,CNO,Grade)
values('20090306','0001',87);
insertintosc(SNO,CNO,Grade)
values('20090102','0003',76);
insertintosc(SNO,CNO,Grade)
values('20090306','0003',93);
insertintosc(SNO,CNO,Grade)
values('19940107','0007',85);
insertintosc(SNO,CNO,Grade)
values('20090306','0007',90);
查询省略
5.对于student表,将所有班级号为‘CS01’的,并且年龄不大于20岁的学生的班级号改为‘CS02’
updatestudent
setclsno='cs02'
whereclsno='cs01'andsage<20;
实验心得:
查看表之前要注意刷新,修改前要查看表中是否有符合条件的数据,以便实验对比。
6.对于student表,删掉所有年龄不小于20岁,并且专业号为‘CS02’的学生的记录。
如果建表的时候没写级联删除,就在删除前先添加级联删除语句
deletefromstudent
wheresage<=20andclsno='cs02';
7.对于student表,插入一条新记录,它的具体信息为,学号:
20071101、姓名:
张三、性别:
男、年龄:
19、班级编号:
‘CS01’。
insertintostudent(Sno,Sname,Ssex,ClsNO,Saddr,Sage,Height)
values('20071101','张三','男','CS01',null,19,null);
实验心得:
注意输入值要一一对应,注意null的使用。
8对于student表,将年龄最小的学生的家庭地址去掉。
updatestudent
setsaddr=nullwheresage<=(selectmin(sage)fromstudent);
实验心得:
去掉可用置空处理,“<=”也可用“=”代替。
8.对于student表,将平均年龄最小的一个班级编号改为‘GL01’
updatestudent
setclsno='gl01'
whereclsnoin(selecttop1clsnofromstudentgroupbyclsno
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告