iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql无法创建视图的解决方法
  • 267
分享到

mysql无法创建视图的解决方法

2024-04-02 19:04:59 267人浏览 独家记忆
摘要

Mysql无法创建视图的解决方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql无法创建视图的解决办法:使用CRE

Mysql无法创建视图的解决方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

mysql无法创建视图的解决办法:使用CREATE VIEW语句来创建视图,代码为【CREATE VIEW <视图名> AS

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

感谢各位的阅读!看完上述内容,你们对mysql无法创建视图的解决方法大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: mysql无法创建视图的解决方法

本文链接: https://www.lsjlt.com/news/52538.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql无法创建视图的解决方法
    mysql无法创建视图的解决方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql无法创建视图的解决办法:使用CRE...
    99+
    2024-04-02
  • mysql视图之创建可更新视图的方法详解
    本文实例讲述了mysql视图之创建可更新视图的方法。分享给大家供大家参考,具体如下: 我们知道,在mysql中,视图不仅是可查询的,而且是可更新的。这意味着我们可以使用insert或update语...
    99+
    2024-04-02
  • MySQL创建视图的方法是什么
    要创建视图,可以使用以下语法: CREATE VIEW view_name AS SELECT column1, colum...
    99+
    2024-04-09
    MySQL
  • navicat创建视图的方法
    小编给大家分享一下navicat创建视图的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!打开navicat for mysq...
    99+
    2024-04-02
  • MySQL在多表上创建视图方法
    MySQL中,在两个或者以上的基本表上创建视图 在student表和stu_info表上,创建stu_class视图,查询出s_id号、姓名和班级 首先,创建stu_info表,并向表中插入数据 查看...
    99+
    2024-04-02
  • Django中创建视图的方法
    这篇文章主要介绍Django中创建视图的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!本文教程操作环境:windows7系统、django2.1,DELL G3电脑。1、概念django的view可以是方法,也可...
    99+
    2023-06-14
  • sql视图创建无效怎么解决
    SQL视图创建无效可能是由于以下几种原因导致的: 视图中的语法错误:检查SQL语句是否正确,包括表名、字段名、函数等是否拼写正确...
    99+
    2024-04-09
    sql
  • navicat创建视图的操作方法
    小编给大家分享一下navicat创建视图的操作方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!打开navicat for mysql软件之后打开相应的数据库。然后点击视图。点击新建视图。这里...
    99+
    2024-04-02
  • win7无法创建还原点的解决方法
    这篇文章主要为大家展示了“win7无法创建还原点的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win7无法创建还原点的解决方法”这篇文章吧。一、右键点击计算机,然后选择属性。二、在弹出...
    99+
    2023-06-28
  • MySQL数据库创建视图的方法是什么
    在MySQL数据库中,可以使用以下语法来创建视图: CREATE VIEW view_name AS SELECT colu...
    99+
    2024-03-12
    MySQL
  • mysql视图创建和使用的方法是什么
    MySQL中创建和使用视图的方法如下: 创建视图: 使用CREATE VIEW语句来创建一个视图,语法如下: CREATE VI...
    99+
    2024-04-09
    mysql
  • oracle创建视图的方法是什么
    在Oracle数据库中,创建视图的方法如下: 使用CREATE VIEW语句创建视图,语法如下: CREATE VIEW vie...
    99+
    2024-04-09
    oracle
  • sql数据库中视图的创建方法
    这篇文章主要介绍sql数据库中视图的创建方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql数据库创建视图的方法:1、登录“sql server managment”;2、在指定...
    99+
    2024-04-02
  • mysql无法创建数据库如何解决
    如果MySQL无法创建数据库,可能有以下几个原因和解决方法:1. 没有足够的权限:检查当前用户是否具有创建数据库的权限。如果没有权限...
    99+
    2023-09-27
    mysql 数据库
  • 在MySQL数据库中创建视图的方法是什么
    这篇文章将为大家详细讲解有关在MySQL数据库中创建视图的方法是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。语法:CREATE VIEW <...
    99+
    2024-04-02
  • 阿里云MySQL无法创建数据库服务器解决方法
    阿里云MySQL是阿里云提供的一种数据库服务,用户可以通过阿里云的控制台来创建和管理数据库服务器。但是,有时候用户在创建数据库服务器时可能会遇到一些问题,比如无法创建数据库服务器。这篇文章将详细说明如何解决阿里云MySQL无法创建数据库服务...
    99+
    2023-11-03
    阿里 解决方法 数据库
  • mmc无法创建管理单元问题的解决方法
    这篇文章主要介绍“mmc无法创建管理单元问题的解决方法”,在日常操作中,相信很多人在mmc无法创建管理单元问题的解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mmc无法创建管理单元问题的解决方法”的疑...
    99+
    2023-06-14
  • html无法播放视频的解决方法
    小编给大家分享一下html无法播放视频的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html无法播放视频的解决办法:首先打开相应的HTML代码文件;然后...
    99+
    2023-06-14
  • navicat使用SQL语句创建视图的方法
    这篇文章主要介绍了navicat使用SQL语句创建视图的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。navicat是一款非常好用的数据...
    99+
    2024-04-02
  • ppt无法插入视频的解决方法
    小编给大家分享一下ppt无法插入视频的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!ppt无法插入视频是因为ppt默认支持Windows medie player播放器插件,因此默认支持的视频格式是WMV格式的,而...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作