《数据库技术实训》实训报告.docx
《《数据库技术实训》实训报告.docx》由会员分享,可在线阅读,更多相关《《数据库技术实训》实训报告.docx(30页珍藏版)》请在冰豆网上搜索。
![《数据库技术实训》实训报告.docx](https://file1.bdocx.com/fileroot1/2023-6/8/b60783e4-7fc2-4a17-b4ce-cf134f033eec/b60783e4-7fc2-4a17-b4ce-cf134f033eec1.gif)
《数据库技术实训》实训报告
《数据库技术实训》
实训报告
班级:
10计算机应用技术1班
学号:
2010
姓名:
周
北京青年政治学院
计算机系
内容提要
本数据库编写目的在于意图为便于学校的管理,方便查看有关学校及学生的情况。
如教务处对学生成绩的修改、删除、查找、添加等。
本数据库用到了对数据库的创建和管理,对数据库数据表的创建和管理,对数据的数据查询,视图的应用,索引的应用,和存储过程的应用,系统安全以及数据备份等。
1需求分析
1.1系统开发背景
信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。
计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。
为了适应现代社会人们高度强烈的时间观念,学生管理系统数据库将会为教学办公室带来了极大的方便。
1.2系统功能需求
1、该数据库要建立一个学校学生管理数据库,方便对学生信息进行管理。
2、创建数据表为了对数据库中的一些数据进行增删改查,并对一些表建立一些关系。
3、需用到数据库的数据查询,就是说通过对数据的插入后,想要知道你想知道的一些信息,可以对数据条件的限定好能够准确的了解到你想知道的。
4、用到视图的应用,视图也是一宗常用的数据库对象,可以把它看成从一个或几个基本表导出的虚表或存储在数据库中的查询。
5、用到索引的应用,每一行记录都包括数据表中的一列或若干列值得集合,而不是数据表中的所有记录,因而能够提高数据的查询效率,此外,是用索引还可以确保列的唯一性,从而保证数据的完整性。
6、用到存储过程,经编译后存储在数据库中,使用时通过调用过程名和给出的参数来调用它们
7、需用到系统安全技术,主要是能够保护数据的安全性。
8、需用到数据的备份,主要是对数据库进行备份操作。
2数据库的设计
2.1物理表结构
Classes(班级)表
字段名
数据类型
可否为空
约束
说明
ID
int
Notnull
主键
编号
ClassID
varchar(50)
Notnull
唯一约束
班级编号
Name
varchar(50)
null
名字
monitor
varchar(50)
null
班长
DepartmentID
varchar(50)
Notnull
参照Department表中的DepartmentID
系编号
Course(课程)表
字段名
数据类型
可否为空
约束
说明
ID
int
null
主键
编号
CourseID
varchar(50)
null
唯一约束
课程编号
Title
nvarchar(100)
null
课程名称
Credits
int
null
学分
DepartmentID
varchar(50)
Notnull
参照Department表中的DepartmentID
系编号
Department(部门)表
字段名
数据类型
可否为空
约束
说明
ID
int
Notnull
主键
编号
DepartmentID
varchar(50)
Notnull
唯一约束
部门编号
DepartmentName
varchar(50)
Notnull
系名称
Budget
money
null
预算
StartDate
smalldatetime
null
创建日期
Administrator
nvarchar(50)
null
管理员
Student(学生)表
字段名
数据类型
可否为空
约束
说明
ID
int
Notnull
主键
编号
StudentID
varchar(50)
Notnull
唯一约束
学生学号
Name
nvarchar(50)
null
学生名称
Gender
nvarchar(4)
null
检查约束
性别
IDNumber
varchar(18)
null
ID号
Address
varchar(200)
null
地址
PhoneNumber
varchar(50)
null
电话号码
Email
varchar(100)
null
邮箱
ClassID
varchar(50)
Notnull
参照class表中的classID
班级编号
StudentGrade(学生成绩)表
字段名
数据类型
可否为空
约束
说明
ID
int
Notnull
主键
编号
StudentID
varchar(50)
Notnull
参照Student表中的StudentID
学生学号
CourseID
varchar(50)
Notnull
参照Course表中的CourseID
课程编号
Grade
int
null
成绩
Teacher(老师)表
字段名
数据类型
可否为空
约束
说明
ID
int
Notnull
主键
编号
TeacherID
varchar(50)
Notnull
教师编号
Name
nvarchar(20)
null
名字
officeRoom
varchar(50)
null
办公室
EnrolmentDate
smalldatetime
null
注册日期
Gender
nvarchar(4)
null
检查约束
性别
DepartmentID
varchar(50)
Notnull
参照Department表中的DepartmentID
部门编号
2.2表之间的关系
3数据库实现
3.1创建数据库
(1)在【对象资源管理器】中,右键单击【数据库】,在弹出的快捷菜单中,选择【新建数据库】选项,然后出现【新建数据库】窗体。
(2)在【新建数据库】窗体中,在【数据库名称】的文本框中将输入数据库名“school”。
单击【确定】按钮,完成创建school数据库。
(3)在【对象资源管理器】中,即出现school数据库.
3.2创建数据库表
CREATETABLE<表名>(<列名><数据类型>
[NULL|NOTNULL][IDENTITY[(seed,increment)][{<列约束>}]
[,…n]
)
参数说明如下:
[NULL|NOTNULL]:
指定列的为空性,默认值为NOTNULL。
[IDENTITY(seed,increment)]:
指定为标识列,seed为标示种子,increment为递增量。
createClasses
(
IDintinentity(1,1)notnullprimarykey,
ClassIDvarchar(50)notnullunique,
Namevarchar(50)notnull,
monitorvarchar(50)null,
DepartmentIDvarchar(50)notnullforeignkeyreferencesDepartment(DepartmentID)
)
createCourse
(
IDintinentity(1,1)notnullprimarykey,
CourseIDvarchar(50)notnullunique,
Titlenvarchar(50)notnull,
Creditsintnotnull,
DepartmentIDvarchar(50)notnullforeignkeyreferencesDepartment(DepartmentID)
)
createDepartment
(
IDintinentity(1,1)notnullprimarykey,
DepartmentIDvarchar(50)notnullunique,
DepartmentNamevarchar(50)notnull,
Budgetmoneynull,
StartDatesmalldatetimenull,
Administratornvarchar(50)null
)
createStudent
(
IDintinentity(1,1)notnullprimarykey,
StudentIDvarchar(50)notnullunique,
Namenvarchar(50)notnull,
Gendernvarchar(50)nullconstraintxingbiecheck(Gender='男'orGender='女')
IDNumbervarchar(18)null,
Adressvarchar(100)null,
PhoneNumbervarchar(50)null,
Emailvarchar(100)null,
ClassIDvarchar(50)notnullforeignkeyreferencesClasses(ClassID)
)
CREATEStudentGrade
(
IDintinentity(1,1)notnullprimarykey,
StudentIDvarchar(50)notnullforeignkeyreferencesStudent(StudentID),
CourseIDvarchar(50)notnullforeignkeyreferencesCourse(CourseID),
Gradeintnull
)
createTeacher
(
IDintinentity(1,1)notnullprimarykey,
TeacherIDvarchar(50)notnullunique,
Namenvarchar(20)notnull,
Gendernvarchar(50)nullconstraintxingbiecheck(Gender='男'orGender='女'),
officeRoomvarchar(50)null,
EnroimentDatesmalldatetimenull,
DepartmentIDvarchar(50)notnullforeignkeyreferencesDepartment(DepartmentID)
)
4数据操作
4.1为表添加测试数据
◆INSERT语句语法插入一条记录
格式:
INSERT[INTO]表名[(column_list)]
VALUES({DEFAULT|NULL|expression}[,...n])
插入多条记录
INSERT[INTO]表名[(column_list)]
SELECTcolumn_listFROMtable_list
WHEREsearch_condition
insertClasses(ClassID,Name,monitor,DepartmentID)
values('70','李宏',李华,'111')
insertClasses(ClassID,Name,DepartmentID)
values('80','王继强',李于,'112')
insertClasses(ClassID,Name,DepartmentID)
values('90','镇南关',李涛,'113')
insertCourse(CourseID,Title,Credits,DepartmentID)
values('456','英语','87','111')
insertCourse(CourseID,Title,Credits,DepartmentID)
values('457','语文','78','112')
insertCourse(CourseID,Title,Credits,DepartmentID)
values('458','数学','98','113')
insertDepartment(DepartmentID,DepartmentName,Budget,StartDate,Administrator)
values('111','计算机系')
insertDepartment(DepartmentID,DepartmentName)
values('112','艺术系')
insertDepartment(DepartmentID,DepartmentName)
values('113','社工系')
insertStudent(StudentID,Name,ClassID)
values('2010171142','李建','70')
insertStudent(StudentID,Name,ClassID)
values('2010171136','王强','80')
insertStudent(StudentID,Name,ClassID)
values('2010171118','贺龙','90')
insertStudentGrade(StudentID,CourseID,Grade)
values('2010171142','456','78')
insertStudentGrade(StudentID,CourseID,Grade)
values('2010171136','457','79')
insertStudentGrade(StudentID,CourseID,Grade)
values('2010171118','458','80')
insertTeacher(TeacherID,Name,DepartmentID)
values('911','周涛','111')
insertTeacher(TeacherID,Name,DepartmentID)
values('912','杨晓','112')
insertTeacher(TeacherID,Name,DepartmentID)
values('913','天劫','113')
4.2修改数据
UPDATE表名
SETcolumn_name=value[,column_name=value]
[FROMtable_name]
[WHEREcondition]
实现对表中一些数据的修改,从而得到新的数据
updateStudentGrade
setGrade=60
whereGrade>90
updateStudent
setName='王五'
whereName='李宏'
4.3删除数据
DELETE[FROM]表名
[WHEREcondition]
其中,condition指定删除行的条件
主要是对一些数据进行删除
deleteStudentGrade
whereGrade=60
deleteStudent
whereName='李宏'
5视图和索引
5.1创建视图
CREATEVIEW视图名[(column[,...n])]
[WITHENCRYPTION]
AS
select_statement
[WITHCHECKOPTION]
参数说明如下。
Column:
表示视图中的列名。
WITHENCRYPTION:
对包含CREATEVIEW语句文本的条目进行加密。
AS:
表示视图要执行的操作。
select_statement:
定义视图的SELECT语句。
WITHCHECKOPTION:
强制针对视图执行的所有数据修改语句都必须符合在select_statement中设置的条件。
createviewde_te
as
selectDepartment.DepartmentNameas部门名称,Teacher.TeacherIDas教师编号
fromDepartmentjoinTeacher
onDepartment.DepartmentID=Teacher.DepartmentID
--利用视图查询数据
select*
fromde_te
createviewco_st
as
selectCourse.Titleas课程名,Course.Creditsas学分,StudentGrade.Grade
as学生成绩,StudentGrade.StudentIDas学生编号
fromCoursejoinStudentGrade
onCourse.CourseID=StudentGrade.CourseID
--利用视图查询数据
select*
fromco_st
createviewcl_st
as
selectClasses.Nameas班级名称,Classes.DepartmentIDas部门编号,
Student.Nameas学生姓名,Student.StudentIDas学生编号
fromClassesjoinStudent
onClasses.ClassID=Student.ClassID
--利用视图查询数据
select*
fromcl_st
createviewcl_co_st
as
selectClasses.Nameas班级名称,Classes.DepartmentIDas部门编号,
Student.Nameas学生姓名,Student.StudentIDas学生编号,
Course.Titleas课程名,Course.Creditsas学分
fromClassesjoinCourse
onClasses.DepartmentID=Course.DepartmentID
joinStudent
onClasses.ClassID=Student.ClassID
--利用视图查询数据
select*
fromcl_co_st
createviewte_de_co
AS
selectCourse.Titleas课程名,Course.Creditsas学分,
Department.DepartmentNameas系名称,Teacher.TeacherIDas教师编号
fromTeacherjoinDepartment
onTeacher.DepartmentID=Department.DepartmentID
joinCourse
onTeacher.DepartmentID=Course.DepartmentID
--利用视图查询数据
select*
fromte_de_co
createviewst_sg
as
select
StudentGrade.Gradeas学生成绩,StudentGrade.StudentIDas学生学号,
Student.Nameas学生姓名
fromStudentjoinStudentGrade
onStudent.StudentID=StudentGrade.StudentID
--利用视图查询数据
select*
fromst_sg
5.2创建索引
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]
/*索引的类型*/
INDEX索引名
ON{表名|视图名}列名[ASC|DESC][,...n])
--创建索引
createindexstudent_studentIDonstudent(studentID)
createindexstudent_nameonstudent(name)
createindexStudentGrade_gradeonStudentGrade(grade)
createindexteacher_nameonteacher(name)
createindexdepartment_nameondepartment(departmentname)
createindexcourse_titleoncourse(title)
createindexcourse_creditsoncourse(credits)
createindexclasses_nameonclasses(name)
6存储过程
6.1创建存储过程的语法规则
语法格式:
CREATE[PROC|PROCEDURE]存储过程名
[{@参数名称参数数据类型}[=参数的默认值]
[OUTPUT]]
[,...n]
[WITHENCRYPTION]
[WITHRECOMPILE]
AS
sql_statement
参数:
@参数名称:
存储过程可以没有参数。
也可以声明一个或多个参数,参数名称必须@作为第一个字符。
参数后面带OUTPUT,表示为输出参数。
WITHENCRYPTION:
对存储过程加密,其他用户无法查看存储过程的定义。
WITHRECOMPILE:
每次执行该存储过程都重新进行编译。
sql_statemen:
该存储过程中定义的编程语句。
6.2创建不带参数的存储过程
创建不带参数的存储过程
语法格式。
CREATE[PROC|PROCEDURE]存储过程名
[WITHENCRYPTION][WITHRECOMPILE]
AS
sql_statement
--创建不带参数的存储过程
createprocedurecl_information
as
select*fromClasses
--执行不带参数的存储过程
execcl_information
--创建不带参数的存储过程
createprocedurest_sg_information
as
select
StudentGrade.Gradeas学生成绩,StudentGrade.StudentIDas学生编号,
Student.Nameas学生姓名
fromStudentjoinStudentGrade
onStudent.Stude