最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql无法创建视图怎么办

来源:懂视网 责编:小采 时间:2020-11-09 05:50:00
文档

mysql无法创建视图怎么办

mysql无法创建视图怎么办:mysql无法创建视图的解决办法:使用CREATE VIEW语句来创建视图,代码为【CREATE VIEW <视图名> AS】,其中【<视图名>】为指定视图的名称。更多相关免费学习推荐:mysql教程(视频)mysql无法创建视图的解决办法:基本语法可以使用 CREATE
推荐度:
导读mysql无法创建视图怎么办:mysql无法创建视图的解决办法:使用CREATE VIEW语句来创建视图,代码为【CREATE VIEW <视图名> AS】,其中【<视图名>】为指定视图的名称。更多相关免费学习推荐:mysql教程(视频)mysql无法创建视图的解决办法:基本语法可以使用 CREATE

更多相关免费学习推荐:mysql教程(视频)

mysql无法创建视图的解决办法:

基本语法

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

语法格式如下:

CREATE VIEW <视图名> AS <SELECT语句>

语法说明如下。

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

  • <SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。对于创建视图中的 SELECT 语句的指定存在以下限制:

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

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

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

  • 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 是一样的。

    声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    mysql无法创建视图怎么办

    mysql无法创建视图怎么办:mysql无法创建视图的解决办法:使用CREATE VIEW语句来创建视图,代码为【CREATE VIEW <视图名> AS】,其中【<视图名>】为指定视图的名称。更多相关免费学习推荐:mysql教程(视频)mysql无法创建视图的解决办法:基本语法可以使用 CREATE
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top