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...