mysql创建视图表,mysql如何创建视图的sql语句

mysql创建视图表,mysql如何创建视图的sql语句,MySQL如何创建视图

本文主要介绍MySQL如何创建视图,有助于你更好的理解和学习MySQL。感兴趣的朋友可以了解一下。

基本语法

您可以使用CREATE VIEW语句来创建视图。

语法如下:

将视图名称创建为SELECT语句

语法如下。

视图名称:指定视图的名称。该名称在数据库中必须是唯一的,并且不能与其他表或视图同名。

SELECT语句:指定用于创建视图的SELECT语句,该视图可用于查询多个基础表或源视图。

在创建视图中,对SELECT语句的规范有以下限制:

除了CREATE VIEW权限之外,用户还拥有操作中涉及的基础表和其他视图的相关权限。

SELECT语句不能引用系统或用户变量。

SELECT语句不能在FROM子句中包含子查询。

SELECT语句不能引用预处理语句参数。

定义中引用的表或视图必须存在。但是,创建视图后,可以删除定义引用的表或视图。您可以使用CHECK TABLE语句来检查视图定义中是否存在此类问题。

视图定义中允许使用ORDER BY语句,但是如果从特定视图中选择,并且该视图使用自己的ORDER BY语句,则视图定义中的ORDER BY将被忽略。

不能在定义中引用临时表(临时表),也不能创建临时视图。

With选项意味着在修改视图时,检查插入的数据是否满足WHERE设置的条件。

创建基于单表的视图

MySQL可以在单个数据表上创建视图。

检查test_db数据库中tb_students_info表的数据,如下所示。

MySQL SELECT * FROM TB _ students _ info;

- - - - - - -

| id |姓名|部门id |年龄|性别|身高|登录日期|

- - - - - - -

| 1 |丹妮| 1 | 25 | F | 160 | 2015-09-10 |

| 2 |绿色| 3 | 23 | F | 158 | 2016-10-22 |

| 3 |亨利| 2 | 23 |米| 185 | 2015-05-31 |

| 4 |简| 1 | 22 |女| 162 | 2016-12-20 |

| 5 |吉姆| 1 | 24 |米| 175 | 2016-01-15 |

| 6 |约翰| 2 | 21 | M | 172 | 2015-11-11 |

| 7 |百合| 6 | 22 | F | 165 | 2016-02-26 | 2016

| 8 |苏珊| 4 | 23 | F | 170 | 2015-10-01 |

| 9 |托马斯| 3 | 22 |米| 178 | 2016-06-07 |

| 10 |汤姆| 4 | 23 |米| 165 | 2016-08-05 |

- - - - - - -

一组10行(0.00秒)

[示例1]

在tb_students_info表上创建一个名为view_students_info的视图。输入SQL语句和执行结果如下所示。

mysql创建视图视图_学生_信息

-AS SELECT * FROM TB _ students _ info;

查询正常,0行受影响(0.00秒)

MySQL SELECT * FROM view _ students _ info;

- - - - - - -

| id |姓名|部门id |年龄|性别|身高|登录日期|

- - - - - - -

| 1 |丹妮| 1 | 25 | F | 160 | 2015-09-10 |

| 2 |绿色| 3 | 23 | F | 158 | 2016-10-22 |

| 3 |亨利| 2 | 23 |米| 185 | 2015-05-31 |

| 4 |简| 1 | 22 |女| 162 | 2016-12-20 |

| 5 |吉姆| 1 | 24 |米| 175 | 2016-01-15 |

| 6 |约翰| 2 | 21 | M | 172 | 2015-11-11 |

| 7 |百合| 6 | 22 | F | 165 | 2016-02-26 | 2016

| 8 |苏珊| 4 | 23 | F | 170 | 2015-10-01 |

| 9 |托马斯| 3 | 22 |米| 178 | 2016-06-07 |

| 10 |汤姆| 4 | 23 |米| 165 | 2016-08-05 |

- - - - - - -

一组10行(0.04秒)

默认情况下,创建的视图和基本表的字段是相同的。您也可以通过指定视图字段的名称来创建视图。

[示例2]

在tb_students_info表上创建一个名为v_students_info的视图。输入SQL语句和执行结果如下所示。

mysql创建视图v _学生_信息

-(身份证,姓名,身份证,年龄,性别,身高,日期)

-选择id、姓名、部门id、年龄、性别、身高、登录日期

-来自tb _ students _ info

