MySQL 数据库中的视图

2023-11-07

大家好,作为一名互联网行业的小白,写博客只是为了巩固自己学习的知识,但由于水平有限,博客中难免会有一些错误出现,有不妥之处恳请各位大佬指点一二!
博客主页:链接: https://blog.csdn.net/weixin_52720197?spm=1018.2118.3001.5343

1. 创建视图

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

其中:
create view:为创建视图所使用的关键字;

or replace:可选项,若给定了 or replace,则表示新视图将会覆盖掉数据库中同名的原有视图。

algorithm:可选项,表示视图选择的执行算法;

undefined:表示 MySQL 会自动选择视图的执行算法,当用户创建视图时,MySQL默认使用一种 undefine 的处理算法,即在 merge 和 temptable 两种算法中自动选择其中
的一种;

merge:视图的执行算法之一,这种算法会将引用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;

temptable:视图的执行算法之一,这种算法会将视图的结果置于临时表中,然后使用该临时表执行语句;

view_name:表示将要创建的视图名称;

column_list:可选项,表示视图中的字段列表;如果不指定字段列表,也就是默认情况下,该字段列表与 select 子句中指定的字段列表相同;

as:用于指定视图要执行的操作;

select_statement:表示一条完整的查询语句,通过该查询语句可从若干张张表或其它的视图中查询到满足条件的记录,这些记录就是视图中的数据;

with check option:可选项,用来限制插入或更新到视图中的记录;

cascaded:表示更新视图时需要满足与该视图相关的所有视图和表的条件。没有指明时,该参数为默认值;

local:表示更新视图时只要满足该视图本身定义的条件即可。在创建视图时,用户不仅需要有 CREATE VIEW 权限,还需要有查询所涉及数据的SELECT 权限;如果要查看视图还需要有 SHOW VIEW 权限;如果使用 CREATE ORREPLACE,则还需要 DROP 权限;如果使用 ALTER VIEW,则需要 SUPER 权限。

1.1. 单表上创建视图

create view view1_emp
as select empno, ename, job, mgr, hiredate, deptno from emp;

1.2.多表上创建视图

create view view2_emp
as select e.empno, e.ename, e.job, d.deptno, d.dname, d.loc
from emp e inner join dept d
on e.deptno=d.deptno;

1.3.其他视图上创建视图

create view view3_emp
as select empno, ename, job, deptno, dname from view2_emp
where loc='New York';

2.查看视图

2.1. SHOW TABLES 语句查看视图

show tables;

2.2. SHOW TABLE STATUS 语句查看视图

show table status [{from | in} db_name] [like 'pattern'];

其中,“show table status”为查看视图详细信息所使用的固定语法格式;
“dp_name”可选项,表示要查询视图所在数据库的名称,如果省略该项,则表示在当前数据库中查找视图;
“like”进行视图名称匹配时所用的关键字;
“pattern”在此可以理解为要查询的视图名称,视图名称要用单引号引起来;
“like 'pattern'”为可选项,如果省略该项则会查询指定或默认数据库中所有的表和视图。

2.3. DESCRIBE 语句查看视图

describe view_name;

或者我们可以使用简写的方式,如下所示:

desc view_name;
其中“describe”为查看视图设计信息的固定语法格式,可以简写为“desc”;
“view_name”为要查看的视图的名称。

2.4. SHOW CREATE VIEW 语句查看视图

show create view view_name;
其中“show create view”为查看视图定义信息所使用的固定语法结构;“view_name”为要查看的视图名称。

3.修改视图

3.1.CREATE OR REPLACE 语句修改视图

create or replace view view1_emp
as select ename, job, mgr, hiredate, deptno from emp;

3.2.ALTER VIEW 语句修改视图

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

将 view1_emp 视图中的 hiredate 字段隐藏掉

4.删除视图

drop view [if exists]
view_name1 [, view_name2] ...

其中,“drop view”为删除视图所使用的固定语法;“if exists”可选项,如果给定
该项,可以保证即使指定要删除的视图有的不存在,系统也不会提示错误,而是只删除存在
的视图,如果省略该项,那么如果指定要删除的视图有的不存在,系统会提示错误,但是仍
然会删除存在的视图;“view_name1”和“view_name2”表示要删除的视图名称,可以
添加多个,各个名称之间使用逗号隔开。

5.更新视图

5.1.使用 INSERT 语句更新视图

insert into view1_emp values (000, 'Tom', 'analyst', 7566, '182-6-12', 20);

5.2.使用 DELETE 语句更新视图

【示例】使用 DELETE 语句更新视图

delete from view1_emp where ename='Tom';

【示例】使用 SELECT 语句查看 view1_emp 视图中是否已经删除数据

select * from view1_emp where deptno=20;

【示例】使用 SELECT 语句查看 emp 表中是否已经删除数据

select * from emp where deptno=20;

5.3. 使用 UPDATE 语句更新视图

【示例】使用 UPDATE 语句更新视图

update view1_emp set job='analyst' where ename='Smith';

【示例】使用 SELECT 语句查看 view1_emp 视图中是否已经修改数据

select * from view1_emp where ename='Smith';

【示例】使用 SELECT 语句查看 emp 表中是否已经修改数据

select * from emp where ename='Smith';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 数据库中的视图 的相关文章

