資源描述:
《oracle索引、序列、查詢分組、排序、連接、視圖等》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、orcleoracle索引、序列、查詢、視圖本章目標(biāo)索引序列聚合函數(shù)排序分組連接查詢視圖索引什么是做引?一種用戶提升查詢效率的數(shù)據(jù)庫對象通過快速定位數(shù)據(jù)的方法,減少磁盤I/O操作索引信息與表獨立存放oracle數(shù)據(jù)庫自動使用和維護(hù)做引索引分類唯一性索引非唯一性索引創(chuàng)建索引的方式自動創(chuàng)建:在定義主鍵或唯一性約束的時候系統(tǒng)會自動在相應(yīng)的字段上創(chuàng)建唯一索引手動創(chuàng)建:用戶可以在其他列上創(chuàng)建索引,以加速查詢速度創(chuàng)建/刪除索引可以使用createindex語句手動創(chuàng)建索引createindex索引名on表名(列名[,列名])刪除
2、索引使用dropindex語句刪除索引創(chuàng)建索引的原則下列情況下可以創(chuàng)建索引字段取值分布范圍很廣字段中報刊大量的空值字段經(jīng)常出現(xiàn)在where子句或者連接條件中表經(jīng)常被訪問、數(shù)據(jù)量很大,且通常每次訪問的數(shù)據(jù)量小于記錄總量的2%-4%下列情況可以不用創(chuàng)建索引表很小字段不經(jīng)常出現(xiàn)在where子句中每次訪問的數(shù)據(jù)量大于記錄總數(shù)的2%-4%表經(jīng)常更新被索引的字段作為表達(dá)式的一部分被引用查看索引查詢用戶字典視圖user_indexes可得到用戶的所有索引查詢用戶字典視圖user_ind_columns可以獲知索引建立在哪些字段上序
3、列序列是用于生成唯一、連續(xù)序號的對象序列可以是升序的,也可以是降序的使用CREATESEQUENCE語句創(chuàng)建序列SQL>CREATESEQUENCEtoys_seqSTARTWITH10INCREMENTBY10MAXVALUE2000MINVALUE10NOCYCLECACHE10;指定第一個序號從10開始指定序號之間的間隔為10表示序列的最大值為2000表示序列的最小值為10在達(dá)到最大值后停止生成下一個值指定內(nèi)存中預(yù)先分配的序號數(shù)訪問序列通過序列的偽列來訪問序列的值NEXTVAL返回序列的下一個值CURRVAL返
4、回序列的當(dāng)前值SQL>INSERTINTOtoys(toyid,toyname,toyprice)VALUES(toys_seq.NEXTVAL,‘TWENTY’,25);SQL>INSERTINTOtoys(toyid,toyname,toyprice)VALUES(toys_seq.NEXTVAL,’MAGICPENCIL’,75);指定序列的下一個值SQL>SELECTtoys_seq.CURRVALFROMdual;檢索序列的當(dāng)前值更改和刪除序列SQL>ALTERSEQUENCEtoys_seqMAXVALU
5、E5000CYCLE;使用ALTERSEQUENCE語句修改序列,不能更改序列的STARTWITH參數(shù)使用DROPSEQUENCE語句刪除序列SQL>DROPSEQUENCEtoys_seq;數(shù)據(jù)庫的查詢SELECT語句的格式SELECT[predicate]{*
6、table.*
7、[table.]field[,[table.]field2[,...]]}[ASalias1[,alias2[,...]]]FROMtableexpression[,...][WHERE...][GROUPBY...][HAVING...]
8、[ORDERBY...][WITHOWNERACCESSOPTION]SELECT中的條件語句FROM條件子句SELECTfieldlistFROM表名WHERE條件子句SELECTfieldlistFROM表名WHERE條件DISTINCT屬性詞用法SELECT[*
9、DISTINCT]FROMtableSELECT中的條件語句BETWEEN...AND運算符expr[Not]BETWEENvalue1ANDvalue2LIKE操作數(shù)expressionLIKE"pattern"expression空值的查詢列的別名
10、數(shù)據(jù)查詢-排序1升序排列SELECTStudentIDAs學(xué)員編號,(Score*0.9+5)As綜合成績FROMScoreWHERE(Score*0.9+5)>60ORDERBYScore降序排列SELECTAu_Lname+'.'+Au_fNameASEMPFromAuthorsUnionSELECTfName+'.'+LNameASEMPFromEmployeeORDERBYEMPDESC數(shù)據(jù)查詢-排序2按多列排序SELECTStudentIDAs學(xué)員編號,ScoreAs成績FROMScoreWHEREScor
11、e>60ORDERBYScore,CourseID思考:排序中的字段,可以使用表達(dá)式嗎?——如果不可以,請說明原因;——如果可以,請舉例說明;問題成績表中存儲了所有學(xué)員的成績,我想知道:學(xué)員的總成績、平均成績、有成績的學(xué)員總共有多少名怎么辦?聚合函數(shù)-1SUMAVGSELECTSUM(ytd_sales)FROMtitlesWHEREtype=