如果是 Oracle, 那么创建一个序列号,创建一个触发器SQL> CREATE SEQUENCE test_sequence2 2 increment by
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"。
只是表示引用的时候,只能出现在触发器 里面。
还没有评论,来说两句吧...