Oracle【序列、索引、視圖、分頁】
阿新 • • 發佈:2018-10-13
acl 總結 .com 不能 圖的創建 creat num mage 創建用戶
--特點:顯示的創建,隱式的執行
--註意:oracle會自動給表的主鍵創建索引。[一般是編號,學號等]
使用索引:【創建、刪除】
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 insertinto 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【序列、索引、視圖、分頁】