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部门的信息
Oracle视图,序列及同义词、集合操作的更多相关文章
- Oracle入门基础(十)一一数据库其他对象-视图/序列/索引/同义词
SQL> --视图 SQL> create view empinfoview as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname ...
- oracle -视图 序列 约束
1.视图 视图是基于一个或者多个表数据库对象,视图允许用户创建一个无数据的”伪表“,视图只是一个获取特定列好行的sql查询组成,通过视图检索数据就像从表中检索数据 一样. 视图可以提供一个附加的安全层 ...
- Oracle数据库——索引、视图、序列和同义词的创建
一.涉及内容 1.理解索引的概念和类型. 2.掌握创建索引的命令. 3.理解视图的概念和优点. 4.理解可更新视图应具备的特点. 5.掌握创建一般视图和可更新视图的命令. 6.理解序列和同义词的概念和 ...
- Oracle视图,索引,序列
什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表(3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELEC ...
- Oracle视图分类及各种操作讲解(超级好文)
目录:一.视图的定义: 二.视图的作用: 三.创建视图: 1.权限 2.语法 3.1 创建简单视图 3.2 创建连接视图 3.2.1 连接视图定义 3.2.2 创建连接视图 3.2.3 ...
- Oracle【序列、索引、视图、分页】
1.Oracle序列语法:create sequence 序列名 特点1:默认是无值,指针指向没有值的位置 特点2:序列名.nextval 每次执行值会自增一次,步长为 1 特点3:序列名.currv ...
- Oracle集合操作函数:union、intersect、minus
[转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...
- Oracle集合操作
在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:将多个查询的结果组合到一个查询结果之中,并去掉反复值 UNION ALL:将多个查 ...
- 彻底理解Oracle中的集合操作与复合查询
--Oracle中的复合查询 复合查询:包含集合运算(操作)的查询 常见的集合操作有: union: 两个查询的并集(无重复行.按第一个查询的第一列升序排序) union all:两个查询的并集(有重 ...
随机推荐
- 网站服务管理系统wdcp简介及功能特性
WDCP是WDlinux Control Panel的简称,是一套用PHP开发的Linux服务器管理系统以及虚拟主机管理系统,,旨在易于使用Linux系统做为我们的网站服务器,以及平时对Linux服务 ...
- python Debug 单步调试
一直犯愁的是python的调试,曾经写c都是编译完了用gdb直接调试了,轻松愉快.如今遇到这么一个解释型的程序.不知道怎么办了.用log吧,有时就是一个小程序,不想写这么多代码.打屏吧.有时屏幕翻得快 ...
- EK中fromCharCode和parseInt的配合使用
基于web的漏洞攻击的第一步一般是:在landing page中通过<script>标签下的JavaScript脚本引入一些恶意链接.这些脚本往往会採用各种各样的混淆.加密手法来躲避AV和 ...
- iOS 键盘挡住UITextField
iOS经常使用的两个功能:点击屏幕和return隐藏虚拟键盘和解决虚拟键盘挡住UITextField的方法 iOS上面对键盘的处理非常不人性化,所以这些功能都须要自己来实现, 首先是点击return ...
- CSDN博文大赛火爆开启
俗话说的好,程序猿会写博,谁也挡不住! 是不是每一个开发人员都能写出好博文,这个非常难说,但能够肯定的是,能写出好博文的,一定是优秀的程序猿! 写作即思考,养成写博文的习惯,既能帮自己整理技术思路,也 ...
- CentOS 安装nload(流量统计)
yum install gcc gcc-c++ ncurses-devel wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz tar ...
- CSS样式做圆角
我处理圆角的版本是由内置的绝对定位的四个div组成,每个div都有唯一的圆角图片作CSS Sprite操作.我们将会这样做: 是什么方式导致这项技术表现得这么了不起呢(What makes this ...
- OC——类
1.Objective-C是C语言的超集,完全兼容C语言 2.所有的关键字都以“@”开头,例如:@interface,@class,@implementation 3.Objective-C的所有对象 ...
- BestCoder Round #75 1003 - King's Order
国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令. 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令.由于大洋国在军队中安插了间谍 , 战事紧急, ...
- mysql5 乱码问题解决方案
今天在写项目时碰到了mysql数据库数据乱码的问题,也从网上查了很多方法,前后折腾了两个小时才终于调整好.现在就把调整过程中碰到的一些问题记录下来: 1.项目是SSH架构,一开始我以为是调用hiber ...