2019独角兽企业重金招聘Python工程师标准>>>

  • 视图的基本介绍

概念:

视图是一个虚拟的表,外观和行为上与类似,但是不需要实际的物理存储,它只是从表里引用数据

作用:

a、使用视图来简化数据访问

例如用户不知道如何去数据库使用结合获取数据时,创建一个视图来包含表的结合,让用户可以从这个视图获取数据

b、使用视图作为一种安全形式

例如一张表里有敏感信息,比如薪水,身份证等,姓名,年龄等,可以创建一个视图只包含姓名、年龄非敏感信息

c、使用视图维护摘要数据

  • 创建视图

语法

CREATE VIEW  view_name AS
SELECT column1,column2
FROM table_name
WHERE [condition]

案例

由CUSTOMERS 表创建名字、年龄字段的视图

CREATE VIEW CUSTOMERS_VIEW AS
SELECT NAME,AGE
FROM CUSTOMERS

可以像普通的数据表一样查询

SELECT *
FROM CUSTOMERS_VIEW

注:

视图可以从一个、多个表或者视图中被创建,语法都是类似的,基础数据的表或者视图被删除,上层的全部视图都不能使用了

  • WITH CHECK OPTION

WITH CHECK OPTION 是一个 CREATE VIEW 语句的一个可选项,用于保证所有的 UPDATE 和 INSERT 语句都满足视图定义的条件,如果不满足则会返回错误

案例

--创建一个视图,但是 WITH CHECK OPTION是打开的
CREATE VIEW COUSTOMERS AS
SELECT NAMEAGE
FORM CUSTOMERS
WHERE AGE IS NOT NULL
WITH CHECK OPTION
-- AGE字段不能为 NULL
-- AGE字段不能为 NULL

注:

在基于视图创建另一个视图时, WITH CHECK OPTION有两个选线

1、默认选项CASCADE,其是 ANSI标准语法,但Micsoft SQL Server 和 Oracle稍有不同的CASCADE关键字,该项会选择所有底层视图、所有完整性约束,以及新视图的定义条件,因此使用CASCADED选项创建视图是更安全的做法,基表的引用完整性也得到保护

2、LOCAL 选项只检测两个视图的完整性约束和新视图的定义条件,不检查底层的表

  • 从视图创建表

可以从视图创建一个表,就像从一个表创建另一个表(或从一个视图创建另一个视图)一样

语法

