54 SQL中的视图和触发器
2018-11-28 本文已影响7人
夏威夷的芒果
为什么要有视图
视图和基本表的关系
练习
SQL视图
视图的建立和删除
视图插入数据
视图数据的删改
如果视图中存在由表达式生成的属性,因此只能进行有限的数据更新操作,只允许删除操作,不允许插入和修改操作。
视图在数据库中是一个虚表,并不存在,系统只是存储视图的定义。
在对视图中的数据进行修改时,实际上就是修改数据库中基本表中的数据,会对原有数据库的数据造成影响。
练习
两个示例
CREATE VIEW T1(ID, T_Name,Gender,Age,Dept) AS
SELECT TeacherID,Name,Gender,Age,Dept
FROM Teacher
WHERE Dept = 'CS'
WITH CHECK OPTION;
CREATE VIEW T2 (ID,T_Name,Gender,Age,YearofBirth,Dept) AS
SELECT TeacherID,Name,Gender,Age, 2017-Age,Dept
FROM Teacher WHERE Dept = 'CS'
WITH CHECK OPTION;
如要删除视图,需用DROP VIEW 视图名
,不加VIEW不好使。
DROP VIEW T2
SQL中的触发器
练习
例如:
在 Student 表上定义一个触发器 Year_Change,该触发器的触发条件是表 Time 上有更新数据的操作之后。例如将 thisYear 从 2017 变为 2018,触发后会将学生信息表 Student (ID, Name, Age, Gender, YearofEnroll,Dept) 中的年龄属性 Age,根据年份的变化进行更新,年份的增量就是年龄的增量。
CREATE TRIGGER YEAR_Change AFTER UPDATE ON Time
FOR EACH ROW
UPDATE Student SET Age = Age + NEW.thisYear - OLD.thisYear;