mysql--视图

文章目录

  • 视图
    • 只保存SQL语句
    • 操作
    • 优点

视图

MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。

只保存SQL语句

数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。

操作

创建视图:

create view <视图名> as <select语句>

创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图

create view v_students_info(
	s_id,
	s_name
) as select
	id,
	name
from
	tb_student_info;

查看视图定义(和常看表类似):

describe 视图名;
show create view 视图名;(语句)

修改视图定义:

alter view <视图名> as <select语句>

修改视图名称:

修改视图的名称可以先将视图删除,然后按照相同的定义语句进行视图的创建,并命名为新的视图名称

删除视图:

drop view if exists <视图1> [,<视图2>...]

可以象表一样进行CURD操作,但增删改的操作受限:

  • 单表操作,只要有表的权限即可。
  • 多表操作,可以将一条语句分成多个语句,INSERT INTO v (a_id, b_id, ta_id, v1, v2) VALUES (3, 5, 3, 30, 500);会报错可以拆分为INSERT INTO v (a_id, v1) VALUES (3, 30);和INSERT INTO v (b_id, ta_id, v2) VALUES (5, 3, 500);

对视图的操作会作用到物理表上:
用户可以通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟的表,没有数据。通过视图更新时转到基本表上进行更新,如果对视图增加或删除记录,实际上是对基本表增加或删除记录。

优点

  • 定制用户数据,聚焦特定的数据:不同的用户可能对不同的数据有不同的要求
  • 简化数据操作:在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。
  • 提高数据的安全性:视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。
  • 共享所需数据:通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。
  • 更改数据格式:通过使用视图,可以重新格式化检索出的数据

要注意区别视图和数据表的本质,即视图是基于真实表的一张虚拟的表,其数据来源均建立在真实表的基础上。

你可能感兴趣的:(数据库,mysql,数据库,sql)