GROUP BY Sdept;
2.修改数据
【题4-05】 将学号为“200215121”的学生年龄改为22岁。即要修改满足条件的一个元组的属性值。 UPDATE Student SET Sage=22
WHERE Sno=’200215121’;
【题4-06】 将所有学生的年龄增加1岁。即要修改多个元组的值。 UPDATE Student SET Sage=Sage+1;
【题4-07】将计算机科学系所有学生的成绩置零。
由于学生所在系的信息在Student表中,而学习成绩在SC表中,因此,可以将SELECT子查询作为WHERE子句的条件表达式。故该更新要求的SQL命令为:
UPDATE SC SET Grade=0 WHERE ‘CS’=
(SELECT Sdept FROM Student
WHERE Student.Sno=SC.Sno);
3.删除数据
【题4-08】删除学号为200215128的学生记录。 DELETE FROM Student
WHERE Sno=’200215128’;
【题4-09】删除所有学生的选课记录。 DELETE FROM SC;
这条DELETE语句将删除SC的所有元组,使SC成为空表。 【题4-10】删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE ‘CS’=
(SELECT Sdept FROM Student
WHERE Student.Sno=SC.Sno);
16
2.5实验五 视图的定义和维护
一、实验目的和要求
1.掌握SQL视图建立、修改和删除; 2.掌握SQL视图查询。
二、实验内容
方法一:利用SQL语言实现视图的建立、删除、查询、更新 (一)定义视图 1 建立视图
【题5-01】建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系(MA)的学生,视图的属性名为Sno,Sname,Sage,Sdept。
CREATE VIEW C_Student
AS
SELECT Sno, Sname, Sage, Sdept FROM Student WHERE Sdept=’MA’ WITH CHECK OPTION
【题5-02】建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。 本视图由三个基本表的连接操作导出,其SQL语句如下: CREATE VIEW Student_CR
AS
SELECT Student.Sno, Sname, Cname, Grade FROM Student, SC, Course
WHERE Student.Sno= SC.Sno AND SC.Cno=Course.Cno
【题5-03】定义一个反映学生出生年份的视图。 CREATE VIEW Student_birth(Sno, Sname, Sbirth)
AS SELECT Sno, Sname, 2007-Sage FROM Student
2 删除视图
【题5-04】删除视图Student_birth。 DROP VIEW Student_birth;
(二)查询视图
【题5-05】在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
SELECT Sname, Sage FROM C_Student WHERE Sage<20;
17
说明:本例转换后的查询语句为: SELECT Sname, Sage FROM Student
WHERE Sdept=’MA’ AND Sage<20;
【题5-06】在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
SELECT Sno, Sname, Cname FROM Student_CR WHERE Grade>85;
(三)更新视图
【题5-07】将数学系(MA)学生视图C_Student中学号为200215123的学生姓名改为“黄海”。 UPDATE C_Student SET Sname='黄海' WHERE Sno='200215123';
说明:DBMS自动转换为对基本表的更新语句如下: UPDATE Student SET Sname='黄海'
WHERE Sno='200215123' AND Sdept='数学';
【题5-08】向数学系学生视图C_Student中插入一个新的学生记录,其中学号为“200215124”,姓名为“王海”,年龄为20岁。
INSERT
INTO C_Student
VALUES ('200215124', '王海', 20, ’MA’);
【题5-09】删除数学系学生视图C_Student中学号为“200215124”的记录。 DELETE
FROM C_Student
WHERE Sno=’200215124’
方法二:利用企业管理器和视图创建向导实现视图的建立、删除、查询、更新
视图是根据子模式建立的虚拟表。一个视图可以由一个表构造,也可以由多个表构造。利用企业管理器和视图创建向导进行创建,查看和修改视图就如同对表的操作一样,非常容易。
1.创建视图
下面利用了SQL Server中提供的视图创建向导,来实现建立计算机科学系(CS)选修了1号课程的学生视图。
(1)打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库(此例为xskc)。 (2)选择菜单:[工具]|[向导]
(3)在如图5-1所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。选择“创建视图向导”项,单击“确定”按键。
18
图5-1 向导选择对话框
(4)进入创建视图向导后,首先出现的是欢迎使用创建视图向导对话框,其中简单介绍了该向导的功能。单击“下一步”后,就会出现选择数据库对话框。
(5)在选择数据库对话框中,选择视图所属的数据库。本例的数据库为“xskc”。单击“下一步”按键,则进入选择表对话框。
(6)在选择表对话框中,列出了指定数据库中所有用户定义的表。用户可以从中选择构造视图所需的一个表或者多个表,被选中的表成为构造视图的参考表。选择构造视图参考表的方法是:用鼠标单击表后的“包含在视图中”列,使复选框为选中状态。在本例的数据库中选中学生表(Student)和选课表(SC)。
单击“下一步”按键,则进入选择对话框。
(7)列选择对话框中以表格形式列出了创建视图参考表的全部属性,每个属性占表的一行,创建视图参考属性可以在表格中选出。选择视图参考属性的方法是用鼠标单击属性名后边的“选择列”列,使复选框为选中状态。本例中Student.Sno、Student.Sname、SC.Grade属性要被选中。
单击“下一步”按键,进入创建视图的定义限制对话框,如图5-2所示。
19
图5-2 定义限制对话框
(8)在定义限制对话框中,输入表的连接和元组选择条件。本例输入: WHERE Sdept=’CS’ and Student.Sno=SC.Sno and SC.Cno=’1’。
单击“下一步”按键,出现视图名对话框。
(9)在输入视图名对话框中输入所建视图的标识名。本例的视图名为“CSSC-View”。单击“下一步”按键,则出现视图创建完成对话框。
在完成对话框中给出了根据前面对话框输入的内容译成的SQL语句。您可以认真阅读该SQL语句,如果发现与要求有不符合之处可以直接进行修改。
确认无误后单击“完成”按钮。随后出现一个通知用户已成功创建视图的信息框,单击“确认”按钮后,整个创建视图工作就完成了。
2.查看和修改视图
视图创建好后,就可以利用它进行查询信息了。如果发现视图的结构不能很好地满足要求,还可以在企业管理器对它进行修改。
在企业管理器中修改视图结构需要首先选择服务器,数据库,并使数据库展开,然后用鼠标右击要修改的视图,在弹出的菜单上选择“设计视图”项,则弹出一个视图设计对话框,如图5-3所示。当对其修改完毕后关闭窗口,新的视图结构就会取代原先的结构。
20