精华内容
下载资源
问答
  • MySQL如何创建视图?本篇文章小编给大家分享一下MySQL创建视图代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。基本语法可以使用 CREATE VIEW 语句来...

    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如何创建视图

    2020-09-08 19:25:05
    主要介绍了MySQL如何创建视图,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
  • 如何创建视图授权

    2014-06-20 22:04:44
    如何创建视图授权
  • 数据库如何创建视图创建视图的理想步骤:一般来说,视图创建可以分为五步走:第一步:先考虑select语句的编写。我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一步,就是考虑这个select语句的...

    数据库如何创建视图

    创建视图的理想步骤:

    一般来说,视图创建可以分为五步走:

    第一步:先考虑select语句的编写。我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一步,就是考虑这个select语句

    的如何编写。这个select语句编写的是否合理,执行效率的高低直接影响着这个视图的性能,在Select语句中,可能还会有格式的控制、内容的编排等

    等。如在Select语句中,可以把一些字段合并成一个字段;也可以把相关的内容进行倒置等等。这些功能都是Select语句完成的。所以可以这么

    说,Select语句的编写是视图建立的基础。

    第二步:对这个Select语句进行测试。当我们编写好Select语句之后,就需要在数据库中执行这条语句,看其能否查询到我们想要的值。在对

    Select语句进行测试的时候,需要注意一个问题,有时候Select查询语句可以查到准确的数据,但是在以这条语句建立视图的时候,可能就会通不过。

    如在一些表之间的连接查询的时候,如果两个表中有个字段名相同,是可以的。因为他们除了字段名字之外,还有表名一起来定义这个字段。如A.name与

    B.name。这是不算重名的。但是,若在建立视图的时候,这就会被认为是重复的列明,需要对其中的一个列名进行重定义。这一点在数据库视图建立的时候,

    要特别的注意。

    第三步:考虑查询结果的准确性。通过查询语句把我们想要的结果查询出来后,我们就需要看看这个结果是否满足我们的需要。在这个过程中,我们主要注意两

    点。一是形式字段是否齐全。在一些应用系统中,若数据库的视图要能够被前台的应用程序调用的话,则必须包含一些形式字段。如笔者以前在设计一个

    ERP系统的时候,若前台系统要调用数据库中的视图的时候,必须包含记录更新时间、更新者、记录创建时间、创建者等相关信息。若缺乏这些信息的话,则前台

    调用这张视图的时候,就会出现错误。故在考虑查询结果准确性的问题的时候,就要考虑到前台应用程序的需要,看看这些形式字段是否齐全。二是实体内容的完整

    性。我们到底需要显示表中的哪些字段呢,这个我们在这里要确认清楚。若显示内容太多的话,则会影响视图的执行效率,而且也会降低视图的安全性作用;但是,

    若字段内容显示不足的话,则以后要添加字段的话,会比较麻烦,有一定的工作量。所以在这个检验的时候,需要根据视图的实际功用,确定视图需要显示的内容。

    第四步:视图的修饰。有时候,为了阅读的方便,我们需要对查询结果进行一些修饰。如现在有两张表,一张是员工基本信息表,这表中有员工姓名、员工职位编号

    等等;另一张表是职位基本信息表,在这表中有职位编号、职位名称。我们希望在视图中能够如下显示:“职位:员工名字”,如数据库工程师:Victor。也

    就是说,把两个字段合并起来,并且在中间加入一个冒号。这些格式性的内容都是在查询的时候实现的。所以,我们确认查询的结果没有错误之后,接下来就要确认

    格式问题。若能够在视图中规范这些格式问题,则前台的程序设计就会相对来说比较简单

    第五步:建立视图。等到上面四步都确认无误后,我们就要根据上面的查询语句来建立视图了。不过在这一步过程中,也有一些问题需要注意。一是视图名字的命

    名规格。我们除了遵循数据库的强制命名格式之外,如不能以数字开头等等,还需要遵循一些软规则。如视图最好能够以V开头,跟基础表进行隔开;另外在视图命

    名中,能够根据应用模块的不同,来进行分类,并体现在视图的名字中。这对于我们后续视图的查找都具有非常现实的意义。二是虽然可以在视图中直接更新基础

    表,不过,为了安全与数据统一的考虑,我们这些过来人一般都不建议通过视图来直接更新基础表中的数据。虽然数据库提供了类似的功能。若要更改相关数据的

    话,则直接去更改基础表的内容为好。在建立视图的时候,默认情况下是不能够通过视图直接更新基础表。

    展开全文
  • 视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并...

    视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全

    优点及缺点

    优点

    简单化,数据所见即所得

    安全性,用户只能查询或修改他们所能见到得到的数据

    逻辑独立性,可以屏蔽真实表结构变化带来的影响

    缺点

    性能相对较差,简单的查询也会变得稍显复杂

    修改不方便,特变是复杂的聚合视图基本无法修改

    创建视图语法详解

    语法结构:

    { CREATE|REPLACE } [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

    VIEW view_name [{column_list}]

    AS SELECT_STATEMENT

    [WITH [CASCADED | LOCAL |] CHECK OPTION]

    释义:

    CREATE|REPLACE : 【创建|替换已创建的】视图

    ALGORITHM : 视图算法

    1.UNDEFINED 系统自动选择算法

    2.MERGE使用的视图语句与视图定义合并起来

    3.TEMPTABLE 结果存入临时表,然后用临时表执行语句

    view_name : 视图名称

    column_list : 属性列

    SELECT_STATEMENT :SELECT语句

    [WITH [CASCADED | LOCAL |] CHECK OPTION] 表示视图在更新时保证在视图的权限范围内

    1.CASCADED 默认值 更新视图时要满足所有相关视图和表的条件,2.LOCAL表示更新视图时满足该视图本身定义的条件即可。

    示例用表

    测试表:user有id,name,age,sex字段

    测试表:goods有id,name,price字段

    测试表:ug有id,userid,goodsid字段

    视图的作用实在是太强大了,以下是我体验过的好处:

    作用一:

    提高了重用性,就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。示例:

    1 select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

    但有了视图就不一样了,创建视图other。示例

    1 create view other as select a.name as username, b.name as goodsname from user as a, goods as b, ug as c where a.id=c.userid and c.goodsid=b.id;

    创建好视图后,就可以这样获取user的name和goods的name。示例:

    select * from other;

    以上sql语句,就能获取user的name和goods的name了。

    作用二:

    对数据库重构,却不影响程序的运行。假如因为某种需求,需要将user拆分为表usera和表userb,该两张表的结构如下:

    测试表:usera有id,name,age字段

    测试表:userb有id,name,sex字段

    这时如果php端使用sql语句:select * from user;那就会提示该表不存在,这时该如何解决呢。解决方案:创建视图。以下sql语句创建视图:

    1 create view user as select a.name,a.age,b.sex from usera as a, userb as b where a.name=b.name;

    以上假设name都是唯一的。此时php端使用sql语句:select * from user;就不会报错什么的。这就实现了更改数据库结构,不更改脚本程序的功能了。

    作用三:

    提高了安全性能。可以对不同的用户,设定不同的视图。例如:某用户只能获取user表的name和age数据,不能获取sex数据。则可以这样创建视图。示例如下:

    1 create view other as select a.name, a.age from user as a;

    这样的话,使用sql语句:select * from other; 最多就只能获取name和age的数据,其他的数据就获取不了了。

    作用四:

    让数据更加清晰。想要什么样的数据,就创建什么样的视图。经过以上三条作用的解析,这条作用应该很容易理解了吧

    展开全文
  • 如何创建视图:首先将需要的数据通过sql进行查询出来,然后将sql放到视图中。如下图。 点击视图右键,新建视图,将sql复制进去,保存即可。 视图是可以与表进行联查的。将视图的名称当做表名进行处理即可。 ...

    视图的效果:简化sql查询,提高开发效率。如果说还有另外一个用途那就是兼容老的表结构。
    当我们需要查询的数据比较复杂时,我们可以通过创建视图的方式,将数据存储到视图中,下面创建视图。
    如何创建视图:首先将需要的数据通过sql进行查询出来,然后将sql放到视图中。如下图。
    在这里插入图片描述
    点击视图右键,新建视图,将sql复制进去,保存即可。在这里插入图片描述

    视图是可以与表进行联查的。将视图的名称当做表名进行处理即可。

    展开全文
  • 创建视图语句craete view t as select * from b;查看视图信息desc t;show table status like 't' \G;查看视图详细信息show create view '视图名' \G;二.在views中查看视图详细信息select * from information_schema....
  • CREATEVIEW v_image_org_user_album AS--创建视图并命名v_image_org_user_albumSELECT --先开from中表的命名a.id AS imgid,--将a表中的id命名为新的表(视图)中的imgid字段,剩下的都一样,就是将之前的字段重新命名...
  • 如何创建视图(存储过程) CREATE OR REPLACE VIEW V_XMFK_PROJECT_THREE AS SELECT '114001000000163002' TYPE_CODE, PROJECT_CONTENT , PROJECT_CODE, RMB_APP_MONEY, VERIFICA
  • 2、创建远程表 mysql>CREATE TABLE federated_table ( id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', PRIMARY KEY (id) ) ENGINE=...
  • 数据库如何创建视图 创建视图的理想步骤: 一般来说,视图创建可以分为五步走: 第一步:先考虑select语句的编写。我们知道,视图其实就是一个select语句的集合,所以,我们建立视图的第一...
  • mysql如何创建视图

    2021-01-12 11:53:41
    在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。...mysql视图可以使用SQL CREATE VIEW命令创建。 SQL CREATE VIEW 语法: CREATE VIEW view_name AS SELECT column_name(s) FROM table_name
  • 创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。基本语法可以使用 CREATE VIEW 语句来创建视图。语法格式如下:CREATE VIEW AS 语法说明如下。:指定视图的...
  • 可以方便用户对数据的操作,那如何在已有的数据库表上创建视图,并且查看创建视图的信息,具体操作如下:1.为了不影响其他的数据库表,新建一张数据库表t_worker_info,代码如下:create table t_worker_info(id int...
  • 在mysql中,可以使用“CREATE VIEW”语句来创建视图,语法格式为“CREATE VIEW AS ”;其中“”不能包含FROM子句中的子查询,不能引用预处理语句参数。创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以...
  • oracle如何创建视图

    万次阅读 2018-06-11 11:17:30
    视图的优点: 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表检索数据。 4.对于相同的数据可...
  • 在mysql中,可以使用“CREATE VIEW”语句来创建视图,语法格式为“CREATE VIEW AS ”;其中“”不能包含FROM子句中的子查询,不能引用预处理语句参数。创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以...
  • SQL 如何创建视图

    2017-08-10 11:28:14
    本章讲解如何创建、更新和删除视图。 SQL CREATE VIEW 语句 什么是视图? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库...
  • 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个...mysql视图可以使用SQL CREATE VIEW命令创建。SQL CREATE VIEW 语法:CREATEVIEWvie...
  • Oracle 如何创建视图步骤

    千次阅读 2019-03-18 21:47:10
    简单教学例子 在 create view 语句中嵌入子查询,子查询可以是复杂的select语句 总结例子 创建视图语法写法:
  • 基本语法可以使用 CREATE VIEW 语句来创建视图。语法格式如下:CREATE VIEW AS 语法说明如下。:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。:指定创建视图的 SELECT 语句,可用于查询...
  • 1、为什么要使用视图  1.进行多表联合查询时,编写程序时每调用一次需编写一次,不太现实,容易出错;  这时把所需的数据集于视图...//在SQL Sever数据库中创建表 create table tb_stu (  stuNo int primar...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,954
精华内容 2,381
关键字:

如何创建视图