Oracle基本知識

首先創建一個簡單的數據庫作爲示例數據庫,數據庫名稱爲school_db, 裏面有三張表  Department_TBL(DNO,DName),Class_TBL(CNO,CName,DNO),Student_TBL(SNO,SName,SSex,CNO)

一 基本查詢

基本語法:select  (查詢列表 |* )  from  ( 表列表 )

說明: 查詢列表 可以是表的字段,表達式,函數。 表列表 可以包含多張表

示例:查詢所有學生的基本信息

Select * from Student_TBL 

二 where 條件查詢

基本語法:select ( 查詢列表 |*) from ( 表列表 ) where ( 限制條件 )

說明:where 關鍵字後面的限制條件不能包含聚合函數

示例:查詢所在班級編號是“003” 的學生的基本信息

Select * from Student_TBL where CNO=’003’ 

三 關鍵字in 的使用

基本語法:select ( 查詢列表 |*) from ( 表列表 ) where ( 字段名 ) in ( 值集合 )

說明:in 關鍵字的作用是查詢某一字段是否在一個集合中,一般在 where 語句中使用

示例: 查詢學號爲 23 34 35 40  學生的信息

Select * from Student_TBL where SNO in (23,34,35,40) 

四 between 和  Not between 的使用

基本語法:select ( 查詢列表 |*) from ( 表列表 ) where ( 字段名 ) between||not between  1 AND  2

說明:判斷某個字段的值是否在一個範圍之內

示例:查詢所有學號大於5 小於 30 的學生的信息

Select * from Student_TBL where SNO between 5 and 30 

五 消除結果集中的重複行

基本語法:select distinct column1,… from ( 表列表 )

說明:去除結果集中跟在distinct 關鍵字後面所有字段的值相等的記錄

示例:查詢所有學生的信息, 刪除名字相同的多餘行

Select distinct column1,… from Student_TBL 

六 返回指定的行數(百分率)

基本語法:select top n [percent](column1,…) from ( 表列表 )

說明:n 爲要返回的行數,若含有 percent 關鍵字則按百分比返回,則此時 n 必須在 0~100 之間,若查詢語句中含有 order by  則先對查詢結果進行排序,再執行篩選

示例:返回前十名學生的基本信息

Select top 10 * from Student_TBL 

返回前百分之十的學生的基本信息

Select top 10 percent * from Student_TBL 

七 改變查詢標題

基本語法:select  ‘ 自定義標題 ’=column1,…. From ( 表列表 ) select column1 ‘ 自定義標題 ’,…. From ( 表列表 ) select column1 as ‘ 自定義標題 ’,… from ( 表列表 )

說明:改變的只是查詢結果的標題,並沒有改變表的標題

示例:查詢學生的基本信息,SNO SName CNO 分別用 學號 姓名 ”,” 所屬班級 顯示

、這裏只使用第三種方法演示了

Select ‘學號 ’ as SNO,’ 姓名 ’ as SName,’ 所屬班級 ’ as ‘CNO’ from Student_TBL

八 在查詢結果中顯示字符串

基本語法:在select  語句中,將增加的字符串用單引號括起來然後和列的名字寫在一起,中間用逗號分開

示例:查詢所有學生信息,顯示的結果的形式是 學號 +“ 我的姓名是 +” 性命 + 班級編號

Select SNO,’我的姓名是 ’,SName,CNO from Student_TBL

九 order by 的使用

基本語法:

select * from table_Name [where..] order by column1 [asc]desc]… 

說明:order by  後面可以指定多個列,默認是按升序方式排列的, order by  放在 where  語句之後

示例:查詢所有學好大於23 號的學生信息,並按學號的降序排列

Select * from Student_TBL where SNO>23 order by SNO desc 

十 使用Like 實現模糊查詢

基本語法:select * from table_Name where column like ( 匹配條件 )

說明:“%” 匹配任意長度的(長度可以爲 0 )字符串, “_” 匹配任意單個字符, “[]” :匹配所給定範圍或集合中的任意單個字符, “[^]” 匹配所給定的不在所給定的集合或範圍中的任意單個字符,通配符或字符串必須用單引號括起來

示例:查詢所有姓李的同學地信息

10  Select * from Student_TBL where SName like ‘ %’ 

查詢所有學生名字中第二個字爲 的同學的信息

