您的位置:首页 > 数据库 > MySQL

MYSQL入门学习之十:视图的基本操作

2014-07-29 14:04 615 查看

一、视图的基本介绍

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。

使用视图需要MySQL5及以后的版本支持。

下面是视图的一些常见应用:

重用SQL语句;

简化复杂的SQL操作;

使用表的组成部分而不是整个表;

保护数据;

更改数据格式和表示;

在视图创建之后,可以用与表基本相同的方式利用它们。

但对于大量的复杂或嵌套视图,性能可能下降得很厉害。因此在部署相应的应用前,应进行充分的测试。

二、使用视图的规则和限制

与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字);

对于可以创建的视图数目没有限制;

为了创建视图,必须具有足够的访问权限;

视图可嵌套;

ORDER BY可以用在视图中;

视图不能索引,也不能有关联的触发器或默认值;

视图可以和表一起使用;

三、使用视图

1、创建视图

create view view_name

AS

select 语句

示例:

mysql> create or replace view v_pic_url

-> as

-> select

-> id,url

-> from v9_picture

-> where catid=17;

2、查看创建视图的语句

SHOW CREATE VIEW viewname;

示例:

mysql> show create view v_pic_url;

+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

| View | Create View | character_set_client | collation_connection
|

+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

| v_pic_url | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_pic_url` AS select `v9_picture`.`id` AS `id`,`v9_picture`.`url` AS `url` from `v9_picture` where (`v9_picture`.`catid` = 17) | latin1 | latin1_swedish_ci
|

+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+

3、删除视图

DROP VIEW viewname;

示例:

mysql> drop view v_pic_url;

4、更新视图结构

可以先将视图DROP,再使用CREATE语句创建;

也可以直接使用CREATE OR REPLACE VIEW语句;

四、更新视图数据

通常,视图是可更新的(即,可以对它们使用INSERT、UPDATE和DELETE)。更新一个视图将更新其基表。如果对视图增加或删除行,实际上是对其基表增加或删除行。

但是,并非所有视图都是可更新的。如果视图定义中有以下操作,则不能进行视图的更新:

分组(使用GROUP BY和HAVING);

联结;

子查询;

并;

聚焦函数;

DISTINCT;

导出(计算)列;

一般,应该将视图用于检索而不用于更新。

参考:《MySQL必知必会》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: