一、什么是视图

视图功能是mysql 在5.1版本出现的新特性,是一种虚拟存在表,视图并不在数据库中实际存在,但它的数据来源于表,通过执行时动态生成。

创建视图的好处主要有3点:

1、简化sql语句
2、提高了sql的重用性
3、保护基表的数据,提高了安全性

二、视图的操作

视图的操作包括创建视图,修改视图,删除视图,以及查看视图定义

2.1创建视图

创建视图需要有create view 的权限,并且对于查询涉及的列有select 权限。如果使用create or replace或者alter 修改视图,那么还需要改视图的drop权限。

创建视图的语句:

create [or replace][algorithm={undefined | merge | temptable}] view 视图名 [(column_list)] as  select_statement [with[cascaded | local] check option]

通用语句:create view 视图名
as
查询语句;

2.2修改视图

方式一:create or replace view 视图名
as
查询语句;

方式二:

alter [algorithm={undefined | merge | temptable}] view 视图名 [(column_list)] as  select_statement [with[cascaded | local] check option]

通用语句:alter view 视图名
as
查询语句

mysql视图的定义有一些限制,例如,在from 关键字后面不能包含子查询,这和其他数据库是不同的,如果视图是从其他数据库迁移过来的,那么可能需要因此做一些改动,可以将子查询的内容先定义成一个视图,然后对该视图再创建视图就可以实现类似的功能了。

2.3删除视图

可以一次删除一个或者多个视图,前提是必须有该视图的drop权限

drop view [if exists] 视图1,视图2 [restrict | cascade]

通用语句:drop view 视图1,视图2,...;

2.4查看视图

从mysql 5.1版本后,使用show tables 命令后,不仅会显示当前数据库中所有的表,还会显示视图的名字,不存在单独显示视图的命令show views。

同样,在使用show table status命令时,不但可以显示表的信息,同时也可以显示视图的信息。所以可以通过下面的命令显示视图的信息;

show  table status [from db_name] [like 'pattern']

查看视图的结构:

desc 视图名

如果需要查询某个视图的定义,可以用 show create view 命令查看:

show  create view 视图名 \G

2.5使用视图

1.插入
insert
2.修改
update
3.删除
delete
4.查看
select
注意:视图一般用于查询的,而不是更新的,所以具备以下特点的视图都不允许更新

视图的可更新性和视图中的查询的定义有关系,以下类型的视图是不可更新的。

包含有以下关键字的sql语句:

聚合函数(sum 、min、max、count等)、distinct、group by、having、union或者union all。

常量视图。

select中包含子查询。

join。

from一个不能更新的视图。

where字符的子查询引用了from子句中的表

三、视图和表的比较

比较对象 关键字 占用物理空间情况 使用的差异
视图 view 占用很小,只保存sql逻辑 一般用于查询
table 保存实际的数据,占用空间相对大 各种操作都可以(增删改查)

部分内容参考书籍《深入浅出mysql----数据库开发、优化与管理维护(第二版)》  作者:黄潇等

mysql-------视图相关推荐

  1. 【数据库优化专题】MySQL视图优化(一)

    本期数据库优化专题分享,为大家带来的是DBA+社群MySQL领域原创专家--李海翔所著的MySQL视图优化系列文章.以下是第一部分的内容,未完部分敬请关注后续更新. 专家简介 李海翔 网名:那海蓝蓝 ...

  2. mysql视图登录_mysql视图

    mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...

  3. mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...

    我不认为有一种标准方式,但这种方法似乎值得尝试. 想法是为视图动态生成唯一的"id"值(类似于rownum).来自Create a view with column num_row ...

  4. 1、MySQL视图是什么?

    MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中.行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的. 数据库中 ...

  5. mysql 视图操作和存储过程

    1.mysql 视图的操作是在新版本数据库才支持的,视图操作的好处是可以简化数据库的查询,特别是一些经常查询的数据表我们可以先创建一个视图,以后要在查询这个类式 的数据表时候,就可以直接查询该视图.这 ...

  6. MYSQL视图用户管理

    MYSQL视图 文章目录 MYSQL视图 1. 基本使用 2. 视图规则和限制 用户管理 1. 用户 2. 数据库的权限 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列 ...

  7. mysql 视图怎么调用方法_mysql 视图的使用

    mysql视图的作用(详细) 测试表:user有id,name,age,sex字段 测试表:goods有id,name,price字段 测试表:ug有id,userid,goodsid字段 视图的作用 ...

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

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

  9. mysql 视图 数据相加_MySQL

    查看安装路径 ps -ef|grep mysql 1,配置linux虚拟机,修改IP ????? vim /etc/sysconfig/network-scripts/ifcfg-eth0 2,配置完 ...

  10. mysql 视图 教程_MySQL视图简介及基本操作教程

    前言 视图是数据库系统中一种非常有用的数据库对象.MySQL 5.0 之后的版本添加了对视图的支持. 认识视图 视图是一个虚拟表,其内容由查询定义.同真实表一样,视图包含一系列带有名称的列和行数据,但 ...

最新文章

  1. 给大家推荐8个SpringBoot精选项目
  2. Nginx 之防盗链配置
  3. 进入hadoop_hadoop:伪分布模式参数配置指南
  4. 【英语学习】【WOTD】despot 释义/词源/示例
  5. 建行优盾制单重要还是复核重要_想秒批建行5万+白金信用卡,你得满足这些条件!...
  6. 如果不考虑钱和面子,你最想做什么工作?
  7. dsp java_GitHub - GrayOxygen/JavaDsp: 数字信号处理(DSP)方面的Java封装,包含常用的一些处理方法,如滤波、信号变换等等。...
  8. Python Pandas常用数据结构Series和DataFrame快速上手
  9. 将python随机森林模型保存到文件
  10. linux 有dll文件吗,linux上可以运行dll吗
  11. RTP协议全解析(H264码流和PS流)
  12. 为什么会出现403 Forbidden错误?三分钟教你快速解决问题!
  13. 地质大学计算机学院实验室,中国地质大学
  14. R实现K-means
  15. 链表--逆时针旋转一个链表
  16. java折线图_Java系列:JFreeChart在线制作折线图
  17. 计算机视觉-刷题笔记day1
  18. Linux操作系统学习笔记(二十)网络通信之TCP协议
  19. 碧桂园香港上市 25岁杨惠妍512亿身家变身首富
  20. SmsForwarder-短信转发器

热门文章

  1. Win10电脑如何打开任务管理器界面
  2. Menu菜单资源Android
  3. 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
  4. 如何用c++画图_画图教室 | 绘制Mapping第一步:美团搜索火锅串串香...认真的!...
  5. 计算机组成原理mw,计算机组成原理 存储器
  6. 研华GPIO的功能实现代码
  7. linux命令之tee,linux tee命令
  8. 铁芯用matlab怎么仿真,Simulink的BLDC建模与仿真
  9. spring里restTemplate向目的URL发送post请求
  10. 勒索病毒WannaCry(永恒之蓝)