1、 在成绩表中建立一个触发器,当向表中添加记录时,此学生的成绩都乘以1.2 检查学生的邮箱地址是否相同,如果相同,输出inserting fail,并且回滚事务;如果不相同,则插入成功。 在成绩表建立一个触发器,在向表中插入记录时,检验插入的课程号是否在课程表中的课程号的范围之内。(9)、创建规则,并绑定 在向成绩表中添加记录时,如果成绩degree(select degree from score where sno= and cno=(2)、查询课程号01大于课程号02的最大值、并以分数降序排序的成绩表中所有列select * from score s where o= and s.degr
2、ee=(select max(degree) from score y where o= ) order by degree descgo select max(degree) as 02max from score where cno=(3)、查询性别为男的学号,姓名,班级,课程号和成绩的学生select student.sno,student.sname,student.class,o,score.degree from student,score where student.sno=score.sno and ssex=()、查询成绩在60到80之间的所有列select * from s
3、core where degree between 60 and 80()、查询score表中至少有5名学生选修的并以0开头的课程的平均分select avg(degree) as 平均分,cno from score where cno like 0% group by cno having count(*)=56、创建自定义数据类型创建一个email自定义数据类型 exec sp_addtype email, varchar(20) , null修改student表中的semail数据类型为email类型alter table student alter column semail ema
4、il7、向表中添加字段 向student表添加type,semail,b并且邮件地址有check约束alter table student add type char(7)alter table student add semail varchar(20) null constraint ck_sem check (semail like %alter table teacher add tel varchar(15)8、创建视图(1)、创建所有11班的学生信息的视图create view student11as select * from student where class=查看视图中的
5、记录select * from student11(2)、创建视图course_degree,其中的内容是选修计算机课程的学生信息,包括(sno,sname,cno,cname,degree),创建时加上with check optioncreate view course_degree(sno,sname,cno,cname,degree)select score.sno,sname,o,cname,degree from course ,student, score where o=o and student.sno=score.sno and cname= with check opti
6、onselect * from course_degree(3)、创建一个视图,其中的内容是成绩表中每门课程的create view averageselect avg(degree) as 平均分 from score group by cnoselect * from average (4)、创建视图其中的内容是所有男教师和男学生的name,sex,birthcreate view man as select sname as name,ssex as sex,sbirth as birth from student where ssex=union select tname,tsex,t
7、birth from teacher where tsex=select * from man9、创建规则规则的作用月CHECK约束的部分功能相同,在向表中的某列插入或更新数据时,用它来限制输入的新值的取值范围。而它与CHECK约束不同的是: CHECK约束是用CREATE TABLE语句在建表时指定的,而规则需要作为单独的数据库对象来实现。 在一个列上只能使用一个规则。但可以使用多个CHECK约束。 规则可以应用于多个列,还可以应用于用户自定义的数据类型,而CHECK约束只能应用于它定义的列。 (1)、创建一个degree_rule规则create rule degree_rulevalue
8、s把此规则绑定到score表中degree列exec sp_bindrule degree_rulescore.degree在向成绩表中添加记录时,如果成绩degree(2)、创建一个tel_rule规则create rule tel_rulevalue like 0-9 0-9 0-9 0-9 0-9 0-9 0-9 0-9把此规则绑定到teacher表中tel列tel_ruleteacher.tel在向教师表中添加记录时,如果电话号码不是0-9的数字,则插入不成功。10、创建存储过程 存储过程是存储在服务器上的例行程序及过程,在SQL SERVER只能感定义某个过程,其中记录了一系列的造作
9、,每次应用程序只需调用该过程就可完成该操作,这种SQL SERVER中定义的过程就被称为存储过程。它可以完成以下功能: 接受输入参数并返回多个输出值。 包含T-SQL语句用以完成特定的SQL SERVER操作,其中可以有对其他存储过程的调用。 返回一个指示成功与否及失败原因的状态代码给调用它的过程。 存储过程不能接用过程名返回值,也不能直接在表达式中使用。(1)、创建一个存储过程,来显示成绩表中的课程号在课程表中并且所任教师性别为男、所在部门是计算机系的成绩表中的列create proc student_11select * from score where cno in (select cn
10、o from course ,teacher where course.tno=teacher.tno and depart= and tsex=调用此存储过程Execstudent_11 (2)、创建一个带输入参数的存储过程,调用此存储过程时,给出一个学生名,显示出此学生的学号,姓名,所学课程号,课程名称和对应的成绩create proc student_namesname varchar(10)select student.sno,sname,o,degree cname from student,score,course where student.sno=score.sno and o
11、=o and sname=sname调用此存储过程,(此例是输出姓名为历史的学生的信息)exec student_name (3)、创建一个存储过程,在执行此存储过程时,如果没有给出参数(学生姓名),则输入全部的学生的学号,姓名,班级,任课教师编号及其姓名,所学课程名称和成绩,如果有,则显示此学生的以上信息。create proc student_teachersname varchar(10)=nullas if sname is null select student.sno,sname,student.class,teacher.tno,teacher.tname,degree,cname from student,score,course,teacherwhere student.sno=score.sno and o=o and course.tno=teacher.tno elsewhere student.sno=score.sno and o=o and course.tno
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1