zoukankan      html  css  js  c++  java
  • 视图

    视图

    什么是视图?

    数据库中表和视图都是其内部的对象,视图可以理解成一个虚拟的表,视图本质就是取代了一段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; -- (失败:只能使用别名进行操作)
    
  • 相关阅读:
    HDU:2767-Proving Equivalences(添边形成连通图)
    POJ:1330-Nearest Common Ancestors(LCA在线、离线、优化算法)
    HDU:1269-迷宫城堡(tarjan模板)
    Xml 丶json丶 C/S KVO 数据库 SQL 数据持久化 复杂对象 集合视图综合
    项目穿越记
    SDP (Session Description Protocol)
    shell脚本实现查找文件夹下重复的文件,并提供删除功能
    HDU 2896 病毒侵袭 (AC自动机)
    项目启动那些事儿
    C++ 完美破解九宫格(数独)游戏
  • 原文地址:https://www.cnblogs.com/zpKang/p/12997496.html
Copyright © 2011-2022 走看看