数据库学习笔记之视图

数据库学习笔记

前言:由于最近接到需求要设计一个项目的数据库,在设计的过程中,发现数据库的存储过程、视图几乎不了解,而且索引的设置还想再深入研究一下,所以写下这份学习笔记,2019年9月20日17:12:33,fighting~

视图

视图是啥?

视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。
对视图的修改:

  1. 单表视图一般用于查询和修改,会改变基本表的数据;
  2. 多表视图一般用于查询,不会改变基本表的数据。

视图应用场景?

  • 多个地方用到同样的sql查询结果

    比如说:我需要查询每个部门平均工资的最高和最低值,那么我首先创建视图存放每个部门平均工资的查询结果,然后直接用select语句去视图里找最大值和最小值。

  • 该查询结果使用的sql语句较复杂

视图有啥用?

  1. 简化了操作,我们可以把经常使用的sql做成一张视图,使用时不需要知道它的查询细节;
  2. 重用sql语句;
  3. 保护数据,我们可以不将重要数据添加到视图中,将程序和原始的基表分离;

怎么创建、使用、修改、更新、删除视图?

创建视图

语法:

create view 视图名
as
查询语句;

示例:

--创建视图--
create view v_student as select * from student;
使用视图

语法:

和普通的表一样。

示例:

--从视图中检索数据--
select * from v_student;

可以根据视图创建、使用视图。

修改视图

修改视图有两种方式:

  1. 使用replace

    create or replace view 视图名
    as
    查询语句;
    
  2. 使用alter

    alter view 视图名
    as
    查询语句;
    
更新视图

有些复杂的视图是不允许修改的,但是不复杂的视图是可以修改的,用update和delete去操作,一定要注意也会对原表也进行修改,这就非常不安全,所以视图一般是不允许修改的,我们要给视图添加权限,只能查询不允许修改。

以下类型的视图是不允许被修改的:

  1. 包含以下关键字的sql语句:分组函数、distinct、group by、having、union、union all;

  2. 常量视图;

    封装实现查询常量语句的视图,即常量视图

    CREATE VIEW view_test1
    AS
    SELECT 3.1415926;
    
  3. select中包含子查询;

    CREATE VIEW view_test1
    AS
    SELECT (SELECT MAX(salary) FROM employees)
    
  4. join;

  5. from一个没有更新权限的视图表;

  6. where子句的子查询引用了from子句中的表

    CREATE VIEW view_test1
    AS
    SELECT last_name,email,salary
    FROM employees
    WHERE employee_id IN(
    	SELECT manageer_id
        FROM employees 
        WHERE manager_id IS NOT NULL
    )
    
删除视图

语法:

drop view 视图名,视图名;

示例:

--删除视图--
drop view v_student;

参考:

数据库中视图的作用

在数据库中,视图有什么用?什么时候需要用到视图?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值