oracle 单表查询 详细图文
1.簡單查詢
1.1查詢指定列
???? (1)指定部分列
?????????????? 檢索所有教師的姓名,名稱,工資,參加工作時間等信息
???????? SELECT? <*/expression1 [AS alias1],....>FROM talbe;
???????? SELECT 子句<>中的內容用于指定要檢索的列,星號*表示檢索所有列,expression用于指定要檢索的列或表達式,alias用于指定列或表達式的別名,FROM 子句用于指定要檢索的表
檢索所有教師的姓名,職稱,工資,參加工作的世界等
檢索所有教師的姓名,職稱,工資,參加工作的世界等,日期日期格式按照YYYY-MM-DD輸出
??????? 2.指定全部列
?????????? 指定全部列有兩種方法,其一是在SELECT子句<>中選出*號,其二是在SELECT 子句expression中指定全部列名
??????????? 一在顯示檢索結果時,列的順序不可以改變(與DESCRIBE命令顯示的表結構的順序一致)
??????? 3重復記錄行的處理(DISTINCT關鍵字)
??????? 當選擇主鍵以外的列執行查詢操作時,可能會出現兩行或多行完全相同的查詢結果,沒有實際意義,一般需要取消完全重復的記錄行,使用DISTINCT關鍵字來完成
??????? 未使用DISTINCT
????????
使用DISTINCT
????????? 3.改變輸出
??????????? 使用SELECT語句執行查詢操作時,首先會顯示列標題,然后顯示記錄行數據,為了更清晰的顯示查詢結果,有時需要改變列標題的顯示樣式,有時需要改變顯示的數據。使用列別名。字符串連接和算式表達式可達到目的?
??????????? (1)使用列別名
??????????????? SELECT<>子句中,alias用于指定列或表達式的別名。通過使用列別名可以改變表達式的顯示樣式。如果別名有大小寫之分,或者包含特殊字符或空格,那么別名上必須加""(英文雙引號)
????????????
??????????? 2.使用字符串連接
??????????? SELECT<>子句中,expression可以使用字符串連接,以顯示更有意義的查詢結果。使用“||”操作符實現字符串連接。連接的字符串上要使用''(英文單引號)
????????????
??????????? 3.使用算術表達式
????????????? SELECT<>子句中,expression可以使用含有加減乘除運算符的算術表達式,運算次序與數學上的規定一致,若要改變運算次序,也可以使用括號
????????????
??????????? 空值處理
??????????? 空值(NULL)用來在數據庫中表示未知或未確定的值,任何數據類型的列,只要沒有使用非空(NOT NULL)或主鍵(PRIMARY KEY)完整性限制,都可能出現控制(NULL)
??????????? 空值(NULL)沒有數據類型,在oracle數據庫中表示未知或未確定的值,無論是數字類,文本類,或者日期類,都可以用同一的空值NULL表示
??????????? 1.空值null的形成
??????????? 通過使用SQL語句INSERT插入數據或UPDATE來修改數據時,可以在表中某列形成空值(NULL)。
??????????? 2.空值(null)參與運算
??????????? 當空值(NULL)參與運算時,如果空值(null)出現在算術表達式中,其運算結果也為NULL,如果空值NULL出現在字符串連接表達式中,ORALCE將其作為空串即等價于零個字符串處理
??????????? oracle提供了3個函數
??????????? (1)NVL(expression,expr2)其中expr1與expr2為函數表達式,可以是任意oracle內部數據類型,但expr1與epxr2數據類型必須匹配,NVL()功能為,如果參數表達式expr1值為null,則nvl()函數返回expr2的值:如果參數表達式expr1值不為null,則nul()函數返回參數表達式expr1的值
?????????????? (2)NVL2(expr1,expr2,expr3)expr1,expr2,expr3
?????????????????? expr1的值為null,返回expr3的值? expr1的值不為null,則返回expr2的值(expr1,expr2,expr3數據類型匹配且為oralce內部類型)
??????????????? (3)函數COALESCE()
??????????????? COALESCE(expr1[ , expr2 ].....)expr1,expr2,expr3數據類型匹配且為oralce內部類型,函數 功能為:返回參數列表中的第一個非空值,如果所有表達式都是空值,最終將返回一個空值。
???????????? 4.2條件查詢
??????????? 使用WHERE子句可以指定約束條件。
??????????? SELECT<*/expression1 [AS alias1],..........> FROM talbe [WHERE condition(s) ]
??????????? WHERE用于指定條件,condition(s)給出具體的條件表達式。當條件表達式取TRUE值時,會檢索相應行的數據:當條件表達式為FALSE值時,則不會檢索該行數據
?????????????????????????? WHERE子句中常見的比較條件
?? = ??????? 等于????
??? >??????? 大于
??? >=?????? 大于等于
??? <??????? 小于
??? <=??????? 小于等于
??? <>.!=??????? 不等于
???
??? 包含測試????
??? IN??????? 在指定集合中
??? NOT IN??????? 不在指定集合中
??? 范圍測試
??? BETWEEN AND??????? 在指定范圍內
??? NOT BETWEEN AND??????? 不在指定范圍內
??? 匹配測試
??? LIKE??????? 于指定模式匹配
??? NOTLIKE??????? 不與指定模式匹配
??? NULL測試????????
??? IS NULL??????? 是NULL值
??? IS NOT NULL??????? 不是NULL值
????邏輯運算符
??? AND??????? 邏輯與運算符????????
??? OR??????????? 邏輯或運算符
??? NOT??????????? 邏輯非運算符
????????????????
?? 2單一條件查詢???
??????? 單一條件查詢:是指在WHERE子句condition(s)中,同時使用一個比較符構成查詢條件
??? (1)使用算術運算比較符
????????
?????????
??????? (2)使用包含測試
??????????? 在where語句中使用IN條件,IN條件被用來顯示一個組中的成員關系。當有一個滿足條件的離散值列表時,會用到IN條件。所有這些有效值將被作為一個逗號分隔的列表放入圓括號中。所有這些值必須有相同的數據類型---數字 字符 日期?;旌鲜褂眠@些類型是不合理的,在測試列的時候 這些值必須有相同的數據類型。
????????
??????? 3使用范圍測試
??????? WHERE 子句中使用BETWEEN-AND操作符用于指定一個范圍測試條件,在BETWEEN操作符后指定較小的一個值,在AND操作符后指定較大的一個值。BETWEEN-AND條件可以用于數字,字符和日期型數據。
????????
??????? 4使用匹配測試LIKE
??????? WHERE子句中LIKE條件的查詢,用于數據的查找模式。這些模式是使用通配符指定的,通配符中用于LIKE條件。可以使用一種模式類匹配測試任意一種主要數據類型(文本數字日期)的一個列
??????? %百分號?????? 表示0個或多個字符
??????? _下劃線??????? 表示單個字符
????????
??????? 5使用空值測試IS NULL
??????? WHERE子句中使用IS NULL條件,空值(NULL)用來在數據庫表示實際值未知或未確定的情況? 必須將條件寫為IS NULL,任何數據類型的值只要沒有使用非空NUT NULL或主鍵PRIMARY KEY完整性限制,都可能出現空值。
?????? 復合條件查詢
?????? 1.分別使用邏輯運算符AND,OR,NOT
????????
??? ????
????????
??????? 2組合使用邏輯條件
??????? 在邏輯運算符中AND,OR,NOT中,NOT優先級最高,AND其次,OR最低,并且他們優先級低于任何一種操作符,要改變優先級則需要使用括號
????????
??????? 3記錄排序
??????? 執行SELECT語句時,若沒有指定顯示查詢結果數據行的先后順序,此時會按照表中數據插入的先后順序來顯示數據行。但在實際應用中,經常需要按特定的順序排列數據。使用含有OREDR BY子句的SELECT語句可以達到目的
?????????? SELECT <*/expression1 [AS alias1],......> FROM? table [ WHERE condition(s) ]? [ORDER BY expressino1 [ AS1 | DESC] ,.........];
??????? ORDER BY 子句的expression用于指定排序所依據的列或表達式,ASC關鍵字指定進行升序排序(默認),DESC關鍵字指定進行降序排序.
????????? (1).按單一序列排序
??????????????? 1升序排序 按照ORDER BY子句的expression指定的列或表達式的值,從小到大排列數據行,在ORACLE數據庫中,當按升序排序時,如果指定的排序列包含有NULL值的記錄行,那么這些記錄行會排列到最后面
????????????????
??????????????? 升序排序可省略ASC
????????????????
??????????? (2)降序排序
??????????????? 降序排序是按照ORDER BY子句的expression指定的列或表達式的值,從大到小排列數據行,在ORACLE數據庫中,當按降序排序時,如果所指定的排序列包含有NULL值的記錄行,那么這些記錄行會排列在最前面.
????????????????? 如果在SELECT子句中為列或表達式指定了別名,那么當執行排序操作時,既可以使用列或表達式進行排序,也可以使用列或表達式別名進行排序,如果列名或表達式名稱較長,那么使用列位置序號排序可以縮短排序語句的長度。
??????????? 使用列序號
????????????
??????????? 使用列別名
????????????
??????????? (2)按多列排序
????????????????
??????? ??? 4.4分組查詢
??????????? 查詢結果中的數據可以是原表整個列中數據分組統計值。比如經常需要統計不同專業的學生人數,教師的平均工資,教師的工資總和等,通過使用列(Agfgregate)函數。GROUP BY子句。以及HAVING子句來共同完成
?????????? SELECT <*/expression1 [AS alias1],....>? FROM table? [WHERE condition(s) ] [GROUP BY expression1,......] [HAVING condition(s) ];
??????????? SELECT 子句中 ,expressio用于指定選擇列表中的列或表達式,其中可以包含列函數,用有指定分組函數:GROUP BY子句中,expression用于指定分組表達式,HAVING子句中,condition用于指定限制分組結果的條件
??????????? (1)列函數及其應用
??????????? 表中的數據使用列函數進行統計,列函數會檢查列中的所有數據,原表中的每個行總是形成一個單行的統計結果
??????????????????????????????????????????????????? 列函數概述
用于字符。數值。日期型數據的列函數
MAX (column) ????? 列中的最大值
MIN (column) ????? 列中的最小值
COUNT(*) ?? 表中行的總數
COUNT(COLUMN)??? 列不為null的行
COUNT(distince column)? Column指定列中 相異值的數量
只用于數值型數據的列函數
SUM(column)??????? 列中所有值的總和
AVG(column)??????? 列中所有值的平均數
STDDEV(column) ??????? 列的標準偏差
VARIANCE??????? 列的方差
????????
????????
????????
????????
??????? 4.2GROUP? BY子句
??????? 通過使用GROUP BY子句,可以在表中達到數據分組的目的
??????? 在GROPOUP BY子句中,expression用于指定分組表達式,可以指定一個或多個表達式作為分組依據,當依據單列或單個表達式進行分組時,會基于列的每個不同值生成一個數據統計結果,當依據多列或多個表達式分組時,會基于多個列的不同值生成數據統計結果
????????`
????????
????????
????????
??????? 4.3HAVING子句
??????? GROUP BY子句用于指定分組的依據,而HAVING子句則指定條件,用于限制分組顯示結果。HAVING子句中condition用于限定分組結果的條件,HAVING子句必須與GROUP BY子句一起使用,而GROUP BY子句通常是單獨使用的
????????
????????????
?????
總結
以上是生活随笔為你收集整理的oracle 单表查询 详细图文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神舟Z7 KP5D1驱动
- 下一篇: windows 常用快捷键