zoukankan      html  css  js  c++  java
  • Oracle视图,序列及同义词、集合操作

    一、视图(重点)
     视同的功能:一个视图其实就是封装了一个复杂的查询语句。
    1.创建视图的语法:
    CREATE VIEW 视图名称 AS 子查询


    范例:创建一个包含了20部门的视图
    CREATE VIEW empv20 AS SELECT * FROM emp WHERE deptno=20;

    对于没有授权的解决方法:
    登陆sys as SYSDBA,然后grant create any view to 用户名(scott)

    2.查询视图:
    SELECT * FROM empv20;


    3.OR REPLACE 如果有则先删除再创建
    CREATE OR REPLACE VIEW empv20 AS
     SELECT * FROM emp WHERE deptno=20;

    4.更新视图
     在视图中是不应该包含真是数据的,而且在子程序之中,创建的额视图实际上是存在创建条件的,此条件是deptno=20.如果现在将视图之中的 7566 的部门编号修改成30.
    范例:修改7369 的部门编号
    UPDATE empv20 SET deptno=30 WHERE empno=7566;

    重新查询视图之后,就能够发现视图之中已经没有7566雇员了,那么emp表之中呢?
     7566 JONES      MANAGER         7839 02-4月 -81           2975                    30

    发现emp表之中的部门编号已经发生了变化,也就是更新了真是数据的内容的。

    一般在创建视图的时候。SQL提供了两个重要的参数:
    ·WITH CHECK OPTION  不能更新视图的【创建条件】
     例:在视图创建之中使用此参数
     CREATE OR REPLACE VIEW empv20 AS
     SELECT * FROM emp WHERE deptno=20
     WITH CHECK OPTION;
     此时就不能够更新![ORA-01402: 视图 WITH CHECK OPTION where 子句违规]
     此时创建条件是不能够更新的,但是其他其他字段是能够正常的更新的。


    ·WITH READ ONLY   表示创建的视图只读,不允许修改任何数据。
    由于视图本身只是用来查询的,最好不允许更改任何数据
     CREATE OR REPLACE VIEW empv20 AS
     SELECT * FROM emp WHERE deptno=20
     WITH READ ONLY;
    --创建只读视图

    二、序列【重点】
     在许多数据库系统中都存在一个自动增长的列,现在想要在Orcale中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户手工完成。
    序列的创建格式:
    CREATE SEQUENCE sequence
    [MAXVALUE n][NOMAXVALUE]
    [MINVALUE n][NOMINVALUE]
    [INCREMENT BY n][START WITH m]
    [CYCLE(可以循环)]
    [CACHE(被缓存的值)]

    例子:
    1.创建序列:CREATE SEQUENCE myseq;
    2.序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列之中提供了两种操作:
    ·nextVal:取得序列的下一个值
    ·currVal:取得序列的当前内容
    3.默认增长幅度是1
    [INCREMENT BY n][START WITH m]
    使用这两个参数,来修改幅度和起始数值
    4.创建一个序列,让其在1 3 5 7 循环
    MAXVALUE 10 CYCLE CACHE 1;


    三、同义词(了解)
     SELECT SYSDATE from dual;
    这个dual表其实是在sys下的,但是在scott下确能够直接访问dual表,正常情况下,想要访问别的用户表,需要使用"用户名.表名称"。
     这就是同义词的作用,可以让其他用户通过一个名称方便直接访问其他用户表。
    1.创建同义词:
    CREATE SYNONYM 同义词名称 FOR 用户名.表名词

    2.删除同义词:
    DROP SYNONYM 同义词名称

     四、集合操作

    在Orcale之中提供了三种类型的集合:并(UNION),交(INTERSECT),差(MINUS)

    ·UNION   把多个查询结果组合到一个查询结果之中,没有重复内容
    ·UNION ALL  和上面一样,但是有重复值
    ·INTERSECT  返回多个查询结果的相同部分
    ·MINUS 返回两个查询结果的差集


    ·复制一张emp表,并复制其中20部门的内容的
    CREATE TABLE emp20 AS SELECT * FROM emp WHERE deptno=20;


    一、UNION
    SELECT * FROM emp UNION SELECT * FROM emp20;
    还是返回13行,并不会多行

    二、UNION ALL
    SELECT * FROM emp UNION ALL SELECT * FROM emp20;
    这时候相当于EMP的数据 + emp20表中的数据

    三、INTERSECT  交
    SELECT * FROM emp INTERSECT SELECT * FROM emp20;
    由于只有20部门重复,所以只返回20部门的全部信息

    四、MINUS 差
    SELECT * FROM emp MINUS SELECT * FROM emp20;
    返回的是emp之中除去20部门的信息

  • 相关阅读:
    第三十五课、文本编辑器中的数据存取------------------狄泰软件学院
    第三十四课、缓冲区操作与目录操作------------------狄泰软件学院
    第三十三课、文件流和数据流------------------狄泰软件学院
    Machine Learning in Action(6) AdaBoost算法
    Machine Learning in Action(5) SVM算法
    machine learning for hacker记录(4) 智能邮箱(排序学习&推荐系统)
    linux mysql乱码问题
    php7+新特性
    shell学习(6)- curl
    shell学习(5)- sort
  • 原文地址:https://www.cnblogs.com/liuhuapiaoyuan/p/3177170.html
Copyright © 2011-2022 走看看