11  Select * from Student_TBL where SName like ‘_ %’ 

查詢所有編號中含有’e,t,y’ 字符的班級信息

12  Select * from Class_TBL where CNO like ‘[e,t,y]’ 

查詢所有編號中不含有’e,t,y’ 字符的班級信息

13  Select * from Class_TBL where CNO like ‘[^e,t,y]’ 

十一 使用is null

基本語法:

14  select * from table_Name where column is null 

說明:查詢指定列爲輸入數據的數據行,通常用在where 語句中

示例:查詢還沒有分配班級的學生的信息

15  Select * from Student_TBL where CNO is null 

十二 使用compute 進行計算

基本語法:select * from table_name where  查詢條件  compute  聚合函數

說明:用來計算總計或進行分組小計,總計或小計值作爲附加行出現在查詢結果中

示例:計算在編號爲‘001’ 班級的學生的信息並統計該班有多少個學生

16  Select * from Student_TBL where CNO=’001’ compute count(*) 

十三 使用compute by 分組查詢結果

基本語法:select * from table_Name [where..] order by column compute  聚合函數  by column

說明:在使用compute by 之前必須先使用 order by  對要進行分組的列進行排序,注意,在 oerder by  中進行排序的列的數量和順序必須和 compute by  後的項一樣

示例:根據不同班級分組統計各個班級學生的信息

17  Select * from Student_TBL order by CNO compute count(SNO) by CNO 

十四 使用group by

基本語法:select * from table_name [where…] group by column

說明:在select  子句中使用聚合函數時, group by 計算每組的彙總值,使用 group by 子句時,在 select  子句中出現的列名或者出現在聚合函數中,或者出現在 group by  子句後面,否則會抱錯,另外 group by 後面還可以恩  with cube||rollup,

示例:統計每個班級有多少學生,不顯示學生的信息,只顯示統計信息

18  Select CNO,count(SNO) from Student_TBL group by CNO 

十五使用having 語句

基本語法:select * from table_name [where …] group by column having …

說明:having 子句用於限定對組或者聚合函數的查詢條件,該子句常用於 group by  子句後面,在查詢結果分組後對組判斷是否滿足查詢條件,在分組之前可以用 where 語句判斷查詢條件,使用 where 比使用 having 更有效,因爲它先 將不滿足條件的行過濾掉,從而減少了要進行分組的行數

示例:分組統計除編號爲‘001’ 外所有班級學生的人數

19  Select CNO,count(SNO) from Student_TBL group by CNO having CNO<>’001’ 

十六 子查詢

基本語法:

說明:子查詢是在查詢中包含另一個查詢的查詢,可以使用子查詢代替表達式,自查詢只能返回一列數,有時只返回但個值

示例:查詢班級人數大於平均班級人數的班級

20  Select * from Class_TBL where (select count(*)   

21  from student where CNO=Class_TBL.CNO)>((select count(*) from Student_TBL)/(select count(*) from Class_TBL)) 

十七 使用union 運算符合並多個查詢結果

基本語法:

22  select column1 from table1_name union select column2 from table2_name 

說明:所有查詢中的列數和列的順序必須相同,所有查詢中按順序對應列的數據類型必須相同或兼容,如果希望重新排序多個查詢結果的合併結果,則在最後的select  語句中使用 order by 子句

十八 查詢多個表或視圖的信息

基本語法:select column1,column2,… from talbe1,table2,…

說明:在涉及多表查詢時必須使用where 語句給出多表之間的連接條件,對來自 N 各表或視圖查詢要寫出 N-1  個連接條件

示例:查詢每個學生所在的系部的名稱,班級的名稱和姓名

23  Select DName,CName,SName   

24  from Student_TBL S,Class_TBL C,Department_TBL Dwhere S.CNO=C.CNO and C.DNO=D.DNO 

十九 相等連接與自然連接:相等連接是將要連接的列作相等比較的連接,在相等連接列中只保留一個連接列的連接稱爲自然連接

二十 比較連接:表與表之間的連接不使用“=” 連接,而是使用比較運算符的連接

二十一 自連接就是表與它自己進行連接

二十二 左連接,右連接和全連接

二十三 使用exists :在 where 子句中可以使用 exists 子句,它用於測試跟隨的子查詢中的行是否存在

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章