数据库基础(13) . MySQL视图

1.介绍

1.1.什么是视图

MySQL中的视图是一种虚拟表,它并不存储实际的数据,而是存储了一条SELECT查询语句的结果集。

视图可以简化复杂的查询操作,保护数据,并且可以使数据库结构更加清晰易懂。

1.2.视图的作用

  1. 简化查询:视图可以将复杂的查询包装起来,使得最终用户只需要执行简单的查询即可获取所需的数据。
  2. 保护数据:通过定义视图,可以向用户提供特定的数据子集,而隐藏表中的其他列或行,从而达到保护敏感数据的目的。
  3. 逻辑数据聚合:视图可以将来自多个表的数据进行逻辑上的聚合,使得用户可以从一个视图中获取多个表中的数据。
  4. 增强安全性:视图可以实现行级安全控制,通过定义视图来限制用户只能访问某些特定的数据行。

2.操作

2.1.创建视图

创建视图的基本语法如下:

CREATE VIEW view_name (column_list)
AS
select_statement;

其中:

  • view_name 是要创建的视图的名字。
  • column_list 可选,用于指定视图中的列名。
  • select_statement 是定义视图的SELECT查询语句。
-- 根据单一表创建, 创建时指定列名
create view stu_info ( id, name, sex,  info )  as
select stu_id, stu_name, stu_sex,   stu_info
from student ;

-- 根据多表创建, 使用默认字段
create view stu_team_view as
select stu_id, stu_name, team_title
    from student s left join team t on s.team_id = t.team_id;

2.2.查看视图

-- 查看表的结构 ,  显示表中各列的信息,包括列名、数据类型、是否允许为空等
desc stu_info;

-- 查看视图是如何定义的,包括视图所基于的SELECT语句。
show create view stu_info;

-- 查看表的基本信息和统计信息,  显示表的状态信息,包括表名、引擎、行数、数据大小等
show table status like 'stu_info';

2.3.修改视图

-- 例题1:增加字段
    alter view stu_info(id, name,sex, birth, info) as
    select stu_id, stu_name,stu_sex, stu_birth,  stu_info
    from student ;

-- 例题2:重新定义
    alter view stu_info(id, name, info) as
    select stu_id, stu_name,  stu_info
    from student where stu_info is  not null ;

2.4.查询视图

使用视图就像使用普通表一样

select * from stu_info;

select stu_id, stu_name, team_title  from stu_team_view;

2.5.更新视图

视图也可以更新,但有一些限制:

  1. 基础表:视图必须基于单个表或多个表的联接。
  2. 不可更新的视图:如果视图包含了聚合函数、DISTINCT、JOIN、GROUP BY、HAVING等,那么这个视图是不可更新的。
update stu_info
set info = '充满好奇'
where id = 4;

注意 : 这个修改会直接影响到表中数据

2.6.删除视图

删除视图也很简单,使用DROP VIEW语句:

drop view stu_info;

3.视图的局限性

虽然视图提供了很多便利,但也存在一些局限性:

  1. 性能:视图实际上并不存储数据,而是每次查询时重新计算结果集,这可能导致性能问题。
  2. 索引:视图本身不能拥有索引,因此在大型数据集上使用视图时,查询速度可能会受到影响。
  3. 可更新性:不是所有的视图都能被更新,特别是那些包含聚合函数或其他复杂查询的视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值