Oracle學習筆記 序列和同義詞

2021-09-18 04:13:15 字數 4513 閱讀 8271

oracle學習筆記(序列和同義詞)

我就直接po**了,我的**就是筆記,筆記就是**

/*

oracle學習筆記(序列和同義詞)

*/--取別名

select 666, '江西省贛州市于都縣' as "家鄉", 888.88, sysdate from dual;

select 666, '贛州市于都縣' as 家鄉, 888.88, sysdate from dual;

select 666, '于都縣' 家鄉, 888.88, sysdate from dual;

select 666, '于都縣' hometown, 888.88, sysdate from dual;

select 666, '于都縣' "hometown", 888.88, sysdate from dual;

/*序列

*/--建立序列,最簡單的建立

--建立語法create sequence 序列名; 這是最常用的建立方式

create sequence myseq;

--刪除序列

--drop sequence myseq;

--nextval表示獲取序列的下乙個值,currval表示獲取序列的當前值

select myseq.nextval, myseq.currval from dual;

select myseq.currval, myseq.nextval from dual;

--建立一張測試表,測試一下序列

create table testseq(

number1 number,

number2 number

);--插入資料(使用序列,nextval和currval)

insert into testseq(number1, number2) values(myseq.nextval, myseq.currval);

insert into testseq(number1, number2) values(myseq.nextval, myseq.currval);

insert into testseq(number1, number2) values(myseq.nextval, myseq.currval);

insert into testseq(number1, number2) values(myseq.nextval, myseq.currval);

insert into testseq(number1, number2) values(myseq.currval, myseq.nextval);

--查詢資料(序列預設的增長幅度是1,從查詢testseq表結果中就能看出來)

select * from testseq;

--建立序列(建立序列時帶引數)

create sequence myseq2 increment by 2; --每次增長幅度是2

insert into testseq(number1, number2) values(myseq2.nextval, myseq2.currval);

insert into testseq(number1, number2) values(myseq2.nextval, myseq2.currval);

insert into testseq(number1, number2) values(myseq2.nextval, myseq2.currval);

--查詢資料

select * from testseq;

--建立序列

create sequence myseq3;

--執行下面的語句會報錯,因為(使用/呼叫)currval前,要先(使用/呼叫)nextval

select myseq3.currval from dual;

--序列物件.nextval

select myseq3.nextval from dual;

--序列物件.currval

select myseq3.currval from dual;

--建立序列(建立序列時帶引數)

create sequence myseq4 increment by 2 start with 66; --從66開始,每次增長幅度是2

insert into testseq(number1, number2) values(myseq4.nextval, myseq4.currval);

insert into testseq(number1, number2) values(myseq4.nextval, myseq4.currval);

insert into testseq(number1, number2) values(myseq4.nextval, myseq4.currval);

--查詢資料

select * from testseq;

--建立序列

create sequence myseq5

start with 1

increment by 2

maxvalue 10

cycle

cache 2;

--delete from testseq;

--insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

insert into testseq(number1, number2) values(myseq5.nextval, myseq5.currval);

--select * from testseq;

/*同義詞

*/--dual是一張偽表/虛擬表

select sysdate from dual;

--使用sys使用者(超級管理員)連線資料庫

--select * from tab;

--dual表是在sys使用者下的表

select * from tab where tname = 'dual';

/*如果我們現在是使用scott使用者連線到資料庫,

按理來說應該寫成select sysdate from sys.dual;才可以訪問dual表才對,但

是現在直接寫成select sysdate from dual;這樣也可以訪問dual表,其實這

就是同義詞的作用

同義詞其實就是取別名,以後可以直接使用別名了

同義詞的作用:可以讓其他使用者通過乙個名稱方便的訪問"使用者名稱.表名"

注意:同義詞可以讓其他使用者通過乙個名稱方便的訪問"使用者名稱.表名"的這個作用,我

在oracle11g中測試發現,沒效果;大家可以自己測試一下,看看是否有效果?

*/--正常來講,訪問不同使用者的表需要使用"使用者名稱.表名"來訪問

select sysdate from sys.dual;

--現在使用scott使用者連線資料庫,直接寫dual,沒有寫成sys.dual

select sysdate from dual; --執行正確,沒有報錯

/*建立同義詞語法

create synonym 同義詞名 for 使用者名稱.表名;

*/--建立同義詞

create synonym myemp for scott.emp;

create table address2(

id number primary key not null,

name varchar2(30) not null

);insert into address2 values(1, '江西省贛州市于都縣渡江大道xx號');

--select * from address2;

--建立同義詞

create synonym addr for scott.address2;

--使用同義詞(同義詞其實就是別名),使用別名

select * from addr;

--刪除同義詞

drop synonym addr;

Oracle同義詞和序列

1 1同義詞 是表 索引 檢視的模式物件的乙個別名,通過模式物件建立同意詞,可以隱藏物件的實際名稱和 所有者資訊,為物件提供一定的安全性,開發應用程式時 應該盡量避免直接使用表,檢視 或其他物件,改用物件的同義詞。23 2避免當管理員對資料庫物件做出修改和變動後,必須重新編譯應用程式,只需要在資料庫...

oracle 序列與同義詞

建立序列需要許可權 create sequence 授權過程 建立序列的語法 create sequence 序列名 increment by n increment by n 設定序列的間隔長度 例如 預設情況下,不設定間隔長度預設為一 其他引數 start with 定義序列的起始值 maxva...

序列和同義詞

序列 序列和檢視一樣,不占有實際的儲存空間,只是在資料庫中儲存它的定義 建立序列 create sequence emp seq increment by 1 start with 1 nomaxvalue nocycle cache 10 引用序列 insert into emp values e...