您好,欢迎访问三七文档
1创建学生成绩视图,要求查询所有选课学生的学号、姓名、课程名称及分数createview学生成绩视图asselect学生表.学号,姓名,课程名称,分数from学生表,成绩表,课程表where学生表.学号=成绩表.学号and成绩表.课程号=课程表.课程号select*from学生成绩视图2创建班级学生视图,要求显示班级名称,学号,姓名,性别。createview班级学生视图asselect班级名称,学生表.学号,姓名,性别from班级表,学生表where班级表.班级号=学生表.班级号3通过班级学生视图,添加学号为,姓名为张三,性别为男的学生信息。insertinto班级学生视图(学号,姓名,性别)values('001','张三','男')4通过班级学生视图,将学号为的学生性别改为女。alterview班级学生视图asselect性别,学号from学生表where学号='001'and性别='女'5通过班级学生视图,删除学号为的学生信息。deletefrom班级学生视图where学号='001'6创建教师任课门数统计视图,要求查询每位教师的教师号及其任课的门数。createview教师任课门数统计视图asselect教师表.教师号,count(课程号)as任课门数from成绩表,教师表groupby教师号7创建学生课程视图,要求查询选修两门以上课程的学生学号和选课门数。createview学生课程视图asselect学生表.学号,count(课程号)from学生表,成绩表where课程号'2'and学生表.学号=成绩表.学号8修改学生成绩视图,要求查询选课在三门以上且各门课程均及格的学生的学号及其总成绩。alterview学生成绩视图asselect学号,sum(分数)from成绩表havingavg(分数)609删除学生成绩视图。1.在学生表上创建一个触发器:[修改学号],当修改该表中的学号时,提示用户不允许修改该表中的主键,并回滚事务。createtrigger修改学号on学生表fordeleteasifupdate(学号)beginraiserror('你不能修改学号',16,1)rollbacktransactionend2.在学生表上先建立一个约束,约束性别的取值只能为男或女。然后再创建两个触发器,一个after一个insteadof触发器,禁止修改性别列,并提示用户不允许修改该表中的性别列,并回滚事务然后修改任一行的性别值为“母”,体验after和insteadof的区别。createtable学生表(性别nchar(1)check(性别='男'or性别='女'))createtriggerss1on学生表afterupdateasbeginraiserror('用户不允许修改该表中的性别列',16,1)rollbacktransactionendupdate学生表set性别='母'视图的创建1.创建学生成绩视图,要求查询所有选课学生的学号、姓名、课程名称及分数。createview学生成绩视图asselect学生表.学号,姓名,课程名称,分数from学生表,成绩表,课程表where学生表.学号=成绩表.学号and成绩表.课程号=课程表.课程号2.创建班级学生视图,要求显示班级名称,学号,姓名,性别。createview班级学生视图asselect班级名称,学号,姓名,性别from班级表,学生表where班级表.班级号=学生表.班级号3.通过班级学生视图,添加学号为001,姓名为张三,性别为男的学生信息。insertinto班级学生视图(学号,姓名,性别)values('001','张三','男')4.通过班级学生视图,将学号为001的学生性别改为女。update班级学生视图set性别='女'where学号='001'5.通过班级学生视图,删除学号为001的学生信息。deletefrom班级学生视图where学号='001'6.创建教师任课门数统计视图,要求查询每位教师的教师号及其任课的门数。createview教师任课门数统计视图asselect教师号,count(distinct课程号)as门数from成绩表groupby教师号select*from教师任课门数统计视图7.创建学生课程视图,要求查询选修两门以上课程的学生学号和选课门数。createview学生课程视图asselect学号,count(distinct课程号)as选课门数from成绩表groupby学号havingcount(distinct课程号)=2select*from学生课程视图8.修改学生成绩视图,要求查询选课在三门以上且各门课程均及格的学生学号及其总成绩。createview学生成绩视图asselect学号,count(distinct课程号)as选课门数,sum(分数)as总成绩from成绩表where分数=60groupby学号havingcount(distinct课程号)=3select*from学生成绩视图9.删除学生成绩视图。drop学生成绩视图数据查询与操作1查询全体学生的学号、姓名和年龄。select学号,姓名,年龄from学生表2查询学生的全部信息。select*from学生表3查询选修了课程的学生的学号。select学号from学生表4查询选修课程号为‘C1’的学生的学号和成绩。select分数,学生表.学号from学生表,成绩表where学生表.学号=成绩表.学号and课程号='c1'5查询成绩高于分的学生的学号、课程号和成绩。select学生表.学号,课程号,分数from学生表,成绩表,课程表where学生表.学号=成绩表.学号and课程表.课程号=成绩表.课程号and分数856查询选修C1或C2且分数大于等于分学生的的学号、课程号和成绩。select学生表.学号,课程号,分数from学生表,成绩表,课程表where学生表.学号=成绩表.学号and课程表.课程号=成绩表.课程号and课程号in('c1','c2')and分数=857查询工资不在至之间的教师的教师号、姓名及职称。select教师号,姓名,职称from教师表where工资notbetween1000and15008查询没有选修C1,也没有选修C2的学生的学号、课程号和成绩select学生表.学号,课程号,分数from学生表,课程表,成绩表where课程号notin('c1'&'c2')9.查询所有姓杜的教师号和姓名select教师号,姓名from教师表where姓名like'杜%'10.求学号为s1学生的总分和平均分selectsum(分数)as总分,avg(分数)as平均分from成绩表where学号='s1'11.求选修c1号课程的最高分,最低分及之间相差的分数selectmax(分数)as最高分,min(分数)as最高分,max(分数)-min(分数)as分数差from成绩表where课程号='c1'12.求班学生的总分selectcount(*)from学生表where班级号='200301'13.查询选修c1的学生学号和成绩,并按成绩降序排列select学号,成绩from成绩表where课程号='c1'orderby分数desc14.查询选修c2,c3,c4或c5课程的学号,课程号和成绩,查询结果按学号升序排列,学号相同再按成绩降序排列select学号,课程号,分数from成绩表where课程号in('c2','c3','c4','c5')orderby学号asc,分数desc15.查询杜老师所讲授的课程名称select课程名称from课程表,教师表,成绩表where教师表.教师号=成绩表.教师号and成绩表.课程号=课程表.课程号and姓名like'杜%'16.查询讲授号为c5的教师姓名select姓名from教师表,成绩表where教师表.教师号=成绩表.教师号and课程号='c5'17.查询选修c1课程的学生的姓名与课程号select姓名,课程号from学生表,成绩表where学生.学号=成绩表.学号and课程号='c1'18.查询所有选课学生的学号,姓名,选课名称及成绩select学生表.学号,姓名,课程名称,分数from学生表,课程表,成绩表where学生表.学号=成绩表.学号and成绩表.课程号=课程表.课程号20.查询各位老师的教师号及其任课门数select教师号,count(distinct课程号)as门数from成绩表groupby教师号创建我班同学库1.建立一个数据库,数据库名为:我班同学库。createdatabase我班同学库2.(1).同学表(学号char(6),姓名nchar(4),性别nchar(1),出生日期datetime,身高decimal(5,2),民族nchar(5),身份证号char(18),宿舍编号char(6))。要求:姓名非空,性别取值在男女之间,名族默认为汉族。createtable同学表(学号char(6)primarykey,姓名nchar(4)notnull,性别nchar(1)check(性别='男'or性别='女'),出生日期datetime,身高decimal(5,2),民族nchar(5)default'汉族',身份证号char(18),宿舍编号char(6)foreignkey(宿舍编号)references宿舍表(宿舍编号))(2).宿舍表(宿舍编号char(6),宿舍电话号码char(12))。要求:宿舍电话号码必须是以’0551-‘开头的7位数字。createtable宿舍表(宿舍编号char(6)primarykey,宿舍电话号码char(12)check(宿舍电话号码like‘0551-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))(3).课程表(课程号char(6),课程名称varchar(10))createtable课程表(课程号char(6)primarykey,课程名称varchar(10))(4).选课表(学号char(6),课程号char(6),分数decimal(5,2))createtable选课表(学号char(6),课程号char(6)foreignkey(课程号)references课程表(课程号),分数decimal(5,2),primarykey(学号,课程号))(5).创建一默认值m-性别,默认取男,并将其应用到同学表的性别列上。createdefaultm_性别as'男'execsp_bindefaultm_性别,'同学表.性别'(6).创建一规则r_分数,要求分数必须是在0-100之间的数值,并将其应用到选课表的分数列上。createruler_分数as@分数between0and100execsp_bindruler_分数,'选课表.分数'4.用T-SQL语句实现以下几题(1)向同学表中插入学号为s10,姓名为张三,性别为男,身高为1.60的数据。insertinto同学表(学号,姓名,性别,身高)values('s10','张三','男',1.60)(2)将学号为s10的学生的性别改为女。update同学表set性别='女’where学号='s10'(3)删除学号为s10的学生记录。delete同学表where学号='s10'创建触发器1.在学生表上创建一个触发器:[修改学号],当修改该表中的学号时,提示用户不允许修改该表中的主键,并回滚事务。altertable学生表addconstraintssssssprimarykey(学号)createtriggerddddddon学生表forupdateasbeginifupdate(学号)raiserror('对不起,不允许修改该表中的主键',16,1)rollbacktransactionend2.在学生表上先建立一个约束,约束性别的取值只能为男或女。然后再创建两个触发器,一个after一个insteadof触发器,禁
本文标题:数据库实训
链接地址:https://www.777doc.com/doc-1916060 .html