一、视图(重点)
 视同的功能:一个视图其实就是封装了一个复杂的查询语句。
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部门的信息

Oracle视图,序列及同义词、集合操作的更多相关文章

  1. Oracle入门基础(十)一一数据库其他对象-视图/序列/索引/同义词

    SQL> --视图 SQL> create view empinfoview as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname ...

  2. oracle -视图 序列 约束

    1.视图 视图是基于一个或者多个表数据库对象,视图允许用户创建一个无数据的”伪表“,视图只是一个获取特定列好行的sql查询组成,通过视图检索数据就像从表中检索数据 一样. 视图可以提供一个附加的安全层 ...

  3. Oracle数据库——索引、视图、序列和同义词的创建

    一.涉及内容 1.理解索引的概念和类型. 2.掌握创建索引的命令. 3.理解视图的概念和优点. 4.理解可更新视图应具备的特点. 5.掌握创建一般视图和可更新视图的命令. 6.理解序列和同义词的概念和 ...

  4. Oracle视图,索引,序列

    什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表(3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELEC ...

  5. Oracle视图分类及各种操作讲解(超级好文)

    目录:一.视图的定义: 二.视图的作用: 三.创建视图: 1.权限 2.语法 3.1  创建简单视图   3.2  创建连接视图  3.2.1 连接视图定义  3.2.2 创建连接视图  3.2.3 ...

  6. Oracle【序列、索引、视图、分页】

    1.Oracle序列语法:create sequence 序列名 特点1:默认是无值,指针指向没有值的位置 特点2:序列名.nextval 每次执行值会自增一次,步长为 1 特点3:序列名.currv ...

  7. Oracle集合操作函数:union、intersect、minus

    [转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...

  8. Oracle集合操作

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:将多个查询的结果组合到一个查询结果之中,并去掉反复值 UNION ALL:将多个查 ...

  9. 彻底理解Oracle中的集合操作与复合查询

    --Oracle中的复合查询 复合查询:包含集合运算(操作)的查询 常见的集合操作有: union: 两个查询的并集(无重复行.按第一个查询的第一列升序排序) union all:两个查询的并集(有重 ...

随机推荐

  1. Windows下通过脚本快速修改IP地址

    Windows下通过脚本快速修改IP地址 如果通过Windows的网络属性修改Ip/网关,真是太麻烦了. 经常要切换ip,所以我写了两个脚本: c:\办公室.bat netsh interface i ...

  2. javacript 面向对象

    1.对象 使用Object创建对象 var p = new Object(); p.name = 'jason'; p.sayName = function(){ alert(this.name); ...

  3. iframe 标签自适应高度和宽度

    iframe 结构如下 <iframe src="index.html" id="frame" frameborder="0" scr ...

  4. 关于VMware导入Linux VM找不到网卡的问题

    今天遇到一个问题:由于虚拟机升级,导致以前的Linux VM(CentoS 6.7)在新的VMware里面打开,系统提示找不到网卡的问题,在网上找了好多解决办法,基本上都是一样的答案. 与网卡有关的几 ...

  5. VMware虚拟机与主机联通及配置上网

    vmware版本:10.0.0 build-1295980,安装redhat enterprise linux 5.8 一.物理机与虚拟机联通,但不联网 1.虚拟网络VMnet1设置: 此时,物理主机 ...

  6. Linux下安装McAfee防病毒软件(企业版本)

    最近公司接一个项目虚拟化解决方案,不过所有硬件设备不是我们采购的,我们只是负责软体安装.我看了一下那个硬件设备那叫高,不过目前还到那边去安装,那边硬件还没安装完成,然后Boss给我拿来两台新服务器,让 ...

  7. git管理修改

    为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改 ...

  8. Javascript获取当前时间戳的方法

    定义日期:   Date 对象用于处理日期和时间.   可以通过 new 关键词来定义 Date 对象.以下代码定义了名为 myDate 的 Date 对象:   var myDate=new Dat ...

  9. not valid for Running the scheme

    The run destination iPhone6 Plus is not valid for Running the scheme 'MyApp’. Phone6 Plus's iOS 8.0 ...

  10. php抽象类与接口的区别

    1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过关键字extends继承. 2.接口中不可以声明成员变量(包括类静态变量),但是可以声明类 ...