视图
视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。这样,用户可以不用看到整个数据库表中的数据,而只关心对自己有用的数据。视图可以使用户的操作更方便,而且可以保障数据库系统的安全性。
视图还可以从已经存在的视图的基础上定义,数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中,使用视图查询数据时,数据库系统会从原来的表中取出相对应的数据,因此视图中的数据时依赖于原来的表中的数据的。一旦表中的数据发生改变时,显示在视图中的数据也会发生改变。
视图是在原来的表或者视图的基础上重新定义的虚拟表,这可以从原有的表上选取对用户有用的信息。
创建视图:是指在已经存在的数据库表上建立视图,视图可以建立在一张表上面也可以建立在多张表上。
创建视图的语法形式:
CREATE VIEW 是SQL的语句,在MySQL中使用:
CREATE [ ALGORITHM={UNDEFINED | MERGE |TEMPTABLE} ] VIEW 视图名 [(属性清单)] AS SELECT 语句 [ WITH |CASCADED |LOCAL] CHECK OPTION];
1.在单表上建立视图:
CREATE VIEW department_view1
AS SELECT * FROM department;
代码执行如下:
mysql> CREATE VIEW department_view1
-> AS SELECT * FROM department;
Query OK, 0 rows affected (0.03 sec)
2.再多表上建立视图:MySQL中也可以在两个或两个以上的表上创建视图,也是使用CREATE VIEW语句实现的。
CREATE ALGORITHM=MERGE VIEW worker_view1 ( name, department,sex, age,address ) AS SELECT name, department.d_name, sex, 2009-birthday, address FROM worker , department WHERE worker.d_id= department.d_id WITH LOCAL CHECK OPTION;
3.查看视图查看视图是指查看数据库中已存在的视图的定义。查看视图必须要有SHOW VIEW的权限。mysql数据库下的user表中保存着这个信息。
查看视图的语句有DESCRIBE语句,SHOW TABLE STATUS 语句,SHOW CREATE VIEW 语句和查询information——schema数据库下的views表等。
3.1DESCRIBE 语句查看视图基本信息:视图也是一张表。只是这张表比较特殊,是一张虚拟的表。因此,同样可以使用DESCRIBE语句可以用来查看视图的基本定义
DESCRIBE 视图名;
3.2 SHOW TABLE STATUS 语句查看视图的基本信息
使用SHOW TABLE STATUS 语句来查看视图的信息
SHOW TABLE STATUS LIKE ‘视图名’;
LIKE 后面匹配的是字符串,视图名参数指要查看的视图的名称,粗腰使用单引号‘’起作用
3.3SHOW CREATE VIEW 语句查看视图详细信息
SHOW CREATE VIEW 视图名
3.4在views表中查看视图详细信息
MySQL中所有视图的定义都存在information_schema数据库下的views表中,查询views表,可以查看到数据库中所有视图的详细信息。
查询的语句如下:
SELECT * FROM information_schema.views;
其中*表示查询所有的列的信息;
information_schema.views 表示information_schema数据库下面的views表。
4.修改视图:修改视图是指修改数据库中已存在的表的定义。
MySQL中通过CREATE OR REPLACE VIEW 语句和ALTER语句来修改视图。
4.1 CREATE OR REPLACE VIEW 语句来修改视图
CREATE OR REPLACE VIEW 语句可以用来修改视图。在视图已经存在的情况下,对视图进行修改,如果视图不存在时,则可以创建视图。
CREATE OR REPLACE [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE } ] VIEW 视图名[ ( 属性清单) ] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION];
4.2使用ALTER语句来进行修改视图
ALTER语句可以修改表的定义,可以创建索引。
ALTER [ ALGORITHM = { UNDEFINED | MERGE |
TEMPTABLE } ] VIEW 视图名[ ( 属性清单) ] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ];
5.更新视图
更新视图是指通过视图来插入(INSERT )、更新(UPDATE)和删除(DELETE)表中的数据。
5.1删除视图:删除视图是指删除数据库中已存在的视图。删除视图时=,只能删除视图的定义,不会删除数据。
对需要删除的视图,使用DROP VIEW 语句进行删除。基本形式如下:
DROP VIEW [ IF EXISTS] 视图名列表 [ RESTRICT | CASCADE ];