学习内容:视图的创建与应用
1月31日
一、认识视图
1.视图的含义
视图是一种简单的数据查询机制。视图不涉及数据存储,因为视图在数据库中并不真实存在,而是在引用视图时动态生成的,通过视图看到的数据只是存放在基本表中的数据。
2.视图的作用
(1)降低SQL语句的复杂度。
(2)提高数据库安全性。
(3)提高表的逻辑独立性。
(4)实现数据聚合。
二、创建视图
视图的创建基于SELECT语句和已存在的数据表。
1.语法格式
CREATE [ALGORITHM={UNDEFINED| MERGE|TEMPTABLE}]
VIEW view_name
AS SELECT column_name(s) FROM table_name
[WITH [CASCADED|LOCAL] CHECK OPTION];
- ALGORITHM:可选参数,表示视图选择的算法。
- UNDEFINED:表示MySQL将自动选择要使用的算法。
- MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
- TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句。
- view_name:视图的名称,可包含其属性列表。
- column_name(s):查询的字段,也就是视图的列名。
- WITH CHECK OPTION:可选参数,表示更新视图时要保证在视图的权限范围内。
- CASCADED:更新视图时要满足所有相关视图和表的条件才进行。
- LOCAL:更新视图时,满足该视图本身定义的条件即可。
2.在单表上创建
CREATE VIEW view_stu
AS SELECT studentid AS 学号,name AS 姓名,major AS 所在专业
FROM studentinfo;
使用视图查询数据信息
USE mydb; SELECT * FROM view_stu;
3.在多表上创建
CREATE VIEW view_info
AS SELECT studentinfo.name AS 姓名,studentinfo.major AS 所在专业,subjectinfo.subject AS 课程名称,studentinfo.score AS 成绩
FROM studentinfo,subjectinfo
WHERE studentinfo.subjectid=subjectinfo.id;
三、修改视图
1.使用CREATE OR REPLACE VIEW语句
语法格式:
CREATE OR REPLACE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
2.使用ALTER语句
语法格式:
ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];
CREATE OR REPLACE VIEW 语句既可修改已存在的操作,也可创建新的视图。ALTER 语句只能修改已存在的视图。
四、查看视图信息
1.DESCRIBE语句
DESCRIBE 视图名;
2.SHOW TABLE STATUS语句
SHOW TABLE STATUS LIKE '视图名';
执行结果显示,表的说明Comment 的值为VIEW说明该表是视图,其他的信息为NULL说明这是一个虚表。
3.SHOW CREATE VIEW语句
SHOW CREATE VIEW 视图名;
4.在views表中查看
所有视图的定义都存在information_schema 数据库下的views表中。
SELECT * FROM information_schema.views;
五、使用视图更新数据
通过视图更新都是转到基本表进行更新的。
1.INSERT插入数据
INSERT INTO 视图名
VALUES();
2.UPDATE修改数据
UPDATE 视图名
SET column_name1=value1,column_name2=value2,···,column_nameN=valueN
WHERE search_condition;
3.DELETE删除数据
DELETE FROM 视图名
WHERE condition;
建立在多个表之上的视图,无法使用DELETE语句进行删除。
六、删除视图
DROP VIEW [IF EXISTS] 视图名;
--可同时删除多个视图,只需要用逗号隔开视图名称。