视图

视图概念

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

关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能。

视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。

视图基本操作

创建视图

视图的本质是SQL指令(select 语句)

基本语法:create[or repalce] view 视图名字 as select 指令 [with check option]; //可以是单表数据,也可以是连接查询,联合查询或者子查询

表里面不能出现同名字段所以会显示重复。

查看视图:视图本身是虚拟表,所有关于表的一些操作都适合视图。

使用视图

视图是一张虚拟表,可以直接把视图当做“表”操作,但是视图本身没有数据,是临时执行select语句得到对应的结果。视图主要用于查询操作。

基本语法:select 字段列表 from 视图名字[各种子句];

修改视图

修改视图:本质是修改视图对应的查询语句

基本语法:alter view 视图名字 as 新select指令;

删除视图

基本语法:drop view 视图名字;

DML操作视图

因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表中。视图的DML操作,不是所有的视图都可以做DML操作。

有下列内容之一,视图不能做DML操作:

①select子句中包含distinct

②select子句中包含组函数

③select语句中包含group by子句

④select语句中包含order by子句

⑤select语句中包含union 、union all等集合运算符

⑥where子句中包含相关子查询

⑦from子句中包含多个表

⑧如果视图中有计算列,则不能更新

⑨如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作

with check option

含义:对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制

嵌套视图:定义在另一个视图的上面的视图

mysql> create view v_ear_veterans

-> as

-> select * from v_veterans

-> where JOINED < 1980;

使用WITH CHECK OPTION约束时,(不指定选项则默认是CASCADED)

可以使用CASCADED或者 LOCAL选项指定检查的程度:

①WITH CASCADED CHECK OPTION:检查所有的视图

例如:嵌套视图及其底层的视图

②WITH LOCAL CHECK OPTION:只检查将要更新的视图本身

对嵌套视图不检查其底层的视图

mysql数据库视图_MySQL数据库8(二十)视图相关推荐

  1. 零基础带你学习MySQL—foreign key 外键(二十六)

    零基础带你学习MySQL-foreign key 外键(二十六) -- 外键演示 -- 创建 主表 my_class CREATE TABLE my_class ( id INT PRIMARY KE ...

  2. 零基础带你学习MySQL—not null 非空(二十四)

    零基础带你学习MySQL-not null 非空(二十四)

  3. mysql数据库视图_MySQL数据库应用总结(九)—MySQL数据库视图的操作

    SQL语法预览: 创建视图:[create [or replace] [algorithm={undefined | merge | temptable}] view 视图名称(属性列) as sel ...

  4. 查询mysql视图_MySQL数据库简介及常用命令

    MySQL简介: 1.MySQL发展史:MySQL是my ess que ell而不是myseqel.开发者是瑞典的MySQL AB公司的monty widenius,2008年被sun公司收购,09 ...

  5. mysql数据库财务_MySQL数据库——从入门到删库跑路(二)

    DQL 查询表中的记录 select .... from ..... 语法 select 需要查询的信息(列名1,列名2,.......列名n) / * from 表名 [where 条件]; 完善下 ...

  6. mysql数据库应用_MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库 查看所有数据库:SHOW DATABASES 创建数据库:CREATE DA ...

  7. mysql 企业数据库设计_MySQL数据库设计

    MYSQL数据库设计规范 1.数据库命名规范 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确(长度不能超过30个字符); 例如:user, stat ...

  8. mysql权限表_MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据 ...

  9. mysql合集_Mysql数据库知识点合集

    一.Mysql数据库的操作命令 1.登录:mysql -h 服务器地址 -u 登录名 -p 密码 mysql -h 127.0.0.1 -u root -p root 2.数据库备份:mysqldum ...

最新文章

  1. 如何kill同一个应用的所有进程
  2. 网站盈利模式分析总结十条(转载)
  3. jdbc_servlet基础增删改分页2(userinfo表的)
  4. 大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
  5. python与正则表达式(part3)--贪婪模式和非贪婪模式
  6. 中点坐标公式 矩形_压轴题必备|中考数学“动点坐标”问题,这个万能解法人人都能学会!...
  7. 仿ios桌面vivo_流畅就是跑分高?vivo选择说不,用这款杀器终结国产手机内卷
  8. HDU 2844 Coins 多重背包
  9. “非死不可”Facebook
  10. centos中安装配置nginx完成之后主机无法访问
  11. Win11怎么安装语音包?Win11语音包安装教程
  12. Windows 驱动开发 之 WinDbg调试(一)
  13. visual studio 提高速度的选项
  14. html 弹窗实现拖拽,原生js实现自由拖拽弹窗代码demo
  15. nexus5 博通芯片WIFI详解 (3)
  16. 用Python绘制条形图
  17. 如何实现在Linux上一键安装虚拟机(从入门到脚本自动化安装)
  18. Latex系列(四)---论文图片排版
  19. 天地不仁,通货在膨胀
  20. 视频压缩发微信朋友圈怎么弄

热门文章

  1. Scheme学习系列一 :源码安装Gambit
  2. WireShark帧格式解析
  3. Android 循环缓冲区
  4. 树莓派之安装dlna服务
  5. 图像处理自学(三):CAMERAM处理流程总结
  6. linux命令大全-比较常用的
  7. python调用soap_如何在python zeep中调用soap api而不使用wsdl(非wsdl模式)?使用用户和密码身份验证调用位置URL...
  8. pythonopencv算法_OpenCV3-Python基于Kalman和CAMShift算法应用
  9. linux系统下安装游戏,在Linux系统下安装GameHub来管理所有游戏
  10. c语言字符串去除第一个和最后一个_387. 字符串中的第一个唯一字符