MySQL CREATE VIEW:创建视图(非常详细,附带实例)
视图是一张虚拟表,是从数据库中一张或多张表中导出来的表。视图还可以在已经存在的视图的基础上进行定义。在视图中用户可以使用 SELECT 语句查询数据,以及使用 INSERT、UPDATE 和 DELETE 修改记录。
视图中包含了 SELECT 查询的结果,因此视图的创建基于 SELECT 语句和已存在的数据表。视图可以建立在一张表上,也可以建立在多张表上。本节主要介绍创建视图的方法。
创建视图语句要求具有针对视图的 CREATE VIEW 权限,以及针对由 SELECT 语句选择的每一列上的某些权限。对于在 SELECT 语句中其他地方使用的列,必须具有 SELECT 权限。如果还有 OR REPLACE 子句,则必须在视图上具有 DROP 权限。
视图属于数据库。在默认情况下,将在当前数据库创建新视图。要想在给定数据库中明确创建视图,创建时应将名称指定为 db_name.view_name。
【实例 1】在 t 表上创建一个名为 view_t 的视图,代码如下:
1) 首先创建基本表并插入数据,语句如下:
【实例 2】在 tv 表上创建一个名为 view_t2 的视图,代码如下:
【实例 3】在表 student 和表 stu_info 上创建视图 stu_glass,代码如下:
1) 首先向两个表中插入数据,输入语句如下:
2) 创建视图 stu_glass,代码的执行如下:
视图中包含了 SELECT 查询的结果,因此视图的创建基于 SELECT 语句和已存在的数据表。视图可以建立在一张表上,也可以建立在多张表上。本节主要介绍创建视图的方法。
MySQL创建视图的语法
创建视图使用 CREATE VIEW 语句,基本语法格式如下:CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS SELECT_statement [WITH [CASCADED | LOCAL] CHECK OPTION]各参数说明见下表:
参数 | 说明 |
---|---|
CREATE | 表示创建新的视图。 |
REPLACE | 表示替换已经创建的视图。 |
ALGORITHM |
表示视图选择的算法,取值有以下 3 种:
|
view_name | 为视图的名称,column_list 为属性列。 |
SELECT_statement | 表示 SELECT 语句。 |
WITH [CASCADED | LOCAL] CHECK OPTION | 表示视图在更新时保证在视图的权限范围之内。CASCADE 与 LOCAL 为可选参数,CASCADE 为默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL 表示更新视图时满足该视图本身定义的条件即可。 |
创建视图语句要求具有针对视图的 CREATE VIEW 权限,以及针对由 SELECT 语句选择的每一列上的某些权限。对于在 SELECT 语句中其他地方使用的列,必须具有 SELECT 权限。如果还有 OR REPLACE 子句,则必须在视图上具有 DROP 权限。
视图属于数据库。在默认情况下,将在当前数据库创建新视图。要想在给定数据库中明确创建视图,创建时应将名称指定为 db_name.view_name。
MySQL在单表上创建视图
MySQL 可以在单个数据表上创建视图。【实例 1】在 t 表上创建一个名为 view_t 的视图,代码如下:
1) 首先创建基本表并插入数据,语句如下:
CREATE TABLE tv (quantity INT, price INT); INSERT INTO tv VALUES(3, 50);创建视图语句为:
CREATE VIEW view_t AS SELECT quantity, price, quantity *price FROM tv;查询视图,执行如下:
mysql> SELECT * FROM view_t; +----------+-------+-----------------+ | quantity | price | quantity *price | +----------+-------+-----------------+ | 3 | 50 | 150 | +----------+-------+-----------------+默认情况下创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图。
【实例 2】在 tv 表上创建一个名为 view_t2 的视图,代码如下:
mysql> CREATE VIEW view_t2(qty, price, total ) AS SELECT quantity, price, quantity *price FROM tv;语句执行成功后,查看 view_t2 视图中的数据:
mysql> SELECT * FROM view_t2; +------+-------+-------+ | qty | price | total | +------+-------+-------+ | 3 | 50 | 150 | +------+-------+-------+可以看到,view_t2 和 view_t 两个视图中的字段名称不同,但数据却是相同的。因此,在使用视图的时候,可能用户根本就不需要了解基本表的结构,更接触不到实际表中的数据,从而保证了数据库的安全。
MySQL在多表上创建视图
MySQL 中也可以在两个或者两个以上的表上创建视图,可以使用 CREATE VIEW 语句实现。【实例 3】在表 student 和表 stu_info 上创建视图 stu_glass,代码如下:
1) 首先向两个表中插入数据,输入语句如下:
mysql> INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai'); mysql> INSERT INTO stu_info VALUES(1, 'wuban','henan'),(2,'liuban','hebei'), (3,'qiban','shandong');
2) 创建视图 stu_glass,代码的执行如下:
mysql> CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id, student.name ,stu_info.glass FROM student ,stu_info WHERE student.s_id=stu_info.s_id; mysql> SELECT * FROM stu_glass; +------+----------+--------+ | id | name | glass | +------+----------+--------+ | 1 | wanglin1 | wuban | | 2 | gaoli | liuban | | 3 | zhanghai | qiban | +------+----------+--------+本例中,通过视图可以很好地保护基本表中的数据。视图中的信息很简单,只包含了 id、姓名和班级,id 字段对应 student 表中的 s_id 字段,name 字段对应 student 表中的 name 字段,glass 字段对应 stu_info 表中的 glass 字段。
相关文章
- MySQL CREATE VIEW创建视图(附带实例)
- MySQL创建视图(CREATE VIEW)
- MySQL CREATE INDEX语句创建索引(非常详细,附带实例)
- MySQL CREATE PROCEDURE创建存储过程的用法(非常详细)
- MySQL CREATE FUNCTION创建存储函数的用法(附带实例)
- MySQL CREATE PROCEDURE语句的用法(附带实例)
- MySQL CREATE FUNCTION语句的用法(附带实例)
- MySQL SHOW CREATE TABLE:查看表详细结构(附带实例)
- MySQL创建数据库(CREATE DATABASE语句)
- MySQL创建数据表(CREATE TABLE语句)