MYSQL中的视图
来源:互联网 发布:机械工艺设计软件 编辑:程序博客网 时间:2024/06/05 20:57
图 | 自制
文 | 挨踢小子
——此文仅代表个人学习所得,欢迎阅览
如有侵权,请私信删除
视图概述:
视图是从一个或者多个表中导出的,视图的行为与表非常相似,但视图是一个虚拟表,在视图中,用户可以使用,select语句查询数据,以及使用insert、update 、和delete修改记录。从mysql5.0开始可以使用视图,视图可以使用户操作方便,而且保障数据库系统的安全。
含义:
视图是一个虚拟表,是从数据库中一个或者多个表中导出来的表,视图还可以从已经存在的视图的基础上定义。
视图一经定义,便存储在数据库中,与其相对应的数据并没有像表那样在数据库中在存储一份,通过视图看到的数据只是存放在基本表中的数据,对视图的操作与对表的操作一样,可以对其进行查询、修改、和删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
视图作用与直接从数据表中读取相比,视图有以下优点:
1、简单化
看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他 们的操作,那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2、安全性
通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不到也取不到。数据库授权命令,可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定列上。通过视图,用户可以被限制在数据的不同子集上;
1、 使用权限可被限制在基表的行的子集上。
2、 使用权限可被限制在基表的列的子集上。
3、 使用权限可被限制在基表的行和列的子集上。
4、 使用权限可被限制在多个基表的列链接所限定的行上。
5、 使用权限可被限制在基表的数据的统计汇总上。
6、 使用权限可被限制在另一个视图的一个子集上,或是一些视图和基表合并后的子集上。
3、逻辑数据独立性
视图可帮助用户屏蔽真实表结构变化带来的影响
创建视图:
视图中包含了select 查询的结果,因此视图的创建基于select 语句和已经存在的数据表,视图可以建立在一张表上,也可以建立在多张表上。
基本语法:
CREATE [OR REPLACE] [ALGORITHM={UNDEFINED | MERGE |TEMPTABLE}]
VIEW view_name [column_list]
as SELECT_statement
[WITH [CASCADE |LOCAL ] CHECK OPTION]
其中,
CREATE 表示创建新的视图;
PEPLACE 表示替换已经创建的视图,
ALGORITHM 表示视图选择的算法;
view_name 为视图的名字,
column_list 为属性的列;
SELECT_staement表示select语句;
[WITH [CASCADE |LOCAL ] CHECK OPTION] 参数表示视图在更新时保证在视图的权限范围之内。
ALGORITHM 的取值有3个,分别是{UNDEFINED | MERGE |TEMPTABLE}
UNDEFINED 表示mysql将自动选择算法。
MERGE表示将使用的视图语句与视图定义合并起来,使得视图定义的某部分取代语句对应的部分。
EMPTABLE 表示将视图的结果存入临时表,然后用临时表来执行语句[CASCADE|LOCAL ]为可选参数,CASCADE 为默认值,表示更新视图时要满足所有相关的视图和表的条件,LOCAL表示更新视图时满足该视图本身定义的条件即可。
该语句要求具有针对视图的create view 权限,以及针对由select 语句选择的每一列上的某些权限。对于在select 语句中其他地方使用的列,必须具有select 权限。如果还有OR REPLACE子句,必须在视图上具有 DROP 权限。
视图属于数据库,在默认情况下,将在当前的数据库创建新视图。要想在给定数据库中明确创建视图,创建时应将名称指定为db_name.view_name。
在单表上创建视图
Mysql可以在单个数据表上创建视图
在t表上创建一个名为view_t的视图
首先创建基本表并插入数据,语句如下:
Create table t (quantity int , price int);
Insert into t values(3,50)
创建视图语句为:
Create view view_t as select quantity ,
price , quantity *price from t;
默认情况下创建的视图和基本表的字段时一样的,也可以通过指定视图字段,名称来创建视图。
Create view view_t(qty, price , total) as select quantity , price , quantity *price from t;
在多表上创建视图
Mysql可以在多个数据表上创建视图,可以使用CREATE VIEW 语句实现。
在表student和表stu_info上创建视图stu_glass
创建视图stu_glass,语句如下:
Create view stu_glass (id,name,glass) as
Select student.s_id , student.name , stu_info.glass
from student ,stu_info
where student.s_id=stu_info.s_id;
●作者简介:挨踢小子,现在就读于某某大学,一个一无所有,努力拼搏不负青春的小子,喜欢文字,爱好读书。公众号: 挨踢小子(LN-aitixiaozi )。
- mysql中的视图
- MySql中的视图重写
- (8)mysql中的视图
- mysql中的视图
- MySQL中的视图操作
- Mysql中的视图
- MySQL中的视图
- mysql 中的视图
- mysql中的视图
- mysql中的视图
- MySQL中的视图
- MYSQL中的视图
- Mysql中的视图
- Mysql中的视图
- mysql中的视图小总
- MySQL中的视图及性能问题
- MySql中的视图的概念及应用
- MySQL中的视图及性能问题
- node.js中get和post请求
- 中兴执行副总裁熊辉回母校谈目标:相信总有路可走
- 树莓派搭建图像识别基站
- 【2-sat】和平委员会
- 例题6-10 下落的树叶(The Falling Leaves, UVa 699)
- MYSQL中的视图
- cd,ls,ln,tree,文件系统
- AC自动机 HDU2222 Keywords Search
- Spark中job、stage、task的划分+源码执行过程分析
- C++命名空间
- T-Splines 4.0 For Rhino 完整汉化免费版下载
- 函数重载和虚函数继承
- 最小子串覆盖
- 决策树 学习