随机推荐

  • javascript模块化理解(通俗易懂)

    http www ruanyifeng com blog 2012 10 javascript module html http www ruanyifeng com blog 2012 10 asynchronous module def
  • epoll多路复用-----epoll_create1()、epoll_ctl()、epoll_wait()

    include
  • 虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结

    PCG真好玩 门槛很低 天花板很高 文章目录 前言 1 基本撒点 1 1 Landscape上撒点 1 2 使用射线检测在地表面撒点 1 3 使用曲线撒点 1 3 1 沿曲线撒点 1 3 2 在闭合曲线内部撒点 1 4 在StaticMes
  • 液晶LCD1602使用介绍

    液晶LCD1602简介 LCD1602液晶也叫1602字符型液晶模块 LCD1602液晶是一种专门用来显示字母 数字 符号的点阵型液晶模块 LCD1602液晶是由若干个5x7点阵字符位组成 每个点阵字符位都可以显示一个字符 包括字母 数字
  • Elasticsearch更新语法

    文章目录 update 语法 示例 数值计算 add列表元素 remove列表元素 add字段 remove字段 delete文档 detect noop upsert更新 新增 scripted upsert doc as upsert
  • python读取二进制文件并画图_使用Python读取二进制文件的实例讲解

    目标 目标文件为一个float32型存储的二进制文件 按列优先方式存储 本文使用Python读取该二进制文件并使用matplotlib pyplot相关工具画出图像 工具 Python3 matplotlib os struct numpy
  • 理解深度学习中的学习率

    学习率是最影响性能的超参数之一 如果我们只能调整一个超参数 那么最好的选择就是它 相比于其它超参数学习率以一种更加复杂的方式控制着模型的有效容量 当学习率最优时 模型的有效容量最大 从手动选择学习率到使用预热机制 本文介绍了很多学习率的选择
  • 渲染富文本编辑器并设置富文本编辑器的高度

    目标 富文本编辑器 vue quill editor 的基本使用 vue quill editor npm 一 渲染富文本编辑器 运行如下的命令 在项目中安装富文本编辑器 npm i vue quill editor 3 0 6 S 在项目
  • 关于android指纹识别兼容6.0以下版本

    指纹识别功能以及兼容6 0以下的版本 刚好公司安全问题用到了指纹识别和人脸识别 下面就介绍一下指纹识别的功能 其实看了源码要实现这个挺简单的 其实要使指纹识别功能能兼容6 0以下的版本主要是用FingerprintManagerCompat
  • java自学笔记1:java中的类

    一 1 类的重要性 所有java程序都以class为组织单元 2 什么是类 类是模子 确定对象将会y拥有的特征 属性 和行为 方法 3 类的组成 属性和方法 4 定义一个类的步骤 a 定义类名 b 编写类的属性 c 编写类的方法 publi
  • 如何在html中加入视频

    第一步 首先下载video js 百度一下就能找到 这个是下载后的目录 第二步 先把要用到的js css swf都加载到html页面上 如 第三步 加入下面的代码
  • 源根‘E:\XXX’在模块‘项目名’中重复

    解决办法 新建一个文件夹存储项目 然后打开新建好的项目 就没有报错了
  • stem课程方案

    现在人们开始关注孩子的STEM教育 为了推动这一新的教育发展势头 父母可以在激发孩子关于STEM教育及其专业可能性方面发挥重要作用 在孩子的stem教育上 父母究竟应该怎么做呢 格物斯坦小坦克来告诉你 发现孩子天生的亲和力和学习能力 每个孩
  • Unicode转Utf-8. C++ 中文字符串比较

    c 中如何比较中文字符串 假如通过TCP UDP从其他地方传过来一个UTF 8编码的中文字符串 现在需要你判断这个字符串是否是你想要的 之前的尝试 std string recv data std string my string 字符串
  • 关于数据生成二维码保存和解密删除二维码

    文章目录 前言 一 pom配置依赖 二 文件引入 1 BufferedImageLuminanceSource 2 QRCodeUtil 3 MyPicConfig 4 UploadUtils 三 测试 前言 所需文件 MyPicConfi
  • 荣耀总裁赵明:年轻人拖着世界往前走

    有限的资源聚焦一个领域 才能在纵深上发展 一点的突破可以带动一个行业的发展 赵明在演讲中提到 自认资源有限的荣耀 找准了两个基点 一个是年轻人 一个是科技 两者间相互映照 年轻人更易于接受 也更热爱科技 科技在年轻人身上会出现更强的化学反应
  • 卡诺图简单逻辑化简与五变量卡诺图化简

    一 格雷码编码规则 画卡诺图的时候需要先将所有变量可能以格雷码的形式排列在方格两侧 所有变量有2 n个 虽然我们常用的变量为四个及以下 可以熟记格雷码 但为了学习还是有必要了解格雷码的编码规则 格雷码的基本特点就是任意两个相邻的代码只有一位
  • 什么?强化学习竟然来源于心理学?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由罗晖发表于云 社区专栏 1 Google的DQN论文 2015年2月 Google在Nature上发表了一篇论文 见附件 Human level control through
  • GO语言网络编程(并发编程)Sync

    GO语言网络编程 并发编程 Sync 1 Sync 1 1 1 sync WaitGroup 在代码中生硬的使用time Sleep肯定是不合适的 Go语言中可以使用sync WaitGroup来实现并发任务的同步 sync WaitGro
  • MySQL 数据库中的视图

    大家好 作为一名互联网行业的小白 写博客只是为了巩固自己学习的知识 但由于水平有限 博客中难免会有一些错误出现 有不妥之处恳请各位大佬指点一二 博客主页 链接 https blog csdn net weixin 52720197 spm