MYSQL——视图

一、视图的基本概念

作为常用的数据库对象,视图(view)为数据查询提供了一条捷径,视图是一个虚拟表,其内容由查询定义, 即视图中的数据并不像表、索引那样需要占用存储空间,视图中保存的仅仅是一条select语句,其数据源来自于数据库表或者其他视图。它同真实的表一样,视图包含一系列带有名称的列和行数据,但是视图并不在数据库中以存储的数据结构形式存在,行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成,当基本表发生变化时,视图也会发生变化。

视图是存储在数据库中的查询SQL语句,使用它主要有两种原因:
一是安全原因, 视图可以隐藏一些数据
例如,学生表可以用视图只显示学号、姓名、性别、班级信息,而不显示电话和家庭住址等信息;

二是可使复杂的查询易于理解和使用

二、视图的优点

对于所引用的基础表来说,视图的作用类似于筛选,定义视图的筛选可以来自当前或其他数据库的一个或者多个表或者其他视图。通过视图进行查询没有任何限制,通过他们进行数据修改时的限制也很少,视图的优势主要体现在以下几方面:

(1)增强数据安全性:同一个数据库表可以创建不同的视图,为不同的用户分配不同的视图可以实现不同的用户只能查询或修改与之对应的数据,继而增强了数据的安全访问控制。

(2)提高灵活性,操作变简单:有灵活性的功能需求之后,需要改动表的结构而导致工作量比较大,这时可以虚拟表的形式达到少修改的效果。例如,因为某种需求要将a表与b表进行合并形成一个新的c表,最后,a表与b表都不会存在,而由于原来程序中编写SQL分别是基于a表与b表查询的,这意味着需要重新编写大量的SQL语句(改成向c表去操作数据),而通过视图就可以做到不修改,只需定义两个视图名字还是原来的表名a和b,而a、b视图完成从c表中取出的内容。使用视图可以简化数据查询操作,对于经常使用但结构复杂的select语句,建议将其封装为一个视图。

(3)提高数据的逻辑独立性 :如果没有视图,应用程序一定是建立在数据库表上的,有了视图之后,应用程序就可以建立在视图上,从而使应用程序和数据库表结构在一定程度上实现逻辑分离。视图在以下两个方面使应用程序与数据逻辑独立:1>使用视图可以向应用程序屏蔽表结构,此时即便表结构发生变化(例如,表的字段名发生变化),只需要重新定义定义视图或者修改视图的定义,无需修改应用程序即可使用应用程序正常运行。2>使用视图可以向数据库表屏蔽应用程序,此时即便应用程序发生变化,只需要重新定义或者修改视图的定义,无需修改数据库表结构即可使应用程序正常运行。

使用场景:

场景1:我们希望某些查询语句只能查看到某个表中的一部分数据,就可以使用视图​	
场景2:简化sql语句的编写

三、视图的使用方法

1、创建视图

创建视图需要有create view的权限,同时应该具有查询涉及的列的select权限。在MySQL数据库下的user表中保存这些权限信息,可以使用select语句查询。

语法格式为:

create [or replace] view view_name
As select_statement
[with|cascaded|local|check option]
# 语法
create [or replace]  view view_name as 查询语句
or replace 如果视图已经存在了,就替换里面的查询语句


# 使用:
测试数据
create table salarys(
 	id int primary key auto_increment,
 	name char(10),
 	money float
) charset utf8;
insert into salarys values(null,"张三丰",500000),(null,"张无忌",40000);


# 第一种使用方式: 只能查看一部分数据(隔离数据)
mysql> create view zwj_view as select money from salarys where name=
MySQL视图是一种虚拟表,它有结构(有行和列),但没有实际存储数据。创建视图可以通过CREATE VIEW语句来实现。例如,使用SELECT语句来定义视图的查询结果。通过创建视图,我们可以简化复杂的查询,提高查询效率,并且可以直接使用视图来查询数据,而不必每次都编写复杂的查询语句。 在MySQL中,使用CREATE VIEW语句创建视图,语法如下: CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; 其中,view_name是视图的名称,column1, column2等是要选择的列,table_name是要查询的表,condition是可选的筛选条件。 通过创建视图,我们可以使用视图的名称来查询数据,就好像查询表一样。视图的查询结果是根据视图定义的SELECT语句生成的。 总结起来,MySQL视图是一种虚拟表,可以通过CREATE VIEW语句创建,将复杂的查询结果保存为视图,方便后续查询操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* *2* *4* [MySQL——视图查询](https://blog.csdn.net/qq_67308046/article/details/124413261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL视图](https://download.csdn.net/download/weixin_38550834/13685354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值