IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL学习笔记(11)——创建视图 -> 正文阅读

[大数据]MySQL学习笔记(11)——创建视图

11. 视图

11.1 创建视图

创建视图的语法
创建视图使用CREATE VIEW语句,基本语法格式如下:

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

其中,CREATE表示创建新的视图;REPLACE表示替换已经创建的视图;ALGORITHM表示视图选择的算法;view_name为视图的名称,column_list为属性列;SELECT_statement表示SELECT语句;WITH [CASCADED | LOCAL] CHECKOPTION参数表示视图在更新时保证在视图的权限范围之内。
ALGORITHM的取值有3个,分别是UNDEFINED |MERGE | TEMPTABLE。其中,UNDEFINED表示MySQL将自动选择算法;MERGE表示将使用的视图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分;TEMPTABLE表示将视图的结果存入临时表,然后用临时表来执行语句。
CASCADED与LOCAL为可选参数,CASCADED为默认值,表示更新视图时要满足所有相关视图和表的条件;LOCAL表示更新视图时满足该视图本身定义的条件即可。
该语句要求具有针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限。如果还有OR REPLACE子句,必须在视图上具有DROP权限。

  • 在单表上创建视图
    【例】在t表上创建一个名为view_t的视图,代码如下:
# 首先创建基本表并插入数据
create table t(quantity INT,price int);
insert into t values(3,50);
# 创建视图语句为:
create VIEW view_t as select quantity, price , quantity*price from t;

【例】在t表格上创建一个名为view_t2的视图,代码如下:

create view view_t2(qty,price,total) as select quantity,price,quantity *price from t;
  • 在多表上创建视图
    【例】在表student和表stu_info上创建视图stu_glass,代码如下:
create view stu_glass (id,name,glass) as select student.s_id,student.name,stu_info.glass
from student,stu_info where student.s_id=stu_info.s_id;

11.2 查看视图

查看视图是查看数据库中已存在的视图的定义。查看视图必须要有SHOW VIEW的权限,MySQL数据库下的user表中保存着这个信息。查看视图的方法包括DESCRIBE、SHOW TABLE STATUS和SHOW CREATE VIEW。

  • 使用DESCRIBE语句查看视图基本信息
    describe/desc 视图名;
    【例】通过DESCRIBE语句查看视图view_t的定义,代码如下
DESCRIBE view_t;
  • 使用SHOW TABLE STATUS语句查看视图基本信息
    show table status like '视图名'
    【例】使用SHOW TABLE STATUS命令查看视图信息,代码如下:
show table status like 'view_t' \G
  • 使用SHOW CREATE VIEW语句查看视图详细信息
show create view view_t \G
  • 在views表中查看视图详细信息
    select *from infromation_schema.views

【例】在views表中查看视图的详细定义,代码如下:

select *from infromation_schema.views

11.4 修改视图

  • 使用CREATE OR REPLACE VIEW语句修改视图
create [or replace] [algorithm={undefined|merge|TEMPTABLE}]
VIEW view_name [(column_list)]
as select_statement
[with[cascaded|local]check option]

修改视图的语句和创建视图的语句是完全一样的。当视图已经存在时,修改语句对视图进行修改;当视图不存在时,创建视图。下面通过一个实例来说明。

【例】修改视图view_t,代码如下:

create or replace view ciew_t as select * from t;
  • 使用ALTER语句修改视图’
alter [algorithm={undefined|merge|TEMPTABLE}]
VIEW view_name [(column_list)]
as select_statement
[with[cascaded|local]check option]

【例】使用ALTER语句修改视图view_t,代码如下:

alter view view_t as select quantity from t;

11.5 更新视图

  • UPDATE
    【例】使用UPDATE语句更新视图view_t,代码如下:
update view_t set quantity=5;

对视图view_t更新后,基本表t的内容也更新了,同样当对基本表t更新后,另外一个视图view_t2中的内容也会更新。

  • INSERT
    【例】使用INSERT语句在基本表t中插入一条记录,代码如下:
insert into t values(3,5);

向表t中插入一条记录,通过SELECT查看表t和视图view_t2,可以看到其中的内容也跟着更新,视图更新的不仅仅是数量和单价,总价也会更新。
【例】使用DELETE语句删除视图view_t2中的一条记录,代码如下:

delete from view_t2 where price=5;

在视图view_t2中删除price=5的记录,视图中的删除操作最终是通过删除基本表中相关的记录实现的,查看删除操作之后的表t和视图view_t2,可以看到通过视图删除其所依赖的基本表中的数据。

当视图中包含有如下内容时,视图的更新操作将不能被执行:
(1)视图中不包含基表中被定义为非空的列。
(2)在定义视图的SELECT语句后的字段列表中使用了数学表达式。
(3)在定义视图的SELECT语句后的字段列表中使用聚合函数。
(4)在定义视图的SELECT语句中使用了DISTINCT、UNION、TOP、GROUP BY或HAVING子句。

11.6 删除视图

当视图不再需要时,可以将其删除。删除一个或多个视图可以使用DROP VIEW语句
DROP VIEW [IF EXIST] view_name [,view_name]... [RESTRICT|CASCADE]

【例】删除stu_glass视图,代码如下:

drop view if exists stu_glass;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:11:03  更:2021-11-25 08:11:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:50:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码