1. 程式人生 > >Oracle【序列、索引、視圖、分頁】

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

acl 總結 .com 不能 圖的創建 creat num mage 創建用戶

1、Oracle序列
語法:create sequence 序列名
 特點1:默認是無值,指針指向沒有值的位置
 特點2:序列名.nextval 每次執行值會自增一次,步長為 1
 特點3:序列名.currval查看當前序列的值。[默認是沒有,需要創建再執行先]
作用:作為主鍵使用,動態的獲取主鍵的值,這樣新增數據的時候的避免了主鍵沖突
  --使用的是 序列名.nextval作為主鍵
註意:主鍵是非空唯一,不需要主鍵的值是連續的值,不重復即可

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;

2、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

3、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 

4、分頁
當一個表中的數據量龐大時,如果數據一次性全部顯示給用戶,則造成頁面過於龐大,體驗感low。
使用:rownum 關鍵字 :--oracle對外提供的自動給查詢結果編號的關鍵字,與數據沒有關系。
註意:rownum 關鍵字只能做< <=的判斷,不能進行> >=的判斷

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;

技術分享圖片
靈活應變:

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

技術分享圖片

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