视图(View)

关于视图
1.概述
  • 视图是一种虚拟表,它是基于 SQL 查询语句定义的结果集。
  • 与实际表类似,视图也包含列和行数据。
  • 但是这些数据并不存在于数据库中,而是通过查询、计算或者连接其他表生成。
2.语法
  • 定义视图需要使用create view语句。

  • create view view_name
    as
    select cloumn...
    from table_name;
    
3.作用
  • 通过创建视图,可以简化复杂的查询,重构数据模型。
  • 确保数据安全性,并且方便用户访问数据。
  • 可将多个表中的信息整合在一起,减少编写 SQL 查询语句的工作量。
基本用法
0.准备工作
  • 创建示例数据库

    create database view_db;
    
  • 准备操作表

    create table view_emp
    as
    select *
    from northwind.employees;
    
    create table view_dept
    as
    select *
    from northwind.departments;
    
1.创建视图
  • 针对于单表

    • 视图中的字段与基表的字段有对应关系

      /*确定视图中字段名的方式
       *1.默认与所选择的基表的字段相同
       *2.查询语句中字段的别名会作为视图中字段的名称出现
       *3.小括号内字段个数与 select 中字段个数相同
      */
      
      # 1.默认与所选择的基表的字段相同
      create view v_emp1
      as
      select employee_id, first_name, salary
      from view_emp;
      
      # 查询语句中字段的别名会作为视图中字段的名称出现
      create view v_emp2
      as
      select employee_id as emp_id, first_name as name, salary
      from view_emp;
      
      # 小括号内字段个数与 select 中字段个数相同
      create view v_emp3(emp_id, name, salary)
      as
      select employee_id, first_name, salary
      from view_emp;
      
    • 视图中的字段在基表中可能没有对应的字段

      create view v_emp4
      as
      select department_id, avg(salary) avg_sal
      from view_emp
      where department_id is not null
      group by department_id;
      
  • 针对于多表

    • 通过表连接的方式对基于多表创建视图。

    • create view v_emp_dept
      as
      select e.employee_id, e.department_id, d.department_name
      from view_emp as e
      join view_dept as d
      on e.department_id = d.department_id;
      
  • 基于视图创建视图

    • 基于一个或多个视图来创建新的视图,被称为嵌套视图。

    • 同样也可以基于多个视图创建视图。

    • create view v_emp5
      as
      select employee_id, first_name
      from v_emp1;
      
2.查看视图
  • 查看表时也会显示出视图

    show tables from view_db;
    
  • 查看视图对象

    # 这条 SQL 语句的含义是查询数据库中所有视图的信息,并选取其中数据库名为 'view_db' 的视图。
    # 通过\G按格式输出,并代替了分号
    select * 
    from information_schema.views
    where table_schema = 'view_db'\G
    
  • 查看视图的结构

    describe v_emp3;
    
  • 查看视图的属性信息

    show table status from view_db like 'v_emp4';
    
  • 查看视图的详细定义信息

    show create view v_emp5;
    
3.修改视图中的数据
  • 将视图看做表进行更新修改,操作相同。

  • 更新视图的数据,会导致基表中数据的修改。

  • 同理,更新表中的数据,也会导致视图中数据的修改。

  • 删除视图中的数据,也会导致表中的数据的删除。

  • 删除视图也与删除表的操作相同。

4.修改视图
  • 使用alter语句修改已经存在的视图。

    alter view v_emp1
    as
    select employee_id, first_name, salary, email, hire_date
    from view_emp;
    
  • 通过replace关键字进行修改

    create or replace view v_emp1
    as
    select employee_id, first_name, salary, email
    from view_emp;
    

那平淡如水的生活,因为你而火热。 —— 新裤子《生命因你而火热》

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值