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必知必会》
一、视图的基本介绍
视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
使用视图需要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必知必会》
相关文章推荐
- 【转】MYSQL入门学习之十:视图的基本操作
- MYSQL入门学习之九:索引的基本操作
- MYSQL入门学习之十四:游标的基本操作
- Mysql入门学习笔记---基本操作
- IOS入门学习(五):基本交互功能之滑块、标签和操作表单和告警视图
- MYSQL入门学习之一:基本操作
- 【转】MYSQL入门学习之八:数据库及表的基本操作
- MYSQL入门学习之一:基本操作
- 【转】MYSQL入门学习之十三:自定义函数的基本操作
- MYSQL入门学习之十三:自定义函数的基本操作
- MYSQL入门学习之十五:事务处理的基本操作
- MYSQL入门学习之八:数据库及表的基本操作
- 【MySQL入门篇】2.MySQL的基本操作--慕课网【学习总结】
- MYSQL入门学习之十二:存储过程的基本操作
- MYSQL入门学习之十一:触发器的基本操作
- 【转】MYSQL入门学习之十一:触发器的基本操作
- 【转】MYSQL入门学习之一:基本操作
- 【转】MYSQL入门学习之十二:存储过程的基本操作
- sql分类及基本sql操作,校对规则(mysql学习笔记二)
- MySQL入门学习(五)多表操作(转)