




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 四个表的E-R实体模型图分析:教师学生 学教 1 N N M这四个表的总的实体-关系图:班级号学号号学生信息表出生日期号学号号性别号出生日期号教师姓名号成绩表号部门号 成绩号教师信息表课程名称号课程号号 职称号教师编号号课程表设计数据表:通过E-R图分析,现在已经对数据库有一个很清楚的认识了。 在此学生成绩信息中有4个表需要建立学生信息表(student)包括学号(sno)、姓名(sname)、性别(Ssex)、班级(class)、出生日期(sbirth)教师信息表( teacher)包括教师编号(tno)、姓名(tname)、性别(Tsex)、部门(depart)、职称(prof)、出生日
2、期(tbirth)成绩表(score)包括学号(sno)、课程号(cno)、成绩(degree)课程信息表(course)包括课程号(cno)、课程名称(cname)、教师编号(tno) 五、表结构 在teacher表中,以教师编号tno为主键,对其进行惟一性约束。在Course表中,以课程号为主键,对其进行惟一性约束。 1、Student表:snoChar(8)不允许为空snameChar(10)不允许为空SsexChar(2)不允许为空sbirthDatetime(8)允许为空classChar(4)不允许为空typeChar(7)允许为空score表结构:snoChar(8)不允许为空c
3、noChar(5)不允许为空degreeFloat(8)不允许为空Course表:以课程号为主键,通过这个主键来对这个表进行唯一性约束。cno(主键)Char(5)不允许为空cnamevarchar(10)不允许为空tnochar(3)不允许为空Teacher表结构:Tno(主键)Char(5)不允许为空tnamevarchar(10)不允许为空departVarchar(8)不允许为空tsexChar(2)不允许为空tbirthdatatime允许为空profChar(6)允许为空创建规则(1)、创建一个degree_rule规则create rule degree_rule asvalue
4、s>0把此规则绑定到score表中degree列exec sp_bindrule 'degree_rule','score.degree'在向成绩表中添加记录时,如果成绩degree<0,则插入不成功。(2)、创建一个tel_rule规则create rule tel_ruleas value like '0-9 0-9 0-9 0-9 0-9 0-9 0-9 0-9'把此规则绑定到teacher表中tel列exec sp_bindrule 'tel_rule','teacher.tel'在向教师表中添
5、加记录时,如果电话号码不是0-9的数字,则插入不成功。10、创建存储过程(1)、创建一个存储过程,来显示成绩表中的课程号在课程表中并且所任教师性别为男、所在部门是计算机系的成绩表中的列create proc student_11as select * from score where cno in (select cno from course ,teacher where course.tno=teacher.tno and depart='计算机系' and tsex='男')调用此存储过程Execstudent_11 (2)、创建一个带输入参数的存储过程,
6、调用此存储过程时,给出一个学生名,显示出此学生的学号,姓名,所学课程号,课程名称和对应的成绩create proc student_namesname varchar(10)as select student.sno,sname,o,degree cname from student,score,course where student.sno=score.sno and o=o and sname=sname调用此存储过程,(此例是输出姓名为历史的学生的信息)exec student_name '历史'(3)、创建一个存储过程,在执行此存储过程时,如果没有给出参数(学生姓名)
7、,则输入全部的学生的学号,姓名,班级,任课教师编号及其姓名,所学课程名称和成绩,如果有,则显示此学生的以上信息。exec student_teacher(没有实参) exec student_teacher '历史' (查询姓名为历史的学生的选课信息和成绩)(4)、创建一个存储过程,传递一个学生姓名,先判断此学生是否有邮箱,如果有,则显示此学生的姓名,邮箱地址,学号,班级;如果没有的话,输出此句话'the semail is empty'create proc student_emailsname varchar(10)asbegin if (select se
8、mail from student where sname=sname) is nullbegin print'the semail is empty' endelse select sname,semail,sno,class from student where sname=sname end调用此存储过程 exec student_email 'super'当给出姓名的那个学生没有邮箱地址时,则会显示如下内容。 exec student_email dfdf'11、触发器 (1)、创建一个触发器,来检查学生的邮箱地址是否相同,如果相同,输出'
9、;inserting fail',并且回滚事务;如果不相同,则插入成功。create trigger studentinserton studentafter insertas if (select semail from inserted where semail in (select semail from student) is not nullbegin print 'inserting fail' rollback transactionendelse print'insering succeed'向学生信息表中插入一条记录,检验是否成功插入i
10、nsert into student values('114','lengbing','女','1985-12-12','11','lengbingssh','一般')(2)、在成绩表中建立一个触发器,当向表中添加记录时,此学生的成绩都乘以1.2create trigger scoreupdate on scoreafter insertas update score set degree=degree*1.2 from score where sno in (select sno
11、from inserted )向表中插入一条记录,检验触发器是否有用。insert into score values('108','01','56')(3)、在成绩表建立一个触发器,在向表中插入记录时,检验插入的课程号是否在课程表中的课程号的范围之内。如果在,则插入成功;否则,提示信息'没有这门课程',回滚事务。create trigger course_scoreon scoreafter insertas if (select cno from inserted where cno in(select cno from co
12、urse) is null begin print'没有这门课程' rollback transaction end向表中添加一条记录,进行验证。insert into score values('108','06','60')12、自定义函数(1)、创建一个用户自定义函数,输出与指定的学生同班的学生个数create function studentcount(sno char(5)returns intbegineclare counter intselect counter=count(*) from student wher
13、e class=(select class from student where sno=sno)return counterend调用此自定义函数(本例是查找与学号102同班的学生个数)declare a intset a=dbo.studentcount('102')print convert(char(3),a)(2)、创建一个用户自定义函数,用于输出同一个班级中的学生信息create function studentclass(class char(5)returns tablereturn(select * from student where class=class
14、)调用自定义函数(本例是输出12班的学生信息)select * from studentclass('12')(3)、创建一个自定义函数,把某一学生所学课程名称,课程号及其成绩插入一个临时表中显示出来。create function studentscore(sno varchar(5)returns student_score table(sno char(5), sname varchar(10), cno char(5), cname varchar(10), degree float)begin insert student_scoreselect student.sno,sname,o,cname,degree from student,score,coursewhere student.sno=score.sno and o=o and student.sno=sno returnend查看学号为103的学生的各科成绩。select * from studentscore('103')13、建立索引(1)、在学生信息表邮箱列上创建一个惟一性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江国企招聘2025宁波余姚景隆置业有限公司招聘7人笔试参考题库附带答案详解
- 重庆三峡学院《通信仿真实验》2023-2024学年第二学期期末试卷
- 成都艺术职业大学《管理智慧》2023-2024学年第二学期期末试卷
- 三峡大学科技学院《多媒体课件设计与开发》2023-2024学年第二学期期末试卷
- 成都理工大学工程技术学院《数据采集与处理》2023-2024学年第二学期期末试卷
- 张家口学院《量子力学纯英文》2023-2024学年第二学期期末试卷
- 安顺学院《电机学实验》2023-2024学年第二学期期末试卷
- 濮阳科技职业学院《数学教学与实践》2023-2024学年第二学期期末试卷
- 武汉晴川学院《轧制工艺学板带材生产》2023-2024学年第二学期期末试卷
- 江西旅游商贸职业学院《黑白图式语言-造型》2023-2024学年第二学期期末试卷
- 换药术课件完整版本
- 2025届新高考物理冲刺复习:用动量定理解决带电粒子在磁场中的运动问题
- 洁净车间生产管理制度
- DB23∕T 1019-2020 黑龙江省建筑工程资料管理标准
- 杭州市市区历年公房租金调整一览表
- 高考考前指导(班主任)心理方面、应试复习方面等
- 热力小室方案计划全
- 丽声北极星分级绘本第一级上My Noisy Schoolbag课件
- 网络销售授权合同范本
- 建筑装饰专业中级职称理论考试题库-建设工程专业中级职称理论考试题库
- 小学六年级数学总复习讲座(课堂PPT)
评论
0/150
提交评论