CREATE TABLE TABEL_NAME AS
SELECT COLUMN1,COLUMN2
FROM VIEW_NAME
[WHERE CONDITION1 [,CONDITION2]
[OREDER BY]

表与视图的主要区别在于表包含实际的数据、占据物理存储空间,而视图不包含数据,而且值需要保存视图定义(查询语句)

  • 视图与ORDER BY 子句

CREATE VIEW 语句里不能包含 ORDER BY 子句,但是GROUP BY子句用于CREATE VIEW 语句时,可以起到类似 ORDER BY 子句的作用

CREATE VIEW NAME AS
SELECT COLUMN1,COLUMN2
FROM TABLE
GROUP BY COLUMN2,COLUMN1
  • 通过视图更新数据

在一定的条件下,视图底层数据可以进行更新

书籍介绍

a、视图不包含结合

b、视图不包含 GROUP BY 子句

c、视图不包含 UNION 语句

d、视图不包含任何组函数

e、不能使用 DISTINCT 子句

f、WHERE 子句包含的嵌套的表表达式不能与 FROM 子句引用同一个表

g、视图可执行 INSERT、UPDATE和DELETE等语句

另外一种说法

a、SELECT 子句不能包含 DISTINCT 关键字

b、SELECT 子句不能包含任何汇总函数(summary functions)

c、SELECT 子句不能包含任何集合函数(set functions)

d、SELECT 子句不能包含任何集合运算符(set operators)

e、SELECT 子句不能包含 ORDER BY 子句

f、FROM 子句中不能有多个数据表

g、WHERE 子句不能包含子查询(subquery)

h、查询语句中不能有 GROUP BY 或者 HAVING

i、计算得出的列不能更新

j、视图必须包含原始数据表中所有的 NOT NULL 列,从而使 INSERT 查询生效

  • 删除视图

DROP VIEW 命名用于从数据库里删除视图,它有两个选项

1、RESTRICT 如果这选项进行删除操作,而其他视图在约束里有所引用,删除操作就会出错

2、CASCADE 选项,而且其他视图或约束被引用,DROP VIEW 也会成功,而且底层的视图或约束也会被删除

语法

DROP VIEW NAMES2
  • 异名

就是表和视图的另一个名称,异名可以创建为 PUBLIC 或 PRIVATE,PUBLIC的异名可以被数据库里的其他用户使用,而PRIVATE异名只能被所有者和拥有权限的用户使用

语法

CREATE [PUBLIC|PRIVATE] SYNONYM SYNONYM_NAME FOR TABLE|VIEW

案例

--为表创建一个异名
CREATE SYNONYM CUST FOR CUSTOMER_TBL
SELECT  CUST_NAME
FORM CUST
  • 删除异名

语法

DROP [PUBLIC|PRIVATE] SYNONYM SYNONYM_NAME

案例

DROP SYNONYM CUST

异名并不属于ANSI SQL标准,MySQL不支持异名,但我们可以使用视图来实现同样的同年

转载于:https://my.oschina.net/u/1785519/blog/1566350

创建和使用视图及异名相关推荐

  1. SwiftUI之深入解析如何创建列表展示视图和列表如何导航跳转新页面

    一.前言 地标详情页视图已经创建完成,我们需要提供一种方式让用户可以查看完整的地标列表,并且可以查看每一个地标的详情.地标详情页视图的创建,请参考我的博客:SwiftUI之深入解析如何创建和组合视图. ...

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

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

  3. 创建前缀一样的文件_Win10更快速创建或重命名仅扩展名文件

    IT之家2月26日消息 在Windows 10 19H1和20H1预览版本中,微软在文件资源管理器中添加了一项新功能,允许用户更快更方便地创建和重命名仅扩展名文件. Windows 10版本1903/ ...

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

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

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

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

  6. 数据库总结(五):创建与使用视图

    目录 1.简单化 2.安全性 3.逻辑数据独立性 [任务5.1]使用语句创建视图 1.创建视图 2.视图的规则和限制 [任务5.2]修改视图 1.使用create or replace view语句修 ...

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

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

  8. mysql视图之创建可更新视图

    我们知道,在mysql中,视图不仅是可查询的,而且是可更新的.这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行. 另外,我们还可以使用delete语句通过视图删除底层 ...

  9. 项目5 创建与使用视图

    1.简单化 视图不仅可以简化用户对数据的理解,也可以简化对数据的操作.那些被经常使用的查询定义为视图,从而使用户在以后的操作中不必每次都指定全部的条件. 2.安全性 通过视图用户只能查询和修改他们所能 ...

  10. 存储过程创建(过程、视图、函数)

    存储过程.视图.函数创建 1存储过程创建 2视图创建 3函数创建 1存储过程创建 //if进行判断过程名是否存在 存在删除 if exists (select * from dbo.sysobject ...

最新文章

  1. java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)
  2. 图解Detour安装及简单使用实例(Win7+VC6)
  3. 世界科学技术通史_全球科技通史
  4. Xcode添加include目录
  5. SAP BW 例程(Routine)【开始例程、关键值或特性的例程、结束例程】
  6. mysql redis binlog_基于binlog的canal到redis的同步
  7. 计算机技术复试新浪微博,四川大学计算机学院复试经验交流
  8. jeecms mysql_JeeCms的环境搭建 | 学步园
  9. 渗透测试漏洞利用入门总结
  10. RK3308 WIFI驱动调试
  11. oracle bom递归查询,求多阶BOM查询代码
  12. IDEA的下载和安装
  13. 机器学习入门 01 —— 机器学习概述
  14. 基于OSG的虚拟校园系统的设计与实现
  15. excel共享文件使用一段时间后变大的解决方案
  16. Frontpage2003sp2使用教程
  17. 六顶思考帽——培训总结
  18. informatica客户端连接报错pcsf_46008
  19. inkscape如何裁剪_Inkscape进阶教程
  20. Photo Album: 2008年6月泰康路田子坊-时尚与世俗并存

热门文章

  1. 三维卷积伪代码_用于视频超分辨率的可变形三维卷积
  2. 在vue中实现picker样式_vue mint-ui学习笔记之picker的使用
  3. c语言注释部分两侧的分界符号分别是,C语言习题及解答.doc
  4. ajax 循环php数组,jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
  5. 使用idea搭建Maven+SSM(Spring+SpringMVC+Mybatis)框架(一、使用Maven创建新工程)
  6. LINQToSQL中如何更好的手动设置导航字段,并返回实名类型而不是匿名类型
  7. 优秀的UI/UX设计师需要具备哪些技能?
  8. 微软职位内部推荐-Sr SDE-MOD-Beijing
  9. Maxthon中RSS阅读器BUG解决[原创]
  10. 浪涌保护器ant120_浪涌保护器测试流程