码迷,mamicode.com
首页 > 数据库 > 详细

mysql--视图

时间:2016-10-09 19:42:57      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

一、视图的概念

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列。

视图的优点

1.安全性。一般是这样做的:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。
2.查询性能提高。
3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大。那么可以使用虚拟表的形式达到少修改的效果。
这是在实际开发中比较有用的。
4.复杂的查询需求。可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。

二、使用方法

在创建视图前应先看看是否有权限:

SELECT SELECT_priv,create_view_priv from mysql.user WHERE user=root

技术分享

1.单表创建视图

在员工表上创建视图:

CREATE VIEW V_VIEW1(ID, NAME, SEX, AGE,DEPARTMENT) AS SELECT ID, NAME, SEX, AGE,DEPARTMENT FROM t_employee;

查询结果:

SELECT * FROM V_VIEW

 技术分享

2.多表上创建视图

CREATE VIEW V_VIEW2(ID, NAME, SEX, AGE,DEPARTMENT,POS,EXPERENCE) AS SELECT a.ID, a.NAME, a.SEX, a.AGE,a.DEPARTMENT,b.POS,b.EXPERENCE FROM t_employee a,t_employee_detail b WHERE a.ID=b.ID;

查询结果:

SELECT * FROM V_VIEW2

技术分享

3.修改视图

ALTER VIEW  V_VIEW1(ID, NAME) AS SELECT ID, NAME  FROM t_employee;

结果:

技术分享

4.更新视图

在MySQL中,更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟表,其中没有数据,所以通过视图更新时,都是转换到基本表来更新。更新视图时,只能更新权限范围内的数据。超出了范围,就不能更新。

1.更新各个基础表里面的数据,视图也会有相应的改变

之前的视图V_VIEW2数据:

技术分享

两个基础表各添加1条数据

INSERT INTO t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,我是测试的,,84,销售部,5000,山东,,橄榄球);
INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(8,销售员骨灰,工作五十年);

结果视图就自动添加了:

技术分享

2.主动跟新视图,基础表数据也会发生变化:

UPDATE V_VIEW2 SET POS=高级工程师 WHERE NAME=天天

视图结果发生变化:

技术分享

基础表数据也发生变化:

select a.NAME,b.* from t_employee a INNER JOIN t_employee_detail b ON a.ID=b.ID  where name=天天

结果展示:

技术分享

5.删除视图

DROP VIEW IF EXISTS 视图名

 

mysql--视图

标签:

原文地址:http://www.cnblogs.com/chushiyaoyue/p/5943336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!