查询正常,0行受影响(0.06秒)

MySQL SELECT * FROM v _ students _ info;

- - - - - - -

|身份证|姓名|身份证|年龄|性别|身高|日期|

- - - - - - -

| 1 |丹妮| 1 | 24 | F | 160 | 2015-09-10 |

| 2 |绿色| 3 | 23 | F | 158 | 2016-10-22 |

| 3 |亨利| 2 | 23 |米| 185 | 2015-05-31 |

| 4 |简| 1 | 22 |女| 162 | 2016-12-20 |

| 5 |吉姆| 1 | 24 |米| 175 | 2016-01-15 |

| 6 |约翰| 2 | 21 | M | 172 | 2015-11-11 |

| 7 |百合| 6 | 22 | F | 165 | 2016-02-26 | 2016

| 8 |苏珊| 4 | 23 | F | 170 | 2015-10-01 |

| 9 |托马斯| 3 | 22 |米| 178 | 2016-06-07 |

| 10 |汤姆| 4 | 23 |米| 165 | 2016-08-05 |

- - - - - - -

一组10行(0.01秒)

可以看到view_students_info和v_students_info中的字段名称不同,但是数据是相同的。因此,在使用视图时,用户可能不需要知道基本表的结构,也无法接触到实际表中的数据,从而保证了数据库的安全性。

创建基于多表的视图

您还可以使用create view语句在MySQL中的两个以上的表中创建视图。

[示例3]

在表tb_student_info和表tb_departments上创建视图v_students_info。输入SQL语句和执行结果如下所示。

mysql创建视图v _学生_信息

-(身份证,姓名,身份证,年龄,性别,身高,日期)

-选择id、姓名、部门id、年龄、性别、身高、登录日期

-来自tb _ students _ info

查询正常,0行受影响(0.06秒)

MySQL SELECT * FROM v _ students _ info;

- - - - - - -

|身份证|姓名|身份证|年龄|性别|身高|日期|

- - - - - - -

| 1 |丹妮| 1 | 24 | F | 160 | 2015-09-10 |

| 2 |绿色| 3 | 23 | F | 158 | 2016-10-22 |

| 3 |亨利| 2 | 23 |米| 185 | 2015-05-31 |

| 4 |简| 1 | 22 |女| 162 | 2016-12-20 |

| 5 |吉姆| 1 | 24 |米| 175 | 2016-01-15 |

| 6 |约翰| 2 | 21 | M | 172 | 2015-11-11 |

| 7 |百合| 6 | 22 | F | 165 | 2016-02-26 | 2016

| 8 |苏珊| 4 | 23 | F | 170 | 2015-10-01 |

| 9 |托马斯| 3 | 22 |米| 178 | 2016-06-07 |

| 10 |汤姆| 4 | 23 |米| 165 | 2016-08-05 |

- - - - - - -

一组10行(0.01秒)

这个视图可以很好的保护基本表中的数据。该视图包含s_id、s_name和dept_name。s_id字段对应tb_students_info表中的id字段,s_name字段对应tb_students_info表中的name字段,dept_name字段对应tb_departments表中的dept_name字段。

查询视图

一旦定义了视图,就可以像查询数据表一样,使用SELECT语句查询视图中的数据。语法与基本表的语法相同。

视图主要用于以下几个方面的查询:

使用视图重新格式化检索到的数据。

使用视图简化复杂的表连接。

使用视图过滤数据。

DESCRIBE可以用来查看视图,语法如下:

描述视图名称;

[例4]

通过DESCRIBE语句查看视图v_students_info的定义。输入SQL语句和执行结果如下。

mysql描述v _ students _ info

- - - - - -

| Field | Type | Null | Key | Default | Extra |

- - - - - -

| s_id | int(11) | NO | | 0 | |

| s_name | varchar(45) |是| | NULL | |

| d_id | int(11) | YES | | NULL | |

| s_age | int(11) | YES | | NULL | |

| s_sex | enum(M , F) | YES | | NULL | |

| s_height | int(11) | YES | | NULL | |

| s_date | date |是| | 2016-10-22 | |

- - - - - -

一组7行(0.04秒)

注意:DESCRIBE一般可以缩写为DESC,输入该命令的执行结果与输入DESCRIBE相同。

这就是MySQL如何创建视图的细节。关于MySQL如何创建视图的更多信息,请关注我们的其他相关文章!

mysql创建视图表,mysql如何创建视图的sql语句