oraclesequence(id建立一个序列cust)

伏羲号

如果是 Oracle, 那么创建一个序列号,创建一个触发器SQL> CREATE SEQUENCE test_sequence2 2 increment by

oraclesequence(id建立一个序列cust)

1 -- 每次递增1 3 start with 1 -- 从1开始 4 nomaxvalue -- 没有最大值 5 minvalue 1 -- 最小值=1 6 NOCYCLE; -- 不循环Sequence created.SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert

2 BEFORE INSERT ON cust_info

3 FOR EACH ROW

4 BEGIN

5 SELECT test_sequence2.nextval INTO :new.cust_id FROM dual;

6 END;

7 /Trigger created.如果是 SQL Server首先 ALTER TABLE cust_info DROP COLUMN cust_id;删除 客户号 这一列然后 ALTER TABLE cust_info ADD cust_id number(9) IDENTITY(1, 1)新增 cust_id 这一列, 自增列。

全文数据库是指能够提供完整文本内容的数据库。以下是一些常见的全文数据库:

1. 学术搜索引擎:如Google Scholar、CNKI、Wanfang Data等。

2. 图书馆数据库:如ProQuest、EBSCO、JSTOR等。

3. 科技期刊数据库:如ScienceDirect、SpringerLink、IEEE Xplore等。

4. 开放获取数据库:如PubMed Central、arXiv、DOAJ等。

5. 综合数据库:如Web of Science、Scopus、Google Books等。

6. 新闻媒体数据库:如Factiva、Nexis Uni等。

7. 专业领域数据库:如Chemical Abstracts、MEDLINE、ASTM Standards等。

8. 商业数据库:如Bloomberg、Thomson Reuters等。

9. 法律数据库:如Westlaw、LexisNexis等。

10. 政府文件数据库:如美国国会图书馆、欧盟公共文献等。

1、Create Sequence

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

CREATE SEQUENCE emp_sequence --emp_sequence序列名

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

cache 10;

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

CURRVAL=返回 sequence的当前值

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

比如:

emp_sequence.CURRVAL

emp_sequence.NEXTVAL

可以使用sequence的地方:

- 不包含子查询、snapshot、VIEW的 SELECT 语句

- INSERT语句的子查询中

- NSERT语句的VALUES中

- UPDATE 的 SET中

可以看如下例子:

INSERT INTO emp VALUES

(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval FROM DUAL;

但是要注意的是:

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

- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

在 Oracle 中,您可以使用以下 SQL 语句来查询 schema:

1. 查询当前用户的所有对象(表、视图、序列等):

```sql

SELECT owner, object_name, object_type

FROM dba_objects

WHERE owner = 'YOUR_SCHEMA_NAME'

```

2. 查询指定 schema 下的所有表名:

```sql

SELECT table_name

FROM dba_tables

WHERE owner = 'YOUR_SCHEMA_NAME'

```

3. 查询所有 schema 名:

```sql

SELECT schema_name

FROM dba_schemas

```

4. 如果您想了解某个特定用户的 schema,可以使用以下查询:

```sql

SELECT username, schema_name

FROM dba_users

WHERE username = 'YOUR_USERNAME'

```

请将 'YOUR_SCHEMA_NAME' 和 'YOUR_USERNAME' 替换为您要查询的 schema 名称和用户名。

用于where比较条件的有 :

等于:=、<、<=、>、>=、<>>,< : 大于,小于> =.<=: 大于等于,小于等于=:等于

!=,<>,^=:不等于

包含:in、not in exists、not exists

范围:between…and、not between…and

匹配测试:like、not like

Null测试:is null、is not null

布尔链接:and、or、not

Oracle通配符 :

在where子句中,通配符可与like条件一起使用。在Oracle中:

%(百分号): 用来表示任意数量的字符,或者可能根本没有字符。

_(下划线): 表示确切的未知字符。

?(问号): 用来表示确切的未知字符。

#(井号): 用来表示确切的阿拉伯数字,0到9。

[a-d] (方括号):用来表示字符范围,在这里是从a到d。

单引号(’):在Oracle中,应该只使用单引号将文本和字符和日期括起来,不能使用引号(包括单双引号)将数字括起来。

双引号("):在Oracle中,单双引号含义不同。双引号被用来将包含特定字符或者空格的列别名括起来。双引号还被用来将文本放入日期格式。

撇号(’):在Oracle中,撇号也可以写成彼此相邻的两个单引号。为了在供应商名字中间查找所有带撇号的供应商名字,可以这样编写代码:

select * from l_suppliers where supplier_name like ‘%’’%’

&符号:在Oracle中,&符号常用来指出一个变量。例如,&fox是一个变量,稍微有点不同的一种&& fox。每当&fox出现在Oracle脚本中时,都会要求您为它提供一个值。而使用&&fox,您只需要在& &fox第一次出现时为它提供变量值。如果想将&符号作为普通的符号使用,则应该关闭这个特性。要想关闭这个特性,可以运行以下的命令: set define off ,这是一个SQLplus命令,不是一个SQL命令。SQLplus设置了SQL在Oracle中运行的环境。

双竖线(||):Oracle使用双竖线表示字符串连接函数。

星号(*):select 意味着选择所有的列,count()意味着计算所有的行,表示通配符时,表示0个或任意多个字符。

正斜杠(/):在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。

多行注释:/…/。

不等于:有多种表达方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)

在Oracle中。":"有2中意思;

一:给变量 赋值 , 如, names varchar2(10) :=‘aa’; 这是把"aa"赋值给变量names

二:表示引用。即引用表中字段所对应的值

如:emp表中有个name为“Bob”,那么 : old.name 的值就是"Bob"。

只是表示引用的时候,只能出现在触发器 里面。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,86人围观)

还没有评论,来说两句吧...