• 视图


    视图

    什么是视图?

    数据库中表和视图都是其内部的对象,视图可以理解成一个虚拟的表,视图本质就是取代了一段sql查询语句.

    为什么使用视图?

    因为有些数据的查询需要使用大量的sql语句,每次书写比较麻烦,使用视图可以起到sql重用的作用,可以隐藏表中的敏感信息.

    格式:

    create view 视图名 as 子查询;

    例如: 创建部门是20并且工资小于3000的视图

    create view v_emp_20 as (
        select * from emp where deptno=20 and sal<3000
    );
    

    视图的分类

    • 简单视图: 创建视图的子查询中不包含: 去重,函数,分组,关联查询的视图称为简单视图.可以对数据进行增删改查操作.
    • 复杂视图: 创建视图的子查询中包含: 去重,函数,分组,关联查询的视图称为复杂视图.只能进行查的操作

    视图增删改

    简单视图的增删改操作 操作方式和table一样

    插入数据

    如果插入的数据在视图中不显示但是原表中显示,称为数据污染

    错误写法 因为视图中时按照depon=10 查找的

    insert into v_emp_10 (empno,ename) values
    (10010,'Tom');
    

    正确写法

    insert into v_emp_10 (empno,ename,deptno) values
    (10086,'Jerry',10);
    

    可以通过with check option 关键字禁止出现数据污染

    create view v_emp_30 as (select * from emp where deptno=30) 
    with check option;
    

    测试:

    insert into v_emp_30 (empno,ename,deptno) values
    (10011,'张三',30);
    insert into v_emp_30 (empno,ename,deptno) values
    (10012,'李四',20);
    

    修改数据

    只能修改视图中存在的数据,原表中存在,但视图中不存在也不会改

    update v_emp_30 set ename='张三' where empno=10011;
    update v_emp_30 set ename='汤姆' where empno=10010;
    

    删除数据

    delete from v_emp_30 where empno=10011;
    delete from v_emp_30 where empno=10010;
    

    修改视图

    (如果有就修改,如果没有就创建)

    格式: create or replace view 视图名 as 子查询;

    例如:

    create or replace view v_emp_10 as (
        select * from emp
    );
    

    删除视图

    drop view v_emp_10;
    drop view if extract v_emp_10; -- 有就删,没有也不会报错
    

    视图别名

    创建视图的时候子查询对字段起了别名, 则后期对视图进行操作只能使用别名.

    测试:

    create view v_emp_10 as (select empno,ename name from emp);
    
    update v_emp_10 set name='汤姆' where empno=10010; -- (成功)
    update v_emp_10 set ename='汤姆aaa' where empno=10010; -- (失败:只能使用别名进行操作)
    
  • 相关阅读:
    编程为谁?
    Nokia S60编程环境的建立(转自彩酷玩家)
    你可以是一个机器吗?
    无法在web服务器上启动调试的解决
    VB.NET和VB6.0有什么区别(转)
    短信3
    短信2
    短信(转自天极)
    短信4
    函数递归调用
  • 原文地址:https://www.cnblogs.com/zpKang/p/12997496.html
Copyright © 2020-2023  润新知