学生成绩管理系统SQL数据库技术文档格式.docx
- 文档编号:22724714
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:25
- 大小:259.46KB
学生成绩管理系统SQL数据库技术文档格式.docx
《学生成绩管理系统SQL数据库技术文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统SQL数据库技术文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
0,则插入不成功.
●在向教师表中添加记录时,如果电话号码不是0-9的数字,则插入不成功。
(10)、创建自定义函数和索引
这些都在后面有完整的代码和解释.
三、四个表的E-R实体模型图分析:
1 N
N M
在教学管理中,学校开设若干门学科,一个教师可以教授其中的一门或多门课程,每个学生也需要学习其中的几门课程,因此,教学管理中涉及的对象(实体型)有学生、教师和课程。
用E-R图描述它们之间的联系。
如图所示。
其中,学生与课程是多对多的联系,而教师与课程的联系则是一对多.
这四个表的总的实体—关系图:
四、设计数据表:
通过E—R图分析,现在已经对数据库有一个很清楚的认识了.
在此学生成绩信息中有4个表需要建立
学生信息表(student)包括学号(sno)、姓名(sname)、性别(Ssex)、班级(class)、出生日期(sbirth)
教师信息表(teacher)包括教师编号(tno)、姓名(tname)、性别(Tsex)、部门(depart)、职称(prof)、出生日期(tbirth)
成绩表(score)包括学号(sno)、课程号(cno)、成绩(degree)
课程信息表(course)包括课程号(cno)、课程名称(cname)、教师编号(tno)
五、表结构
主键是一个表通过一个列或多个列组合的数据来唯一标识表中的每一行,这个列或列组合就被称为主键,煮件可以来强制实体完整性.
主键约束有以下特征和作用:
(1)主键约束通过不允许一个或多个列输入重复的值来保证一个表中所有行的惟一性,使所有浪都是可以区分的.
(2)一个表张只能有一个主键,且组成主键的列的数据都不能取空值。
(3)当定义主键约束时,SQLserver在主键列上建立惟一性索引,这个索引在煮件被查询时可以加快查询的速度。
在teacher表中,以教师编号tno为主键,对其进行惟一性约束。
在Course表中,以课程号为主键,对其进行惟一性约束。
1、Student表:
sno
Char(8)
不允许为空
sname
Char(10)
Ssex
Char
(2)
sbirth
Datetime(8)
允许为空
class
Char(4)
type
Char(7)
score表结构:
sno
Char(8)
cno
Char(5)
degree
Float(8)
Course表:
以课程号为主键,通过这个主键来对这个表进行唯一性约束.
cno(主键)
Char(5)
cname
varchar(10)
tno
char(3)
Teacher表结构:
Tno(主键)
Char(5)
tname
varchar(10)
depart
Varchar(8)
tsex
Char
(2)
tbirth
datatime
prof
Char(6)
六、其他对象的说明:
(1)、外键约束(primary key):
外键也是由表中的一个列或多个列组成的,它是和在相关表中事先定义的具有惟一性的列一起使用的,该列一个是所在表的主键。
外键约束用来建立和强制两个表之间的关联,即一个表的一个列或列组合与另一个表的具有惟一性的列或列组合相关,这个列或列组合就成为第一个表中的外键外键约束限制将破坏这种关联的操作.作为外键的列的值可以是空值,或是它所引用的表中已经存在的值。
在score表中,其学号sno和课程号cno都是此表的外键约束,因为此表中学号sno要受学生信息表中的学号的约束,student表中没有的学号,score表中也应该没有,如果向score表添加数据时违反的此规则,则添加不成功。
课程号cno也同样,受到course表中课程号cno的约束.。
(2)、空值(null):
空值意味着数据尚未如,它与0或长度为零的字符串(“”)的含义不同。
如果表中的某一列必须有值才能使记录有意义,那么可以指明该列不允许取空值。
在教师信息表teacher中其出生日期列tbirth和职称prof允许为空,但并不表示该教师没有生日,没有职称,而是目前还不知道而已。
在学生信息表student中其出生日期sbirth也可为空,也是同样的道理。
(3)、check约束:
检查约束可以用来限制列上可以接受的数据值,检查约束使用逻辑表达式来限制列上可以接受的数据.可以在一个列上使用多个检查约束,也可以在表上建立一个可以在多个列上使用的检查约束.
比如:
在学生信息表中,邮件地址semail的格式必须是%@%格式的。
(4)、惟一性约束:
使用惟一性约束的作用是保证在不是主键的指定惟一性的列上不会出现重复的数据。
定义了惟一性约束的列上的数据可以为空值,一个表上可以定义多个惟一性约束。
七、创建数据库、数据表、视图、存储过程、自定义函数、触发器等语句和测试语句
1、创建数据库:
create databasessh
on
(name=ssh,
'
e:
\老大\sql\ssh.mdf'
,
size=1)
logon
(name=ssh1,
'e:
\老大\sql\ssh1.ldf'
size=1)
2、创建数据表
(1)、student表
usessh
createtablestudent
(snochar(8)primarykey,
snamechar(10) not null,
Ssexchar
(2)notnull,
Sbirthdatetime,
class char(4)not null
semailvarchar(20))
(2)、score表
create tablescore
(snochar(8)not null,
cno char(4)notnull,
degreefloatnotnull)
(3)、course表
createtablecourse
(cnochar(5)not null primarykey,
cname varchar(10)notnull,
tnochar(3)notnull)
(4)、teacher表
createtableteacher
(tnochar(5) notnullprimarykey,
tnamevarchar(10)not null,
departvarchar(8)not null,
Tsexchar
(2)notnull,
Tbirthdatetime,
profchar(6))
4向表中添加记录
(1)、向学生信息表中添加
insertintostudentvalues('
101'
'生活’,’女'
'1983-09—18',’11'
)
insertinto student values('
102’,'风尘'
,'
男’,'
1984—01—01’,'11’)
insertintostudentvalues('
103'
'离开','
男'
'
1984-01-01',’11'
insertintostudentvalues(’104','
流浪','女',’1984-11—11','11'
insertintostudentvalues('105','
生命'
男’,’1984-12—05’,'
13'
insert into studentvalues(’106’,’无悔','
女'
1984—11—01’,'
13’)
insert intostudent values(’107','历史','
女',’1984—10-01’,'12')
insertintostudentvalues('
108’,'
风尘’,'
男’,’1985-9-08’,'
11'
insertintostudent values('
109’,'
活着’,’男'
1985-12—12','
12'
insertinto studentvalues(’110'
,’傻瓜'
,’女'
,'1985-08-28','
12'
)
………………
查看记录
Select*fromstudent
(2)、向成绩表中添加
insertintoscorevalues(’101',’01',88)
insertintoscorevalues('
101'
'02’,85)
insert intoscorevalues(’102’,’02'
,80)
insert into scorevalues(’101’,’03',88)
insertintoscore values('
102'
'02’,85)
insertintoscorevalues(’102’,’03',80)
insertintoscorevalues('103'
,’01’,83)
insertintoscorevalues('
’02’,85)
insertintoscorevalues('103’,'
03',90)
insertintoscore values('104','01'
,60)
…………
Select*fromscore
(3)、向教师表中添加数据
insertinto course values('01'
,'计算机’,’11')
insertintocoursevalues('
02'
'网络管理',’12'
insertintocoursevalues('03','
专业英语',’13’)
insertintocourse values(’04'
,'软件工程’,'14')
…………
Select *fromcourse
(4)、向课程表中添加数据
insertintoteacher values('
11’,’无意’,’计算机系’,'
男','
1973-4-5'
’教授'
insertintoteachervalues('12',’生活','计算机系'
1975-12-1'
副教授'
insertintoteachervalues('
13’,'
没有','管理系',’女’,'
1975-3-3',’副教授'
insertinto teacher values('
14’,’离开'
,’英语系','男’,'
1973-5-5','
教授'
…………
Select*from teacher
5、一些查询语句
(1)、查询成绩大于学号为101的学生的课程为02的成绩的所有列.
select* fromscorewheredegree>(selectdegreefromscore wheresno='
101'
andcno='02')
(2)、查询课程号01大于课程号02的最大值、并以分数降序排序的成绩表中所有列
select* from scores wheres.cno=’01'
ands.degree>
=(selectmax(degree)fromscoreywherey.cno='
02’) orderbydegreedesc
go
selectmax(degree)as"
02max"
fromscorewhere cno=’02'
(3)、查询性别为男的学号,姓名,班级,课程号和成绩的学生
selectstudent。
sno,student.sname,student。
class,score.cno,score.degree fromstudent,scorewhere student.sno=score。
sno andssex=’男’
(4)、查询成绩在60到80之间的所有列
select* fromscore wheredegreebetween60and80
(5)、查询score表中至少有5名学生选修的并以0开头的课程的平均分
selectavg(degree)as"
平均分”,cnofromscorewherecnolike’0%'
group bycnohaving count(*)>
=5
6、创建自定义数据类型
创建一个email自定义数据类型
execsp_addtypeemail, '
varchar(20)'
,'
null’
修改student表中的semail数据类型为email类型
altertablestudentaltercolumnsemailemail
7、向表中添加字段
向student表添加type,semail,,b并且邮件地址有check约束
altertablestudent add typechar(7)
altertablestudentaddsemailvarchar(20)nullconstraintck_sem check(semaillike ’%@%’)
alter tableteacher addtelvarchar(15)
8、创建视图
(1)、创建所有11班的学生信息的视图
createviewstudent11
as
select*fromstudentwhereclass=’11'
查看视图中的记录
select*fromstudent11
(2)、创建视图course_degree,其中的内容是选修计算机课程的学生信息,包括(sno,sname,cno,cname,degree),创建时加上withcheckoption
createviewcourse_degree(sno,sname,cno,cname,degree)
select score.sno,sname,score。
cno,cname,degreefromcourse,student, score
wherescoo=course.cnoandstudent.sno=score。
snoandcname=’计算机'
withcheckoption
select* fromcourse_degree
(3)、创建一个视图,其中的内容是成绩表中每门课程的
createviewaverage
selectavg(degree) as’平均分'from scoregroup bycno
select *fromaverage
(4)、创建视图其中的内容是所有男教师和男学生的name,sex,birth
createviewman
as
selectsnameasname,ssexas sex,sbirthas birth fromstudentwhere ssex='男’
unionselecttname,tsex,tbirthfrom teacherwhere tsex=’男’
select*fromman
9、创建规则
规则的作用月CHECK约束的部分功能相同,在向表中的某列插入或更新数据时,用它来限制输入的新值的取值范围。
而它与CHECK约束不同的是:
●CHECK约束是用CREATETABLE语句在建表时指定的,而规则需要作为单独的数据库对象来实现。
●在一个列上只能使用一个规则。
但可以使用多个CHECK约束.
●规则可以应用于多个列,还可以应用于用户自定义的数据类型,而CHECK约束只能应用于它定义的列。
(1)、创建一个degree_rule规则
createruledegree_rule
as
@values〉0
把此规则绑定到score表中degree列
execsp_bindrule'
degree_rule’,’score.degree'
在向成绩表中添加记录时,如果成绩degree〈0,则插入不成功。
(2)、创建一个tel_rule规则
createruletel_rule
as
@value like '
[0—9][0-9] [0—9][0—9] [0—9][0—9][0-9][0-9]’
把此规则绑定到teacher表中tel列
execsp_bindrule ’tel_rule'
,'teacher.tel'
在向教师表中添加记录时,如果电话号码不是0-9的数字,则插入不成功.
10、创建存储过程
存储过程是存储在服务器上的例行程序及过程,在SQL SERVER只能感定义某个过程,其中记录了一系列的造作,每次应用程序只需调用该过程就可完成该操作,这种SQLSERVER中定义的过程就被称为存储过程。
它可以完成以下功能:
⏹接受输入参数并返回多个输出值。
⏹包含T—SQL语句用以完成特定的SQLSERVER操作,其中可以有对其他存储过程的调用。
⏹返回一个指示成功与否及失败原因的状态代码给调用它的过程。
存储过程不能接用过程名返回值,也不能直接在表达式中使用。
(1)、创建一个存储过程,来显示成绩表中的课程号在课程表中并且所任教师性别为男、所在部门是计算机系的成绩表中的列
createprocstudent_11
as
select*fromscorewherecnoin(selectcnofrom course ,teacher wherecourse。
tno=teacher.tnoanddepart='计算机系’ andtsex='
调用此存储过程
Exec student_11
(2)、创建一个带输入参数的存储过程,调用此存储过程时,给出一个学生名,显示出此学生的学号,姓名,所学课程号,课程名称和对应的成绩
createprocstudent_name
@sname varchar(10)
selectstudent。
sno,sname,score。
cno,degree cnamefromstudent,score,course
wherestudent。
sno=score。
snoandscore.cno=course.cnoand sname=@sname
调用此存储过程,(此例是输出姓名为历史的学生的信息)
execstudent_name '历史'
(3)、创建一个存储过程,在执行此存储过程时,如果没有给出参数(学生姓名),则输入全部的学生的学号,姓名,班级,任课教师编号及其姓名,所学课程名称和成绩,如果有,则显示此学生的以上信息.
createprocstudent_teacher
@snamevarchar(10)=null
as
if @snameis null
select student。
sno,sname,student.class,teacher.tno,teacher。
tname,degree,cnamefrom student,score,course,teacher
where student.sno=score.snoand score。
cno=course。
cnoandcourse。
tno=teacher。
tno
else
select student。
sno,sname,student。
class,teacher.tno,teacher.tname,degree,cnamefromstudent,score,course,teacher
where student.sno=score。
snoand o=course.cnoandcourse.tno=teacher.tnoandsname=@sname
调用此存储过程
execstudent_teacher(没有实参)
execstuden
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 SQL 数据库技术