ORACLE VIEW和SEQUENCE的用法

说下oracle中视图和序列的用法:

视图

视图是通过对一个或多个表定义查询得到的,视图定义所依据的表被称为基表,说简单点就是视图联合一张或多张表另外成立一张表,可以对这张表进行搜素和DML操作。

建立视图

 create view terminal_view as (select a.terminal_name, b.pdline_name,c.process_name,d.stage_name,e.emp_name,A.UPDATE_TIME  from sys_terminal a , sys_pdline b , sys_process c , sys_stage d , sys_emp e where
 A.PDLINE_ID = b.pdline_id and a.process_id = c.process_id and a.stage_id = d.stage_id and A.UPDATE_USERID = E.EMP_ID);

注意 AS后面其实就是一个select语句,该语句查询得到的数据即形成视图,改变相关基表的数据会立马反应到视图上面。

使用视图的方式同普通table一样:

select * from terminal_view where emp_name = '001'; 

注意:

实际上,对视图执行DML也就是对基表执行DML. 对于多表联接的视图,必须要保证如下的条件才能进行DML操作:

(1) 在创建视图的SQL语句中,不能含有 group by ,compute,order by 以及集合操作的函数.

(2) 在创建的视图中,必须含有各个基本的主键.

(3) 在创建视图的SQL语句中,不能含有子查询语句,也就是说,创建视图的SQL语句必须是简单SQL语句

序列

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方。

Sequence是数据库系统按照一定规则自动增加的数字序列。这个序列一般作为代理主键(因为不会重复),没有其他任何意义。

创建

Create Sequence

你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,

CREATE SEQUENCE emp_sequence

INCREMENT BY 1 — 每次加几个

START WITH 1 — 从1开始计数

NOMAXVALUE — 不设置最大值

NOCYCLE — 一直累加,不循环

CACHE 10;

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL

CURRVAL=返回 sequence的当前值

NEXTVAL=增加sequence的值,然后返回 sequence 值

如下,起点为3,每次增长2,最大999,可循环:

CREATE SEQUENCE SEQ_LC_TEST INCREMENT BY 2 START WITH 3 MAXVALUE 999 MINVALUE 1 CYCLE CACHE 3 ORDER;

使用方法:

SELECT SEQ_LC_TEST.NEXTVAL FROM DUAL;--每使用一次NEXTVAL 相应的sequence会自增一次
SELECT SEQ_LC_TEST.CURRVAL FROM DUAL;--返回当前值,不自增
INSERT INTO emp VALUES (<span style="font-family: Arial, Helvetica, sans-serif;">SEQ_LC_TEST</span><span style="font-family: Arial, Helvetica, sans-serif;">.nextval, ‘LEWIS’, ‘CLERK’,7902, SYSDATE, 1200, NULL, 20);--一般放在insert语句中</span>

注意:

第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在不同的SQl语句里面使用NEXTVAL,其值是不一样的。

时间: 2024-10-16 11:11:00

ORACLE VIEW和SEQUENCE的用法的相关文章

【转】Oracle数据库中Sequence的用法

在Oracle数据库中,sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方. 1.Create Sequence (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限) CREATE SEQUENCE emp_sequence INCREMENT BY 1 —— 每次加几个 START WITH 1 —— 从1开始计数 NOMAXVALUE —— 不设置最大值 NOCYCLE —— 一直累加,不循环 CA

PLS-00357: Table,View Or Sequence reference &#39;SEQ_TRADE_RECODE.NEXTVAL&#39; not allowed in this context

oracle数据库: 为了使ID自增,建了序列后,创建触发器: create or replace TRIGGER TRIG_INSERT_TRADE_RECODE BEFORE INSERT ON TRADE_RECODE FOR EACH ROW BEGIN  :NEW.ID:=SEQ_TRADE_RECODE.NEXTVAL;END; 报错: PL/SQL: Statement ignored PLS-00357: Table,View Or Sequence reference 'SEQ

【转】oracle的substr函数的用法

[转]oracle的substr函数的用法 oracle的substr函数的用法 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ] ) 如:     substr('This is a test', 6, 2)     would return 'is'     substr('This is a test', 6)     would return 'is a test'     substr('TechOnThe

Oracle之外键(Foreign Key)用法详解(一)

Oracle外键(Foreign Key)用法详解(一) 1.目标 演示如何在Oracle数据库中使用外键 2.什么是外键? 1)在Oracle数据库中,外键是用来实现参照完整性的方法之一.打个形象的比喻,外键是指定义外键的表的列的值必须在另一个表中出现. 2)被参照的表称之为父表(parent table),创建外键的表称之为子表(child table).子表中的外键关联了父表中的主键. 3)外键可以在创建表时定义或者通过ALTER TABLE语句创建. 3.创建表时定义外键 语法: CRE

Oracle中常用的to_Char用法详解

Oracle中常用的to_Char用法详解(有FMT的详细列表) The following are number examples for the to_char function. to_char(1210.73, '9999.9') would return '1210.7' to_char(1210.73, '9,999.99') would return '1,210.73' to_char(1210.73, '$9,999.00') would return '$1,210.73'

oracle || 跟(+) + substr 函数 用法总结

oracle || 和(+) + substr 函数 用法总结 [substr函数用法] substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符 substr('Hello World',2,4) //返回结果为 'ello' substr('

oracle 中start with 的用法

oracle 中start with 的用法 发表于2013/3/3 23:29:35  40191人阅读 分类: Oracle oracle 提供了start with connect by 语法结构可以实现递归查询. 1. 一个简单举例: SQL> select *  from test; BILL_MONTH           DAY_NUMBER MSISDN -------------------- ---------- -------------------- 200803    

oracle中insert all的用法

oracle中insert all的用法 现在有个需求:将数据插入多个表中.怎么做呢?可以使用insert into语句进行分别插入,但是在oracle中有一个更好的实现方式:使用insert all语句. insert all语句是oracle中用于批量写数据的 .insert all分又为无条件插入和有条件插入. 一.表和数据准备 --创建表 CREATE TABLE stu( ID NUMBER(3), NAME VARCHAR2(30), sex VARCHAR2(2) ); --删除表

Oracle数据库中序列(SEQUENCE)的用法详解

在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了序列的用法,希望能够对您有所帮助. AD: 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值. 创建序列需要CREATE SEQUENCE系统权限