一. 视图概述

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

视图是存储在数据库中的查询的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视图简介相关推荐

  1. mysql 视图调用存储过程_MySQL视图、存储过程

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 什么是视图(视图) 虚拟表 内容类似于真实表,有字段和记录 该视图不以数据库中存储的数据的形式存在 行和列的数据来自 ...

  2. mysql视图实现的_mysql视图是什么?怎么实现?

    mysql视图是什么?怎么实现? 发布时间:2020-05-21 18:00:24 来源:亿速云 阅读:152 作者:鸽子 视图本身是一张虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,获取的 ...

  3. MySQL查询与视图实验总结_MySQL 视图 总结

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据. 数 ...

  4. mysql视图使用场景_MySQL视图适用场景

    问题描述: MySQL视图适用于哪些场景? 解决方法: 1.视图能简化用户操作.视图机制使用户可以将注意力集中在所关心的数据上.如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简 ...

  5. mysql创建视图需注意_mysql视图创建注意事项

    一. 视图概述 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且 ...

  6. mysql common是什么_MySQL common_schema简介

    common_schema为MySQL提供了查询脚本,分析并且信息化的视图和一个函数库,以便更容易的管理和诊断.它引入的一些基于SQL的工具简 common_schema的简介: Shlomi Noa ...

  7. mysql 视图 过程 函数_MySQL视图,函数,触发器,存储过程

    1. 视图 视图是一个虚拟表,它的本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来, ...

  8. mysql实验视图及索引_MySQL视图及索引

    视图 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据. 视图的作用.优点: 限制对数据的访问 让复杂查询变得简单 提供数据的独立性 可以完成对相同数据的不同显示 //创建.修 ...

  9. mysql视图高级设置_MySQL 视图高级属性知多少?

    Navicat 中的视图用于限制访问一组关联(表),就像一个单一的表,视图也可以用来限制访问行(一个特定表的子集).MySQL视图的高级属性主要涉及以下几点: Navicat 视图高级属性 算法 ● ...

最新文章

  1. web developer tips (51):使用vs2005和IE8进行调试
  2. python 字符串、列表和元祖之间的切换
  3. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 3.)(python/c/c++版)(笔记)
  4. Origin一键复制粘贴,也能批量更改图片格式
  5. 陶瓷气体放电管型号大全
  6. 学习笔记5-C语言-数组
  7. union c语言大小,Union declaration(联合体声明)
  8. PAT 1003 Emergency
  9. PAT 1067. 试密码(20)-乙级
  10. html5图片动且平移,HTML5 Canvas平移,放缩,旋转演示
  11. GNS 3路由器7200介绍
  12. 2023考研王道数据结构知识梳理
  13. 软件工程--螺旋模型详解
  14. 轨道交通计算机联锁系统应用,计算机联锁系统论文(2)
  15. 2020年书法落款_书法落款时间查询表整理,太赞了
  16. 网络服务器配置管理综合实训项目心得体会,服务器的配置与管理实训报告.doc...
  17. android远程控制灯光,11款可用手机远程控制的智能灯
  18. EMPIRE: LUPINONE实战演练
  19. 配置vsftpd 服务器
  20. AI视频超分升级版,720P转4K效果更赞!

热门文章

  1. 解决python安装第三方库速度很慢的问题(opencv为例)
  2. TimeDistributed in LSTM
  3. Learning Deep Structured Semantic Models for Web Search using Clickthrough Data (DSSM)
  4. DQN 笔记 double DQN
  5. Java面试题目解析-如何解决Java性能问题
  6. Python的lambda匿名函数
  7. 使用Github搜索开源项目
  8. numpy.triu详解
  9. python type函数
  10. 【机器学习算法-python实现】svm支持向量机(2)—简化版SMO算法