mysql无法创建视图的解决办法:使用CREATE VIEW语句来创建视图,代码为【CREATE VIEW AS】,其中【】为指定视图的名称。

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

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

基本语法

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

语法格式如下:CREATE VIEW AS

语法说明如下。:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。

:指定创建视图的 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 是一样的。

mysql创建视图失败_mysql无法创建视图怎么办相关推荐

  1. mysql创建服务失败_mysql服务启动失败

    事情是这样的,我在linux系统下做mysql备份与还原实验.我先是进入mysql,创建一个数据库ds,然后在数据库建了一张innodb表stu,再往表里插入几条数据.因为是做实验只是在验证备份与还原 ...

  2. 如何用mysql创建股票数据库_mysql如何创建数据库

    数据库可以看作是一个专门存储数据对象的容器,这里的数据对象包括表.视图.触发器.存储过程等,其中表是最基本的数据对象.在 MySQL 数据库中创建数据对象之前,先要创建好数据库. 推荐课程:MySQL ...

  3. 如何用mysql创建股票数据库_mysql数据库创建表

    Mysql错误代码大全 1016错误:文件无法打开,使用后台修复或者使用phpmyadmin进行修复. 1044错误:数据库用户权限不足,请联系空间商解决 1045错误:数据库服务器/数据库用户名/数 ...

  4. mysql中视图备份_MySQL 事务、视图、索引、备份和恢复

    事务 为什么需要事务: 转账.总量不变,但其他值进行变化. 事务是什么: 作为单个逻辑工作单元执行的一系列操作. 多个操作作为一个整体向系统提交,要么执行/不执行. 事务是一个不可分割的工作逻辑单元. ...

  5. mysql数据库视图索引_MySQL数据库的视图、索引

    视图:根据某个实表查询出来的结果,而生成的一个虚表. 注意: 1.视图既然作为一张虚表存在,那么对实表的增删改查操作,视图同样成立. 2.视图既然根据实表得到,那对视图的增删改查操作,也会影响实表. ...

  6. mysql 如何添加索引_MySQL如何创建一个好索引?创建索引的5条建议【宇哥带你玩转MySQL 索引篇(三)】...

    MySQL如何创建一个好索引?创建索引的5条建议 过滤效率高的放前面 对于一个多列索引,它的存储顺序是先按第一列进行比较,然后是第二列,第三列...这样.查询时,如果第一列能够排除的越多,那么后面列需 ...

  7. mysql创建临时表 分页_Mysql 如何创建一张临时表

    mysql 利用 temporary 关键字就可以创建出一个临时表.创建的这张表会在与服务器的会话终止时自动消失 语法:create temporary table tbl_name...; 规则:每 ...

  8. 虚拟机mysql创建一个表_MySQL:创建、修改和删除表

    其实对很多人来说对于SQL语句已经忘了很多,或者说是不懂很多,因为有数据库图形操作软件,方便了大家,但是我们不能忘记最根本的东西,特别是一些细节上的东西,可能你用惯了Hibernate,不用写SQL语 ...

  9. win11创建pin失败怎么办 Windows11创建pin失败的解决方法

    正常情况下我们在使用电脑的时候都回去设置一个密码来保证电脑的安全,不过有不少小伙伴在创建Pin的时候却提示失败,那么遇到这种情况要怎么办呢?下面就和小编一起来看看怎么解决吧.更多win11安装教程,可 ...

  10. mysql创建函数失败_mysql创建函数出现问题?

    大家好,帮我看看下面的mysql的函数有什么问题?一直创建不了. DELIMITER $$ DROP FUNCTION IF EXISTS check_if_exists$$ CREATE FUNCT ...

最新文章

  1. 图像零交叉点,视频生成,视频识别,视频摘要,视频浓缩
  2. AntDB上使用uuid
  3. html/jquery 常用的输入与获取参数
  4. 恭贺微软技术俱乐部苏州站正式成立
  5. MongoDB新建或删除索引
  6. netty接收大文件的方法
  7. linq中给字段添加别名
  8. 作者:赵文明(1977-),男,中国科学院北京基因组研究所生命与健康大数据中心高级工程师...
  9. 第七周项目4-计算一个程序猿的周工资
  10. “非死不可”Facebook
  11. Asp.net页面之间传递参数的几种方法荟萃
  12. 欧拉定理以及欧拉降幂
  13. 关于JAVA小程序完整打包过程
  14. AMD处理器的发展历程
  15. 移动端H5页面,通过点击软键盘搜索按钮实现搜索功能
  16. comb函数在C语言中,always_comb和always @(*)
  17. python爬虫爬取图片代码_Python爬虫爬取煎蛋网图片代码实例
  18. Vue-Lazyload学习文档
  19. 没有一个冬天不可逾越
  20. exclusive 和 lock

热门文章

  1. matlab生成数据以二进制数据格式写入txt文件中
  2. gg修改器偏移量修改_gg修改器偏移量什么意思 | 手游网游页游攻略大全
  3. 用Python批量下载MOOC资源
  4. AD10 PCB等长布线----蛇形布线
  5. 【转载】斐讯K2P B1刷入金梅林固件,加koolproxy、S-S R等【V1.0尝鲜版】
  6. 如何才能找到好用的ip软件呢,或者下载ip软件
  7. NodeJs快速入门
  8. 傲腾™,企业应用加速利器!
  9. SQL笔试经典50题及答案解析(题目41-50)
  10. spring mybatis 各版本源码下载地址