目录

1.简单化

2.安全性

3.逻辑数据独立性

【任务5.1】使用语句创建视图

1.创建视图

2.视图的规则和限制

【任务5.2】修改视图

1.使用create or replace view语句修改视图

2.使用alter语句修改视图

【任务5.3】利用视图更新数据表

1.使用update语句更新视图

2.使用insert语句更新视图

3.使用delete语句更新视图

【任务5.4】删除视图

END


视图是从一个或多个表中导出来的表,它是一种虚拟存在的表,并且表的结构和数据都依赖于基本表,通过视图不仅可以看到存放在基本表中的数据,还可以像操作基本表一样,对试图中存放的数据进行查询、修改和删除。与直接操作基本表相比,视图具有以下优点。

1.简单化

视图不仅可以简化用户对数据的理解,也可以简化对数据的操作。那些被经常使用的查询定义为视图,从而使用户在以后的操作中不必每次都指定全部的条件。

2.安全性

通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据是看不到的。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行和列上。

3.逻辑数据独立性

视图可以帮助用户屏蔽真实表结构变化带来的影响。

【任务5.1】使用语句创建视图

1.创建视图

视图中包含了select的查询结果,因此视图的创建基于select语句和已存在的数据表。视图可以建立在一张表上,也可以建立在多张表上。在mysql中创建视图使用create view语句,其基本语法格式为:

create [or replace] [algorithm = {undefined | merge | temptable}]

view [view_name [(column_list)]]

as [select_statement]

[with [cascaded | local] check option]

在上述语法格式中,每个部分的含义如下:

create:表示创建视图的关键字,上述语句能创建新的视图。

or replace:如果给定了此子句,表示该语句可以替换已有视图。

algorithm:可选项,表示视图选择的算法。

undefined:表示mysql将自动选择所要使用的算法。

merge:表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。

temptable:表示将视图的结果存入临时表,然后使用临时表执行语句。

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

column_list:可选项,表示字段名清单。指定了视图中各个字段名,默认情况下,与select语句中查询的字段名相同。

as:表示指定视图要执行的操作。

select_statement:一个完整的查询语句,表示从某个表或视图中查出某些满足条件的记录,将这些记录导入视图中。

with check option:可选项,表示创建视图时要保证在该视图的权限范围之内。

cascade:可选项,表示创建视图时,需要满足与该视图有关的所有相关视图和表的条件,该参数为默认值。

local:可选项,表示创建视图时,只要满足该视图本身定义的条件即可。该语句要求具有针对视图的create view权限,以及针对由select语句选择的每一列上的某些权限,对于在select语句中其他地方使用的列,必须具有select权限。如果还有or replace子句,必须在视图上具有drop权限。

视图属于数据库。在默认情况下将在当前数据库创建新视图。要想在给定数据库中明确创建视图,创建时应将名称指定为:database_name.view_name。

2.视图的规则和限制

创建视图前,应该知道它的一些规则。视图创建和使用最常见的规则和限制如下。

①与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名称)。

②对于可以创建的视图数目没有限制。

③为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。

④视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。

⑤order by可以用在视图中,但如果在该视图检索数据select中也含有order by,那么该视图中的order by将被覆盖。

⑥视图不能索引,也不能有关联的触发器或默认值。

⑦视图可以和表一起使用。例如编写一条连接表和视图的select语句。

【任务5.2】修改视图

修改视图是指修改数据库中存在的视图,例如,当基本表的某些字段发生变化时,可以通过修改视图的方式来保持视图与基本表的一致性。在MySQL中,可以通过create or replace view语句和alter语句来修改视图。

1.使用create or replace view语句修改视图

在MySQL中,使用create or replace view语句修改视图,其语法格式为:

create [or replace] [algorithm = {undefinded|merge|

temptable}]

view view_name [(column_list)]

as select_statement

[with [cascaded|local]check option]

可以看到修改视图的语句和创建视图的语句完全是一样的。如果视图已经存在,那么使用修改语句对视图进行修改;如果视图不存在,那么将创建一个新视图。

2.使用alter语句修改视图

alter语句是MySQL提供的另外一种修改视图的方法,其修改视图的语法格式为:

alter [algorithm = {undefined|merge|temptable}]

view view_name[(column_list)]

as select_statement

[with[cascaded|local]check option]

【任务5.3】利用视图更新数据表

更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。当通过视图更新数据时,其实是在更新基本表中的数据,如果对视图增加或删除记录,实际上是对基本表增加或删除记录。视图更新主要有3种方法:update、insert、delete。

1.使用update语句更新视图

在MySQL中,可以使用update语句对视图中原有的语句进行更新。

2.使用insert语句更新视图

在MySQL中,可以使用insert语句对视图中的基本表插入一条记录。

3.使用delete语句更新视图

在MySQL中,可以使用delete语句对视图中的基本表删除部分记录。

需要注意的是,尽管更新视图有多种方式,但并非所有情况下都能执行视图的更新操作。当视图中包含如下内容时,视图的更新操作将不能被执行。

(1)视图中不包含基本表中被定义为非空的列。

(2)在定义视图的select语句后的字段列表中使用了数学表达式。

(3) 在定义视图的select语句后的字段列表中使用了聚合函数。

