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导出(计算)列
这看上去是个很大的缺点,但是,视图的主要作用用于检索数据。