Oracle【序列、索引、視圖、分頁】

一、Oracle序列
語法:create sequence 序列名
 特色1:默認是無值,指針指向沒有值的位置
 特色2:序列名.nextval 每次執行值會自增一次,步長爲 1
 特色3:序列名.currval查看當前序列的值。[默認是沒有,須要建立再執行先]
做用:做爲主鍵使用,動態的獲取主鍵的值,這樣新增數據的時候的避免了主鍵衝突
  --使用的是 序列名.nextval做爲主鍵
注意:主鍵是非空惟一,不須要主鍵的值是連續的值,不重複便可sql

1 --建立默認序列
2 create sequence cc;--建立序列
3 select cc.nextval from dual;--遞增的方式去建立序列
4 select cc.currval from dual;--查詢當前序列 
 1 --建立測試表
 2 create table student(
 3      tid number(10) primary key,
 4       tname varchar(100) not null
 5       )
 6 --添加測試數據
 7 --以前寫法:【多複製多改動不少數據,費時間】
 8 insert into student values(1,'迪麗熱巴');
 9 insert into student values(2,'柚子解說');
10 --使用序列添加
11 insert into student values(cc.nextval,'迪麗熱巴');
12 insert into student values(cc.nextval,'柚子解說');
1 --建立自定義序列
2 create sequence c1--建立序列
3 start with 5 --設置開始位置
4 increment by 2 --設置步長
5 select c1.nextval from dual
6 select c1.currval from dual
7 --刪除序列:drop sequence 序列名
8 drop sequence cc;

二、Oracle索引
做用:提高查詢效率,處理大量的數據纔會發現索引的強大之處
--特色:顯示的建立,隱式的執行
--注意:oracle會自動給表的主鍵建立索引。[通常是編號,學號等]
使用索引:【建立、刪除】oracle

1 --建立語法
2 create index 索引名 on 表名(字段名)
3 --測試數據
4 create index index_student_tname on student(tname)--建立索引
5 select * from student where tname='柚子解說'
6 --刪除索引
7 drop index index_student_tname

三、Oracle視圖
使用視圖:【建立、刪除】
建立視圖: create view 視圖名 as select 對外提供的內容 from 真實表名 
刪除視圖: drop view 視圖名 
視圖特色:
 特色1:保護真實表,隱藏重要字段的數據。保護數據。
 特色2:在視圖中的操做會映射執行到真實表中
 特色3:能夠手動開啓只讀模式 使用關鍵字 with read only
注意:視圖的建立用戶必須具備DBA權限測試

1 --測試視圖
2 --建立視圖並對外提供了sid,sname,ssex三個字段
3 create view stu as select sid,sname,ssex from student
4 select * from student--可查詢全部的詳細數據
5 select * from stu--只能查詢到視圖對外開放的字段

--視圖的只讀模式
create view stu2 as select sid,sname,ssex from student with read only 

四、分頁
當一個表中的數據量龐大時,若是數據一次性所有顯示給用戶,則形成頁面過於龐大,體驗感low。
使用:rownum 關鍵字 :--oracle對外提供的自動給查詢結果編號的關鍵字,與數據沒有關係。
注意:rownum 關鍵字只能作< <=的判斷,不能進行> >=的判斷spa

1 --查詢員工信息前5條數據[第一頁]
2 select rownum,e.* from emp e where rownum<=5
3 select * from (select rownum r,e.* from emp e where rownum <=5) t where r>0;

1 --查詢員工信息的6-10條後全部數據[第二頁]
2 select * from (select rownum r,e.* from emp e where rownum<=10) t where r>5

1 --查詢員工信息的11-15條數據[第三頁]
2 select * from (select rownum r,e. * from emp e where rownum<=15) t where r>10;


分頁的總結:每頁顯示n條數據,查詢第m頁數據 
select * from (select rownum r,e. * from 分頁的表 e where rownum<=n*m) t where r>n*m-n;
指針

例子:每頁顯示3條數據,查詢第2頁的數據
select * from (select rownum r,e. * from emp e where rownum<=3*2) t where r>3*2-3;
select * from (select rownum r,e. * from emp e where rownum<=6) t where r>3;


靈活應變:code

1 --只查詢員工姓名,工資。【每頁顯示3條數據,查詢第4頁的數據】
2 select * from (select rownum r,e. * from emp e where rownum<=3*4) t where r>3*4-3;
3 select t.ename,t.sal from (select rownum r,e. * from emp e where rownum<=12) t where r>9;


1 --分頁查詢員工信息按照工資排序
2 select * from (select rownum r,t.* from (select * from emp  order by sal desc) t where rownum<=10 ) where r>5

相關文章
相關標籤/搜索