龙空技术网

MySQL面试题-视图

newer大侠 88

前言:

现在你们对“视图不可更新因为可能会影响多个基本视图吗”大约比较讲究,小伙伴们都想要分析一些“视图不可更新因为可能会影响多个基本视图吗”的相关资讯。那么小编同时在网络上搜集了一些对于“视图不可更新因为可能会影响多个基本视图吗””的相关知识,希望姐妹们能喜欢,小伙伴们快快来了解一下吧!

1. 为什么要使用视图?什么是视图?

为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。

视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。

2. 视图有哪些特点?

视图的特点如下:

· 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。

· 视图是由基本表(实表)产生的表(虚表)。

· 视图的建立和删除不影响基本表。

· 对视图内容的更新(添加,删除和修改)直接影响基本表。

· 当视图来自多个基本表时,不允许添加和删除数据。

视图的操作包括创建视图,查看视图,删除视图和修改视图。

3. 视图的使用场景有哪些?

视图根本用途:简化sql查询,提高开发效率。如果说还有另外一个用途那就是兼容老的表结构。

下面是视图的常见使用场景:

· 重用SQL语句;

· 简化复杂的SQL操作。在编写查询后,可以方便的重用它而不必知道它的基本查询细节;

· 使用表的组成部分而不是整个表;

· 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限;

· 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。

4. 视图的优点

1. 查询简单化。视图能简化用户的操作

2. 数据安全性。视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护

3. 逻辑数据独立性。视图对重构数据库提供了一定程度的逻辑独立性

5. 视图的缺点

1. 性能。数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也把它变成一个复杂的结合体,需要花费一定的时间。

2. 修改限制。当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。事实上,当从视图中插入或者删除时,情况也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的

这些视图有如下特征:1.有UNIQUE等集合操作符的视图。2.有GROUP BY子句的视图。3.有诸如AVG\SUM\MAX等聚合函数的视图。4.使用DISTINCT关键字的视图。5.连接表的视图(其中有些例外)

6. 什么是游标?

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。

存储过程与函数 什么是存储过程?有哪些优缺点?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

优点

1)存储过程是预编译过的,执行效率高。

2)存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯。

3)安全性高,执行存储过程需要有一定权限的用户。

4)存储过程可以重复使用,减少数据库开发人员的工作量。

缺点

1)调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。

2)移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。

3)重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

4)如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

小编分类整理了许多java进阶学习材料和BAT面试题,需要资料的请加QQ群:731611386 就能领取2019年java进阶学习资料和BAT面试题以及《Effective Java》(第3版)电子版书籍。

标签: #视图不可更新因为可能会影响多个基本视图吗