欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL中的视图使用详解

程序员文章站 2023-10-27 21:36:40
视图是虚拟的表,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询。 视图使用常见的规则和限制 与表一样,视图命名必须唯一(不能取名和已有视图或表相同)视图可以嵌套,可...

视图是虚拟的表,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询。

视图使用常见的规则和限制

与表一样,视图命名必须唯一(不能取名和已有视图或表相同)视图可以嵌套,可以利用从其他视图中检索数据的查询来构造一个视图ORDER BY 可以用在视图中,但如果从该视图检索数据SELECT也包含ORDER BY,那么该视图中的ORDER BY 将会被覆盖视图不能索引,也不能有关联的触发器或默认值视图可以和表一起使用

使用视图

视图用CREATE VIEW来创建使用SHOW CREATE VIEW viewname;来查看创建视图的语句用DROP VIEW viewname来删除视图更新视图时,可以先用DROP再用CREATE也可以直接用CREATE OR REPLACE VIEW

mysql> CREATE VIEW vendorlocations AS
    -> SELECT Concat(Rtrim(vend_name),'(',Rtrim(vend_country),')')
    -> FROM vendors
    -> ORDER BY vend_name;

之后的查询要用到视图中的数据的时候,可以把视图当作一个表来使用

mysql> SELECT * FROM vendorlocations;
+------------------------------------------------------+
| Concat(RTrim(vend_name),'(',RTrim(vend_country),')') |
+------------------------------------------------------+
| ACME(USA)                                            |
| Anvils R Us(USA)                                     |
| Furball Inc.(USA)                                    |
| Jet Set(England)                                     |
| Jouets Et Ours(France)                               |
| LT Supplies(USA)                                     |
+------------------------------------------------------+

更新视图

如果你对视图增加或删除行,实际上是对其基表增加或删除行。但是并非所有的视图都是可以更新的,,如果不能正确地确定被更新的基数据,则不允许更新(包括插入和删除)。

如果视图中有一下操作,则不能更新

分组联结子查询并聚集函数DISTANCT导出(计算)列

这看上去是个很大的缺点,但是,视图的主要作用用于检索数据。