• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL如何创建视图

    基本语法

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

    语法格式如下:

    CREATE VIEW 视图名> AS SELECT语句>

    语法说明如下。

    对于创建视图中的 SELECT 语句的指定存在以下限制:

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

    视图定义中允许使用 ORDER BY 语句,但是若从特定视图进行选择,而该视图使用了自己的 ORDER BY 语句,则视图定义中的 ORDER BY 将被忽略。

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

    WITH CHECK OPTION 的意思是,修改视图时,检查插入的数据是否符合 WHERE 设置的条件。

    创建基于单表的视图

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

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

    mysql> SELECT * FROM tb_students_info;
    +----+--------+---------+------+------+--------+------------+
    | id | name  | dept_id | age | sex | height | login_date |
    +----+--------+---------+------+------+--------+------------+
    | 1 | Dany  |    1 |  25 | F  |  160 | 2015-09-10 |
    | 2 | Green |    3 |  23 | F  |  158 | 2016-10-22 |
    | 3 | Henry |    2 |  23 | M  |  185 | 2015-05-31 |
    | 4 | Jane  |    1 |  22 | F  |  162 | 2016-12-20 |
    | 5 | Jim  |    1 |  24 | M  |  175 | 2016-01-15 |
    | 6 | John  |    2 |  21 | M  |  172 | 2015-11-11 |
    | 7 | Lily  |    6 |  22 | F  |  165 | 2016-02-26 |
    | 8 | Susan |    4 |  23 | F  |  170 | 2015-10-01 |
    | 9 | Thomas |    3 |  22 | M  |  178 | 2016-06-07 |
    | 10 | Tom  |    4 |  23 | M  |  165 | 2016-08-05 |
    +----+--------+---------+------+------+--------+------------+
    10 rows in set (0.00 sec)

    【实例 1】

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

    mysql> CREATE VIEW view_students_info
      -> AS SELECT * FROM tb_students_info;
    Query OK, 0 rows affected (0.00 sec)
    mysql> SELECT * FROM view_students_info;
    +----+--------+---------+------+------+--------+------------+
    | id | name  | dept_id | age | sex | height | login_date |
    +----+--------+---------+------+------+--------+------------+
    | 1 | Dany  |    1 |  25 | F  |  160 | 2015-09-10 |
    | 2 | Green |    3 |  23 | F  |  158 | 2016-10-22 |
    | 3 | Henry |    2 |  23 | M  |  185 | 2015-05-31 |
    | 4 | Jane  |    1 |  22 | F  |  162 | 2016-12-20 |
    | 5 | Jim  |    1 |  24 | M  |  175 | 2016-01-15 |
    | 6 | John  |    2 |  21 | M  |  172 | 2015-11-11 |
    | 7 | Lily  |    6 |  22 | F  |  165 | 2016-02-26 |
    | 8 | Susan |    4 |  23 | F  |  170 | 2015-10-01 |
    | 9 | Thomas |    3 |  22 | M  |  178 | 2016-06-07 |
    | 10 | Tom  |    4 |  23 | M  |  165 | 2016-08-05 |
    +----+--------+---------+------+------+--------+------------+
    10 rows in set (0.04 sec)

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

    【实例 2】

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

    mysql> CREATE VIEW v_students_info
      -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
      -> AS SELECT id,name,dept_id,age,sex,height,login_date
      -> FROM tb_students_info;
    Query OK, 0 rows affected (0.06 sec)
    mysql> SELECT * FROM v_students_info;
    +------+--------+------+-------+-------+----------+------------+
    | s_id | s_name | d_id | s_age | s_sex | s_height | s_date   |
    +------+--------+------+-------+-------+----------+------------+
    |  1 | Dany  |  1 |  24 | F   |   160 | 2015-09-10 |
    |  2 | Green |  3 |  23 | F   |   158 | 2016-10-22 |
    |  3 | Henry |  2 |  23 | M   |   185 | 2015-05-31 |
    |  4 | Jane  |  1 |  22 | F   |   162 | 2016-12-20 |
    |  5 | Jim  |  1 |  24 | M   |   175 | 2016-01-15 |
    |  6 | John  |  2 |  21 | M   |   172 | 2015-11-11 |
    |  7 | Lily  |  6 |  22 | F   |   165 | 2016-02-26 |
    |  8 | Susan |  4 |  23 | F   |   170 | 2015-10-01 |
    |  9 | Thomas |  3 |  22 | M   |   178 | 2016-06-07 |
    |  10 | Tom  |  4 |  23 | M   |   165 | 2016-08-05 |
    +------+--------+------+-------+-------+----------+------------+
    10 rows in set (0.01 sec)

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

    创建基于多表的视图

    MySQL 中也可以在两个以上的表中创建视图,使用 CREATE VIEW 语句创建。

    【实例 3】

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

    mysql> CREATE VIEW v_students_info
      -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
      -> AS SELECT id,name,dept_id,age,sex,height,login_date
      -> FROM tb_students_info;
    Query OK, 0 rows affected (0.06 sec)
    mysql> SELECT * FROM v_students_info;
    +------+--------+------+-------+-------+----------+------------+
    | s_id | s_name | d_id | s_age | s_sex | s_height | s_date   |
    +------+--------+------+-------+-------+----------+------------+
    |  1 | Dany  |  1 |  24 | F   |   160 | 2015-09-10 |
    |  2 | Green |  3 |  23 | F   |   158 | 2016-10-22 |
    |  3 | Henry |  2 |  23 | M   |   185 | 2015-05-31 |
    |  4 | Jane  |  1 |  22 | F   |   162 | 2016-12-20 |
    |  5 | Jim  |  1 |  24 | M   |   175 | 2016-01-15 |
    |  6 | John  |  2 |  21 | M   |   172 | 2015-11-11 |
    |  7 | Lily  |  6 |  22 | F   |   165 | 2016-02-26 |
    |  8 | Susan |  4 |  23 | F   |   170 | 2015-10-01 |
    |  9 | Thomas |  3 |  22 | M   |   178 | 2016-06-07 |
    |  10 | Tom  |  4 |  23 | M   |   165 | 2016-08-05 |
    +------+--------+------+-------+-------+----------+------------+
    10 rows in set (0.01 sec)

    通过这个视图可以很好地保护基本表中的数据。视图中包含 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 可以用来查看视图,语法如下:

    DESCRIBE 视图名;

    【实例 4】

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

    mysql> DESCRIBE v_students_info;
    +----------+---------------+------+-----+------------+-------+
    | Field  | Type     | Null | Key | Default  | Extra |
    +----------+---------------+------+-----+------------+-------+
    | s_id   | int(11)    | NO  |   | 0     |    |
    | s_name  | varchar(45)  | YES |   | 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     | YES |   | 2016-10-22 |    |
    +----------+---------------+------+-----+------------+-------+
    7 rows in set (0.04 sec)

    注意:DESCRIBE 一般情况下可以简写成 DESC,输入这个命令的执行结果和输入 DESCRIBE 是一样的。

    以上就是MySQL如何创建视图的详细内容,更多关于MySQL创建视图的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • mysql视图之创建视图(CREATE VIEW)和使用限制实例详解
    • 详细分析mysql视图的原理及使用方法
    • MySQL的视图和索引用法与区别详解
    • 浅谈MySql 视图、触发器以及存储过程
    • MySql视图触发器存储过程详解
    • mysql视图原理与用法实例详解
    • mysql视图之管理视图实例详解【增删改查操作】
    • mysql视图之创建可更新视图的方法详解
    • MySQL中Update、select联用操作单表、多表,及视图与临时表的区别
    • mysql三张表连接建立视图
    • MySQL 视图(View)原理解析
    上一篇:MySQL数据库连接异常汇总(值得收藏)
    下一篇:MySQL单表恢复的步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL如何创建视图 MySQL,如何,创建,视图,MySQL,