数据库系统原理及技术实验报告.docx
《数据库系统原理及技术实验报告.docx》由会员分享,可在线阅读,更多相关《数据库系统原理及技术实验报告.docx(66页珍藏版)》请在冰豆网上搜索。
数据库系统原理及技术实验报告
数据库系统原理实验报告
实验1SQLServer管理工具的使用
一、目的与要求
1.掌握SQLServer服务器的安装
2.掌握企业管理器的基本使用方法
3.掌握查询分析器的基本使用方法
4.掌握服务管理器的基本使用方法
5.对数据库及其对象有一个基本了解
6.学会使用SQLServer联机丛书和Transact-SQL帮助
二、实验准备
1.了解SQLServer各种版本安装的软、硬件要求
2.了解SQLServer支持的身份验证模式
3.了解SQLServer各组件的主要功能
4.对数据库、表和数据库对象有一个基本了解
5.了解在查询分析器中执行SQL语句的方法
三、实验内容
1.安装SQLServer2000根据软硬件环境,选择一个合适版本的SQLServer2000。
2.利用企业管理器访问系统自带的pubs数据库。
(1)启动SQLServer服务管理器。
通过“开始=>程序=>MicrosoftSQLServer=>服务管理器”打开“SQLServer服务管理器”,启动“SQLServer服务管理器”,并记录当前运行的服务器名。
图1.1启动SQLServer服务管理器
(2)启动企业管理器。
通过“开始=>程序=>MicrosoftSQLServer=>企业管理器”打开“SQLServerEnterpriseManager”
图1.2启动企业管理器
(3)在企业管理器的树形目录中展开数据库,找到pubs并展开,则列出该数据库的所有对象,如表、视图、存储过程、默认和规则等。
(4)选中“表”,将列出pubs数据库的所有表(包括系统表和用户表),在此以用户表titles为例,选中该表,单击鼠标右键,弹出快捷菜单,执行“打开表—返回所有行”菜单项,打开该表,查看其内容。
(5)选中表titles,单击鼠标右键,弹出快捷菜单,执行“设计表”菜单项,查看其结构,并记录该表的结构。
(6)用同样的方法查看pubs数据库中的其它用户表,并记录这些表的结构。
3.利用查询分析器访问系统自带的pubs数据库的表
(1)启动SQLServer查询分析器
通过“开始=>程序=>MicrosoftSQLServer=>查询分析器”打开“SQLServer查询分析器”,并以系统管理员sa的身份连接到SQLServer。
图1.3连接SQLServer服务器
(2)使用系统存储过程(sp_tables和sp_help<表名>)查看系统自带的pubs数据库中的表titles的结构信息
在查询分析器的命令窗口中键入如下SQL批命令:
usepubs
go
sp_tablestitles
go
sp_helptitles
go
按“F5”键或者单击工具栏中的“}”按钮执行SQL查询
图1.4在查询分析器中查看表的结构信息
(3)利用SQL命令查看系统自带的pubs数据库中的表titles的行信息
select*fromtitles
go
图1.5在查询分析器中执行SQL查询
4.在查询分析器中打开“帮助”菜单,使用SQLServer联机丛书和Transact-SQL帮助。
实验2数据定义
一、目的和要求
1.了解SQLServer数据库的逻辑结构和物理结构。
2.了解表的结构特点。
3.了解SQLServer的基本数据类型。
4.学会在企业管理器中创建数据库和表。
5.学会使用T-SQL语句创建数据库和表。
6.学会定义索引
二、实验准备
1.要明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
2.创建数据库必须要确定数据库名、所有者(即创建数据库的用户)、数据库大小(最初的大小、最大的大小、是否允许增长及增长的方式)和存储数据的文件。
3.确定数据库包含哪些表以及包含的各表的结构,还要了解SQLServer的常用数据类型,以创建数据库的表。
4.了解常用的创建数据库和表的方法。
5.了解聚集索引和非聚集索引
三、实验内容
设有一学籍管理系统,其数据库名为“STUDENT”,初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名为“student_data”,物理文件名为“student_data.mdf,存放路径为“E:
\sql_data”。
日志文件的逻辑文件名为“student_log”,物理文件名为“student_log.ldf”,存放路径为“E:
\sql_data”。
各数据表的结构如下:
表2.1student表(学生信息表)
字段名称
类型
宽度
允许空值
主键
说明
sno
char
8
NOTNULL
是
学生学号
sname
char
8
NOTNULL
学生姓名
sex
char
2
NULL
学生性别
native
char
20
NULL
籍贯
birthday
smalldate
4
NULL
学生出生日期
dno
char
6
NULL
学生所在院系编号(外键)
spno
char
8
NULL
专业代码(外键)
classno
char
4
NULL
班级号
entime
smalldate
4
NULL
学生入校时间
home
varchar
40
NULL
学生家庭住址
tel
varchar
40
NULL
学生联系电话
表2.2course表(课程信息表)
字段名称
类型
宽度
允许空值
主键
说明
cno
char
10
NOTNULL
是
课程编号
spno
char
8
NULL
专业代码(外键)
cname
char
20
NOTNULL
课程名称
ctno
tinyint
1
NULL
课程类型编号(外键)
experiment
tinyint
1
NULL
实验时数
lecture
tinyint
1
NULL
授课学时
semester
tinyint
1
NULL
开课学期
credit
tinyint
1
NULL
课程学分
表2.3student_course表(学生选课成绩表)
字段名称
类型
宽度
允许空值
主键
说明
sno
char
8
NOTNULL
是
学生学号
tcid
smallint
2
NOTNULL
是
上课编号
score
tinyint
1
NULL
学生成绩
表2.4teacher表(教师信息表)
字段名称
类型
宽度
允许空值
主键
说明
tno
char
8
NOTNULL
是
教师编号
tname
char
8
NOTNULL
教师姓名
sex
char
2
NULL
教师性别
birthday
smalldate
4
NULL
教师出生日期
dno
char
6
NULL
教师所在院系编号(外键)
pno
tinyint
1
NULL
教师职务或职称编号
home
varchar
40
NULL
教师家庭住址
zipcode
char
6
NULL
邮政编码
tel
varchar
40
NULL
联系电话
email
varchar
40
NULL
电子邮件
表2.5teacher_course表(教师上课课表)
字段名称
类型
宽度
允许空值
主键
说明
tcid
smallint
2
NOTNULL
是
上课编号
tno
char
8
NULL
教师编号(外键)
spno
char
8
NULL
专业代码(外键)
classno
char
4
NULL
班级号
cno
char
10
NOTNULL
课程编号(外键)
semester
char
6
NULL
学期
schoolyear
char
10
NULL
学年
classtime
varchar
40
NULL
上课时间
classroom
varchar
40
NULL
上课地点
weektime
tinyint
1
NULL
每周课时数
1.创建数据库
(1)使用企业管理器创建数据库
图2.1新建数据库
图2.2数据库属性对话框
图2.3建立student数据库
(2)使用SQL语句创建数据库
CREATEDATABASEstudent
ON
(NAME=student_data,
FILENAME='E:
\sql_data\student_data.mdf',
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=10%
)
LOGON
(NAME=student_log,
FILENAME='E:
\sql_data\student_log.ldf',
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB
)
图2.4CREATEDATABASE语句创建数据库
2.创建表
(1)使用企业管理器创建表
图2.5新建表
图2.6表设计器
图2.7插入删除字段
(2)使用SQL语句创建表
CREATETABLEstudent
(
snochar(8)PRIMARYKEY,--学号(主键)
snamechar(8)NOTNULL,--姓名
sexchar
(2),--性别
nativechar(20),--籍贯
birthdaysmalldatetime,--出生日期
dnochar(6),--所在院系编号(外键)
spnochar(8),--专业代码(外键)
classnochar(4),--班级号
entimesmalldatetime,--入校时间
homevarchar(40),--家庭住址
telvarchar(40)--联系电话
)
CREATETABLEcourse
(
cnochar(10)PRIMARYKEY,--课程编号(主键)
cnamechar(20)NOTNULL,--课程名称
spnochar(8),--专业代码
ctnotinyint,--课程类型编号(外键)
lecturetinyint,--理论学时
experimenttinyint,--实验时数
semestertinyint,--开课学期
credittinyint--课程学分
)
图2.8创建student表
图2.9创建course表
CREATETABLEteacher
(
tnochar(8)PRIMARYKEY,--教师编号(主键)
tnamechar(8)NOTNULL,--教师姓名
sexchar
(2),--教师性别
birthdaysmalldatetime,--出生日期
dnochar(6),--所在院系编号(外键)
pnotinyint,--职务或职称编号
homevarchar(40),--家庭住址
zipcodechar(6),--邮政编码
telvarchar(40),--联系电话
emailvarchar(40)--电子邮件
)
图2.10创建teacher表
CREATETABLEstudent_course
(
snochar(8),--学生学号
tcidsmallint,--上课编号
scoretinyint,--学生成绩
PRIMARYKEY
(
sno,--主键
tcid--主键
)
)
图2.131创建student_course表
CREATETABLEteacher_course
(
tcidsmallintPRIMARYKEY,--上课编号(主键)
tnochar(8),--教师编号(外键)
spnochar(8),--专业代码(外键)
classnochar(4),--班级号
cnochar(10)NOTNULL,--课程编号(外键)
semesterchar(6),--学期
schoolyearchar(10),--学年
classtimevarchar(40),--上课时间
classroomvarchar(40),--上课地点
weektimetinyint--每周课时数
)
图2.12创建teacher_course表
3.修改表
(1)使用企业管理器修改表
图2.13student表设计器
(2)使用SQL语句修改表
ALTERTABLEteacher
ALTERCOLUMNemailvarchar(50)NULL
EXECsp_rename'teacher.email','电子邮件','COLUMN'
图2.14ALTERTABLE语句修改表
(3)使用SQL语句删除表
DROPTABLEteacher
3.使用SQL语句建立与删除索引
(1)为表student的列sname建立聚集索引
Createclusteredindexmyindexonstudent(sname)
(2)删除表student的列sname的聚集索引myindex
Dropindexstudent.myindex
(3)为student表按姓名升序建立唯一索引(取名为StuSname)
createuniqueindexStuSnameonstudent(snameASC)
(4)为Student_course表按学号升序和课程号降序建立唯一索引(取名为SCSnoCno)。
createuniqueindexSCSnoCnoonStudent_course(snoASC,cnoDESC)
四、实验作业题
1.数据库分析
(1)创建用于员工考勤的数据库,数据库名为YGKQ,初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名和物理文件名均采用默认值。
(2)数据库YGKQ包含员工的信息和缺勤类型信息,其YGKQ包含下列2个表:
JBQK:
员工基本情况表;
QQLX:
缺勤信息表。
各表的结构见表2.1和表2.2所示:
表2.1JBQK(员工基本情况表结构)
字段名
字段类型
字段宽度
说明
员工号
姓名
缺勤时间
缺勤天数
缺勤类型
缺勤理由
CHAR
CHAR
DATETIME
INT
CHAR
CHAR
4
8
4
20
主键
表2.2QQLX(缺勤类型信息表结构)
字段名
字段类型
字段宽度
说明
缺勤类型
缺勤名称
缺勤描述
CHAR
CHAR
CHAR
4
8
20
主键
各表的数据内容见表2.3和2.4所示:
表2.3JBQK(员工基本情况记录)
职工号
姓名
缺勤时间
缺勤天数
缺勤类型
缺勤理由
001
李华
2006-09-03
3
1
事假
002
张敏
2006-09-12
2
2
病假
003
付丽
2006-09-03
5
3
旷工
004
张晓华
2006-09-10
2
1
事假
005
邓刚
2006-09-16
1
2
病假
表2.4QQLX(缺勤类型信息记录)
缺勤类别
缺勤名称
缺勤描述
1
事假
本人必须提前1天申请,1-2天由部门准许,2天以上由经理批准
2
病假
1-2天由部门准许,2天以上由经理批准
3
旷工
无故不到者按旷工处理
4
迟到
在规定上班时间1小时后到岗
2.在企业管理器中创建和删除数据库和数据表
(1)在企业管理器中创建的YGKQ数据库。
(2)在企业管理器中删除YGKQ数据库。
(3)在企业管理器中分别创建表JBQK和QQLX。
(4)在企业管理器删除创建的JBQK和QQLX表。
3.在查询分析器中创建数据库和数据表
(1)用T-SQL语句创建数据库YGKQ。
(2)使用T-SQL语句创建JBQK和QQLX表。
4.创建索引
(1)为数据库YGKQ中JBQK表的“缺勤天数”字段创建一个非聚集索引,其名称为kczccj_index。
(2)使用系统存储过程sp_helpindex查看JBQK表上的索引信息。
(3)用SQL语句删除kcvc_index。
实验3数据更新(插入、修改和删除)
一、目的和要求
1.学会在企业管理器中对表进行插入、修改和删除数据操作。
2.学会使用T-SQL语句对表进行插入、修改和删除数据操作。
3.了解T-SQL语句对表数据库操作的灵活控制功能。
二、实验准备
1.了解表的更新操作,即数据的插入、修改和删除,对表数据的操作可以在企业管理器中进行,也可以由T-SQL语句实现。
2.掌握T-SQL中用于对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE或TRANCATETABLE)命令的用法。
3.了解使用T-SQL语句在对表数据进行插入、修改及删除时,比在企业管理器中操作表数据灵活,功能更强大。
三、实验内容
1.在企业管理器中对数据库student中的表进行插入、删除数据的操作。
(1)在企业管理器的树形目录中展开数据库student,找到表并展开,则列出该数据库的所有对象,如表、视图、存储过程、默认和规则等。
(2)选中“表”,将列出student数据库的所有表(包括系统表和用户表),在此以用户表student为例,选中该表,单击鼠标右键,弹出快捷菜单,执行“打开表—返回所有行”菜单项,打开该表,并向表中录入若干条记录。
图3.1向表中插入数据
(3)在企业管理器中删除数据库student中的表数据。
在打开的表student中,选定将要删除的行,单击鼠标右键,弹出快捷菜单,执行“删除”菜单项,在打开的删除对话框中回答“是”。
图3.2删除表中的数据
2.使用SQL语句插入、修改和删除表数据
首先启动SQLServer查询分析器,并以系统管理员sa的身份连接到SQLServer。
依次执行下列SQL语句:
INSERTINTOstudent
VALUES('02080001','李平','男','江西','1985-1-2','610000',
'080605','0201','2002-9-1','江西省南昌市上海路11','8305670')
图3.3INSERT语句向表中插入数据
UPDATEstudent
SETnative='湖南'
WHEREnative='江西'
图3.4UPDATE语句修改表中数据
DELETEstudent
WHEREnative='湖南'
图3.5DELETE语句删除表中数据
四、实验作业题
根据某一单位的员工考勤情况,对实验2所创建数据库YGKQ的各表进行数据更新操作。
实验4数据查询
一、目的与要求
1.掌握SELECT语句的基本语法。
2.掌握子查询的表示。
3.掌握连接查询的表示。
4.掌握SELECT语句的统计函数的作用和使用方法。
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。
二、实验准备
1.了解SELECT语句的基本语法格式。
2.了解SELECT语句的执行方法。
3.了解子查询的表示方法。
4.了解SELECT语句的统计函数的作用。
5.了解SELECT语句的GROUPBY和ORDERBY子句的作用。
三、实验内容
首先启动SQLServer查询分析器,并以系统管理员sa的身份连接到SQLServer。
以下所有查询都在查询分析器中执行。
1.简单查询
SELECTsno,sname,sex,birthday
FROMstudent
图4.1查询结果
SELECTsno,sname,CAST(GETDATE()-birthdayASint)/365
ASage
FROMstudent
图4.2查询结果中年龄列名为别名age
SELECTsno,sname,sex,birthday
FROMstudent
WHEREdno='610000'
图4.3查询结果
SELECTsno,sname,birthday
FROMstudent
WHEREspno='080605'ANDclassno='0201'
图4.4查询结果
SELECTsno,sname,sex,birthday
FROMstudent
WHEREbirthday>'1985/01/01'
图4.5查询结果
SELECT*
FROMteacher
WHEREpno<>'4'
图4.6查询结果
SELECTsno,sname
FROMstudent
WHEREsnameLIKE'陈%'
图4.7查询结果
SELECTsno,sname
FROMstudent
WHEREsnameLIKE'陈__'
图4.8查询结果
SELECTsno,sname
FROMstudent
WHEREsnameLIKE'[陈李]%'
图4.9查询结果
SELECTsno,sname,sex,birthday
FROMstudent
WHERE(dno='610000')AND(birthday>'1985/01/01')
图4.10查询结果
SELECT*
FROMstudent
WHEREnativeNOTLIKE'