mysql视图的简介_mysql视图简介
一. 视图概述
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图是存储在数据库中的查询的sql 语句,它主要出于两种原因:安全原因,
视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。
视图:查看图形或文档的方式。
视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行,但就本质而言这些数据列和数据行来源于其所引用的表。
所以视图不是真实存在的基础表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
视图有很多优点,主要表现在:
•视点集中
•简化操作
•定制数据
•合并分割数据
•安全性
二. 创建视图——create view
1. 语法
create [or replace] [algorithm = {undefined | merge | temptable}]
view [db_name.]view_name [(column_list)] as select_statement [with
[cascaded | local] check option]通过该语句可以创建视图,若给定了[or
replace],则表示当已具有同名的视图时,将覆盖原视图。select_statement是一个查询语句,这个查询语句可从表或其它的视图中查询。视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。
表和数据库共享数据库中相同的名称空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。
2. 使用举例
eg.
本例创建一个产品表(product)和一个购买记录表(purchase),再通过视图purchase_detail查询出购买的详细信息。
create table product
(
product_id int not null,
name varchar(50) not null,
price double not null
);
insert into product values(1, 'apple ', 5.5);
create table purchase
(
id int not null,
product_id int not null,
qty int not null default 0,
gen_time datetime not null
);
insert into purchase values(1, 1, 10, now());
create view purchase_detail as select product.name as name, product
.price as price, purchase.qty as qty, product .price * purchase.qty
as total_value from product, purchase where product.product_id =
purchase.product_id;
创建成功后,输入:select * from purchase_detail;
运行效果如下:
+-------+-------+-----+-------------+
| name | price | qty | total_value |
+-------+-------+-----+-------------+
| apple | 5.5 | 10 | 55 |
+-------+-------+-----+-------------+
1 row in set (0.01 sec)
3. 注意事项
创建视图存在如下注意事项:
(1) 运行创建视图的语句需要用户具有创建视图(crate view)的权限,若加了[or
replace]时,还需要用户具有删除视图(drop view)的权限;
(2) select语句不能包含from子句中的子查询;
(3) select语句不能引用系统或用户变量;
(4) select语句不能引用预处理语句参数;
(5) 在存储子程序内,定义不能引用子程序参数或局部变量;
(6)
在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用check
table语句;
(7) 在定义中不能引用temporary表,不能创建temporary视图;
(8) 在视图定义中命名的表必须已存在;
(9) 不能将触发程序与视图关联在一起;
(10) 在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order
by的语句,它将被忽略。
三. 修改视图——alter view
1. 语法
alter [algorithm = {undefined | merge | temptable}] view view_name
[(column_list)] as select_statement [with [cascaded | local] check
option]该语句用于更改已有视图的定义。其语法与create view类似。
2. 使用举例
eg. 将上一小节中中创建的视purchase_detail进行修改,去掉qty列,语句如下:
alter view purchase_detail as select product.name as name, product
.price as price, product .price * purchase.qty as total_value from
product, purchase where product.product_id =
purchase.product_id;
此时通过语句:select * from purchase_detail;对视图进行查询时,结果如下:
+-------+-------+-------------+
mysql视图的简介_mysql视图简介相关推荐
- mysql 视图调用存储过程_MySQL视图、存储过程
在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 什么是视图(视图) 虚拟表 内容类似于真实表,有字段和记录 该视图不以数据库中存储的数据的形式存在 行和列的数据来自 ...
- mysql视图实现的_mysql视图是什么?怎么实现?
mysql视图是什么?怎么实现? 发布时间:2020-05-21 18:00:24 来源:亿速云 阅读:152 作者:鸽子 视图本身是一张虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,获取的 ...
- MySQL查询与视图实验总结_MySQL 视图 总结
什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据. 数 ...
- mysql视图使用场景_MySQL视图适用场景
问题描述: MySQL视图适用于哪些场景? 解决方法: 1.视图能简化用户操作.视图机制使用户可以将注意力集中在所关心的数据上.如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简 ...
- mysql创建视图需注意_mysql视图创建注意事项
一. 视图概述 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且 ...
- mysql common是什么_MySQL common_schema简介
common_schema为MySQL提供了查询脚本,分析并且信息化的视图和一个函数库,以便更容易的管理和诊断.它引入的一些基于SQL的工具简 common_schema的简介: Shlomi Noa ...
- mysql 视图 过程 函数_MySQL视图,函数,触发器,存储过程
1. 视图 视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来, ...
- mysql实验视图及索引_MySQL视图及索引
视图 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据. 视图的作用.优点: 限制对数据的访问 让复杂查询变得简单 提供数据的独立性 可以完成对相同数据的不同显示 //创建.修 ...
- mysql视图高级设置_MySQL 视图高级属性知多少?
Navicat 中的视图用于限制访问一组关联(表),就像一个单一的表,视图也可以用来限制访问行(一个特定表的子集).MySQL视图的高级属性主要涉及以下几点: Navicat 视图高级属性 算法 ● ...
最新文章
- web developer tips (51):使用vs2005和IE8进行调试
- python 字符串、列表和元祖之间的切换
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 3.)(python/c/c++版)(笔记)
- Origin一键复制粘贴,也能批量更改图片格式
- 陶瓷气体放电管型号大全
- 学习笔记5-C语言-数组
- union c语言大小,Union declaration(联合体声明)
- PAT 1003 Emergency
- PAT 1067. 试密码(20)-乙级
- html5图片动且平移,HTML5 Canvas平移,放缩,旋转演示
- GNS 3路由器7200介绍
- 2023考研王道数据结构知识梳理
- 软件工程--螺旋模型详解
- 轨道交通计算机联锁系统应用,计算机联锁系统论文(2)
- 2020年书法落款_书法落款时间查询表整理,太赞了
- 网络服务器配置管理综合实训项目心得体会,服务器的配置与管理实训报告.doc...
- android远程控制灯光,11款可用手机远程控制的智能灯
- EMPIRE: LUPINONE实战演练
- 配置vsftpd 服务器
- AI视频超分升级版,720P转4K效果更赞!
热门文章
- 解决python安装第三方库速度很慢的问题(opencv为例)
- TimeDistributed in LSTM
- Learning Deep Structured Semantic Models for Web Search using Clickthrough Data (DSSM)
- DQN 笔记 double DQN
- Java面试题目解析-如何解决Java性能问题
- Python的lambda匿名函数
- 使用Github搜索开源项目
- numpy.triu详解
- python type函数
- 【机器学习算法-python实现】svm支持向量机(2)—简化版SMO算法