(4)在定义视图的select语句中使用了distinct、union、limit、group by或having子句。

【任务5.4】删除视图

当视图不在需要时,可以将其删除,删除视图时,只会删除视图的定义,不会删除数据。删除一个或多个视图可以使用drop view语句,其基本语法格式为:

drop view [if exists] view_name [,view_name]... {restrict|cascade};

其中,“view_name”是要删除的视图名称,可以添加多个需要删除的视图名称,各个名称之间使用逗号分隔开。删除视图必须拥有drop权限。

END

数据库总结(五):创建与使用视图相关推荐

  1. [数据库实战]sql创建一个view视图

    CREATE OR REPLACE VIEW post_user AS SELECTposts.* ,users."name" FROMposts left join users ...

  2. 数据库笔记10:创建与管理视图

    /***********************  第十单元 创建与管理视图 ************************/ /*  为什么需要视图?参看教材P198~200  视图:是基于一张或 ...

  3. Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询

    Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开 ...

  4. 第五章总结(创建与使用视图)

    视图是一种虚拟存在的表,表的结构和数据都依赖于基本表,通过视图不仅可以看到存放在基本表中的数据,还可以像操作基本表一样,对视图中存放的数据进行查询.修改和删除. 视图具有以下优点:1.简单化 2.安全 ...

  5. 项目五总结 创建与使用视图

    .创建视图         视图中包含了SELECT查询的结果,因此视图的创建基于SELECT语句和已存在的数据表.视图可以建立在一张表上,也可以建立在多张表上.在MySQL中,创建视图使用CREAT ...

  6. 数据库实验:数据库和表、查询、视图与安全性、存储过程及游标、触发器、综合实验-水果商店进阶

    数据库实验:数据库和表.查询.视图与安全性.存储过程及游标.触发器.综合实验-水果商店进阶 实验一.数据库和表 源码1: 源码2: 小结 实验二.查询 源码 小结 实验三.视图.安全性 源码: 小结 ...

  7. 数据库实验报告 创建学生关系数据表、课程表、选课表 SQL Kingbase

    一.实验题目 已有条件:Kingbase数据库软件包. 要求:请安装Kingbase数据库软件,在数据库软件中创建一个自己名字的模式,在该模式下创建学生关系数据表.课程表.选课表. 插入一些数据,尝试 ...

  8. mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句

    实验十报告 创建视图 实验目的 1.掌握创建视图的SQL语句的用法. 2.掌握使用企业管管理器创建视图的方法. 3.掌握使用创建视图向导创建视图的方法. 4.掌握查看视图的系统存储过程的用法. 5.掌 ...

  9. 梅科尔工作室-DjangoWeb 应用框架+MySQL数据库第五次培训

    目录 前言 1.App 登录请求与实现 1.1.views.py连接数据库 1.2.前端编程 1.2.建表(不依赖DJango) 1.3.后端编程 2.效果展示 总结 前言 本文记录梅科尔工作室IoT ...

最新文章

  1. [C] [最短路] 只有5行的算法:Floyd-Warshall
  2. window mysql proxy_window下mysql-proxy简单使用
  3. 求n个数的最大公因数和最小公倍数(c)
  4. poi报空指针_POI 导出文件 报空指针异常 --Docker 中
  5. ES6学习笔记(二十二)ArrayBuffer
  6. CCNA学习与实验指南(640-802)
  7. python单元测试mock_单元测试-具有多次调用方法的Python Mock对象
  8. mysql数据库as表恢复_【翻译】如何从ibdata和.frm文件恢复MySQL表数据
  9. 理解jQuery的 $ 和 $( )的含义
  10. nfine框架连接oracle,nfine(nfine快速开发框架)
  11. C2P工业云进销存管理有什么优势?
  12. 第一章 MapReduce概述
  13. 12 个追地铁的人:照亮生活的一次追逐
  14. Centos7安装字体全过程
  15. 全球游戏收入将随着电影电视改编作品的不断增多而达到惊人水平 | 美通社头条...
  16. dividing(多重背包)
  17. 电脑的硬件和软件分别是什么
  18. AB实验平台:为什么AB实验平台必不可少?
  19. 郭德纲对18岁郭麒麟说的话,江湖阅历,字字珠玑,堪称郭氏家训
  20. 计算机多媒体对语文教学的提高,语文教学中多媒体教学运用心得

热门文章

  1. 基于android 平台的校园二手物品交易系统设计与实现
  2. tomcat处理html流程,基于Tomcat运行HTML5 WebSocket echo实例详解
  3. crc16校验c语言单片机实现,三种常用的CRC16校验算法的C51程序的优化
  4. 笔记本电脑关上盖子锁定计算机,教大家笔记本电脑合上盖子后如何自动锁定电脑...
  5. burpsuit 抓取https包,证书问题,此证书已在此前安装为一个证书权威机构
  6. k30pro杀进程严重怎么解决_iPhonex发烫严重不开机怎么办?苹果X开机不充电关机充电解决办法...
  7. 内部UML培训文件,欢迎大家批评指正
  8. python爬虫学习笔记一:网络爬虫入门
  9. 世界上最全的解酒方法
  10. 块级、内联、内联块级