视图的创建与使用 Sql Server View
创建教材的三个数据表Student、Course及SC。
create database S_T Use S_T CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20), Ssex CHAR(20), Sage SMALLINT, Sdept CHAR(20) ); CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, ); CREATE TABLE Course (Cno CHAR(4), Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, ); 2、向三个表中插入教材中的数据。 INSERT INTO Student values('200215121','李勇','男',20,'CS'); INSERT INTO Student values('200215122','刘晨','女',19,'CS'); INSERT INTO Student values('200215123','王敏','女',18,'MA'); INSERT INTO Student values('200215124','张立','男',19,'IS'); INSERT INTO Course values('1','数据库','5',4); INSERT INTO Course(Cno,Cname,Ccredit) values('2','数学',2); INSERT INTO Course values('3','信息系统','1',4); INSERT INTO Course values('4','操作系统','6',3); INSERT INTO Course values('5','数据结构','7',4); INSERT INTO Course (Cno,Cname,Ccredit) values('6','数据处理',2); INSERT INTO Course values('7','PASCAL语言','6',4); INSERT INTO SC VALUES ('200215121', '1', 92); INSERT INTO SC VALUES ('200215121', '2', 85); INSERT INTO SC VALUES ('200215121', '3', 88); INSERT INTO SC VALUES ('200215122', '2', 90); INSERT INTO SC VALUES ('200215122', '3', 80);
3、创建一个名为View_Male_Student的视图,从表Student中查询出性别为男的所有学生的资料。 create view View_Male_Student AS select * from Student where Ssex='男' 4、查看View_Male_Student视图的内容。 select * from View_Male_Student 5、从视图View_Male_Student中查询名为“李勇”的同学的资料。 select * from View_Male_Student where Sname='李勇' 6、向视图View_Male_Student中插入一条记录(‘200215126’,’赵林’,’男’,18,’CS’); insert into View_Male_Student values('200215126','赵林','男',18,'CS') 7、重新查看View_Male_Student视图的内容。 select * from View_Male_Student 发生变化 8、查看Student中的内容,看表的内容是否发生变化。 select * from Student 9、向视图View_Male_Student中插入一条记录(‘200215127’,’李红’,’女’,18,’CS’); 是否成功?Student表中的数据数据是否发生变化? insert into View_Male_Student values('200215127','李红','女',18,'CS') select * from Student 成功,表中数据发生变化 10、创建一个名为View_Male_Student1的视图,从表Student中查询出性别为男的所有学生的资料,视图加上WITH CHECK OPTION选项。 create view View_Male_Student1 AS select * from Student where Ssex='男' WITH CHECK OPTION 11、向视图View_Male_Student1中插入一条记录(‘200215128’,’关飞’,’男’,18,’CS’); insert into View_Male_Student1 values('200215128','关飞','男',18,'CS') 12、向视图View_Male_Student1中插入一条记录(‘200215129’,’孙婷’,’女’,18,’CS’); 是否成功?Student表中的数据数据是否发生变化? insert into View_Male_Student1 values('200215129','孙婷','女',18,'CS') select * from Student 没有发生变化,显示插入错误,因为必须是’男’才可以 13、创建一个名为View_Course3的视图,从Course表中查询学分大于3的所有课程的课程号、课程名、学分。 create view View_Course3 AS select Cno,Cname,Ccredit from Course where Ccredit>3 14、查看View_Course3视图的内容。 select * from View_Course3 15、修改View_Course3视图,将“数学”改为“基础数学”。 update View_Course3 set Cname='基础数学' where Cname='数学' 更新行,因为数学的学分是,不在视图View_Course3中 16、查看View_Course3和Course数据是否发生变化。 select * from View_Course3 select * from Course 没有发生变化,因为数学的学分是,不在视图View_Course3中 17、删除视图View_Course3中的PASCAL语言课程。 delete from View_Course3 where Cname='PASCAL语言' 18、查看View_Course3和Course中的数据是否发生变化。 select * from View_Course3 select * from Course 两个都发生变化,PASCAL语言被删除 19、创建一个名为View_Student1的视图,包含计算机系所有女生的学号、课程号及相应的成绩。 create view View_Student1 AS select SC.Sno,Cno,Grade from SC,Student where SC.Sno=Student.Sno and Sdept='CS'and Ssex ='女' 20、查看View_Student1的内容。 select * from View_Student1 21、创建一个名为View_Student2的视图,包含每位选课学生的学号、姓名、总成绩。 create view View_Student2 as select Student.Sno,Sname,SUM(Grade) AS '总成绩' FROM Student,SC where Student.Sno=SC.Sno GROUP By Student.Sno,Student.Sname 22、查看View_Student2中的内容。 select * from View_Student2
如有转载请请务必保留此出处:http://www.cnblogs.com/xiangyangzhu/