Oracle 查询基础
生活随笔
收集整理的這篇文章主要介紹了
Oracle 查询基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle SELECT示例
為了方便大家更加了解和掌握Oracle Select語句,下面為大家帶來一些示例代碼。1. 查詢單個列的數據
要從客戶(customers)表中獲取客戶名稱(name)列,請使用以下語句:2. 查詢多個列的數據
要從多個列查詢數據,請指定一個以逗號分隔的列名稱列表。3. 查詢表中所有列的數據
以下示例將檢索customers表的所有列中的數據,列出所有列的名稱,如下所示:Oracle Order By用法詳解
在Oracle中,ORDER BY子句可以用來對一列或多列的結果集按升序或降序進行排序。本文,將為大家帶來ORDER BY子句的具體用法。Oracle ORDER BY子句基本用法
在Oracle中,表中是以非指定順序存儲行數據記錄的,它不管行插入數據庫的順序如何。要按列以升序或降序查詢行記錄,必須明確指示Oracle數據庫要如何去排序。 例如,您可能希望按名稱的字母順序列出所有客戶,或者按照從最低到最高信用限額的順序顯示所有客戶。 要對數據進行排序,我們可以將ORDER BY子句添加到SELECT語句中,參考以下語法: SELECT column_1, column_2, column_3, ... FROM table_name ORDER BY column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST], column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST], 要按列排序結果集,可以在ORDER BY子句之后列出該列。 按照列名是一個排序順序,可以是:- ASC表示按升序排序
- DESC表示按降序排序
1. 按列排序行示例
要按照字母順序按升序排列客戶名稱,請使用以下語句: 要按字母順序降序排列客戶名稱,請在ORDER BY子句中的列名之后顯式使用DESC,如下所示:2. 按多個列排序行示例
要對多列進行排序,可以用逗號分隔ORDER BY子句中的每列。 在上面的這個結果中: 首先,按job進行升序排序。 其次,如果job相同,按ename 降序排列3. 按列位置排序行示例
不需要指定用于排序數據的列名稱。如果您愿意,可以使用ORDER BY子句中列的位置。 請參考下語句: SELECT name, credit_limit,address FROM customers ORDER BY 2 DESC, 1; 在這個例子中,name列的位置是1,credit_limit列的位置是2。相當于以下查詢語句: SELECT name, credit_limit,address FROM customers ORDER BY credit_limit DESC, name;4.用NULL值排序行的示例
當使用非NULL值對混合NULL進行排序時,Oracle允許指定哪個應該首先出現。 要放置NULL值在后面,可以使用NULLS LAST,如下面的語句所示:5. 按函數或表達式排序數據
ORDER BY子句可在一列上應用一個函數,例如字符串函數,數學函數等,并按函數的結果對數據進行排序。 例如,以下語句使用ORDER BY子句中的UPPER()函數來區分客戶名稱的大小寫: SQL>?select?empno,ename,comm?from?emp?order?by?upper(ename);Oracle Distinct用法
SELECT DISTINCT可以用來過濾結果集中的重復行,確保SELECT子句中返回指定的一列或多列的值是唯一的。本文將為大家帶來SELECT DISTINCT的具體用法。Oracle SELECT DISTINCT用法
SELECT DISTINCT語句的語法如下: SELECT DISTINCT column_1 FROM table_name; DISTINCT子句只能在SELECT語句中使用。 請注意,DISTINCT不是SQL標準的UNIQUE的同義詞。總是使用DISTINCT而不使用UNIQUE是一個好的習慣。Oracle DISTINCT示例
下面來看看如何使用SELECT DISTINCT來看看它是如何工作的一些例子。1. Oracle DISTINCT在一列上應用的例子
以下示例檢索所有聯系人的名字:2. Oracle DISTINCT應用多列示例
在此示例中,job,ename列的值都用于評估結果集中行的唯一性。3. Oracle DISTINCT和NULL
DISTINCT將NULL值視為重復值。如果使用SELECT DISTINCT語句從具有多個NULL值的列中查詢數據,則結果集只包含一個NULL值。 正如上圖所看到的,只返回一個NULL值。Oracle Where子句用法
Oracle WHERE子句簡介
WHERE子句指定SELECT語句返回符合搜索條件的行記錄。下面說明了WHERE子句的語法: SELECT column_1, column_2, ... FROM table_name WHERE search_condition ORDER BY column_1, column_2; WHERE子句出現在FROM子句之后但在ORDER BY子句之前。在WHERE關鍵字之后是search_condition - 它定義了返回行記錄必須滿足的條件。 除了SELECT語句之外,還可以使用DELETE或UPDATE語句中的WHERE子句來指定要更新或刪除的行記錄。Oracle WHERE示例
1. 通過使用簡單的相等運算符來查詢行記錄
2. 使用比較運算符選擇行記錄
| 1 | = | 等于 |
| 2 | !=,<> | 不等于 |
| 3 | > | 大于 |
| 4 | < | 小于 |
| 5 | >= | 大于或等于 |
| 6 | <= | 小于或等于 |
| 7 | IN | 等于值列表中的任何值 |
| 8 | ANY/SOME/ALL | 將值與列表或子查詢進行比較。它必須以另一個運算符(例如:=,>,<)作為前綴。 |
| 9 | NOT IN | 不等于值列表中的任何值 |
| 10 | [NOT]?BETWEEN?n AND m | 相當于[Not] >= n?且 <= y。 |
| 11 | [NOT]?EXISTS | 如果子查詢返回至少一行,則返回true |
| 12 | IS [NOT] NULL | 測試NULL的值 |
選擇包含值的行作為字符串的一部分
SQL> select * from emp where ename like 'SCO%'; EMPNO ENAME? ? ? JOB? ? ? ?? MGR HIREDATE? ? ? ? ? SAL? ? ? COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ 7788 SCOTT? ? ? ANALYST? ? 7566 1987/4/19? ?? 3000.00? ? ? ? ? ? ?? 20Oracle And or子句
Oracle AND是一個邏輯運算符,可以用來組合兩個或更多的布爾表達式。本文就將為大家帶來Oracle AND的使用方法。 Oracle AND運算符語法 AND運算符是一個邏輯運算符,它組合了布爾表達式,如果兩個表達式都為真,則返回true。 如果其中一個表達式為假,則AND運算符返回false。 AND運算符的語法如下所示: expression_1 AND expression_21. Oracle AND結合兩個布爾表達式的例子
以下示例查找具有客戶編號為2的那些狀態為掛起(Pending)的訂單: SELECT order_id, customer_id, status, TO_CHAR(order_date,'YYYY-MM-DD') AS order_date FROM orders WHERE? status = 'Pending'? AND customer_id = 2 ORDER BY order_date;2. Oracle AND結合兩個以上的布爾表達式的例子
可以使用多個AND運算符來組合布爾表達式。 參考以下查詢語句: SELECT order_id, customer_id, status, TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROM orders WHERE status = 'Shipped' AND salesman_id = 60 AND EXTRACT(YEAR FROM order_date) = 2017 ORDER BY order_date;3. Oracle AND與OR運算符結合示例
可以將AND運算符與其他邏輯運算符(如OR和NOT)組合,以形成一個條件。 SELECT order_id, customer_id, status, salesman_id, TO_CHAR(order_date, 'YYYY-MM-DD') AS order_date FROM orders WHERE (status = 'Canceled' OR status = 'Pending') AND customer_id = 44 ORDER BY order_date;Oracle Fetch子句
FETCH子句在Oracle中可以用來限制查詢返回的行數,本教程將教大家如何使用FETCH子句。 Oracle FETCH子句語法 以下說明了行限制子句的語法: [ OFFSET offset ROWS] FETCH? NEXT [? row_count | percent PERCENT? ] ROWS? [ ONLY | WITH TIES ]?
OFFSET子句
OFFSET子句指定在行限制開始之前要跳過行數。OFFSET子句是可選的。 如果跳過它,則偏移量為0,行限制從第一行開始計算。 偏移量必須是一個數字或一個表達式,其值為一個數字。偏移量遵守以下規則: 如果偏移量是負值,則將其視為0。 如果偏移量為NULL或大于查詢返回的行數,則不返回任何行。 如果偏移量包含一個分數,則分數部分被截斷。FETCH子句
FETCH子句指定要返回的行數或百分比。 為了語義清晰的目的,您可以使用關鍵字ROW而不是ROWS,FIRST而不是NEXT。 例如,以下子句的行為和產生的結果相同: FETCH NEXT 1 ROWS FETCH FIRST 1 ROWONLY | WITH TIES選項
僅返回FETCH NEXT(或FIRST)后的行數或行數的百分比。 WITH TIES返回與最后一行相同的排序鍵。請注意,如果使用WITH TIES,則必須在查詢中指定一個ORDER BY子句。如果不這樣做,查詢將不會返回額外的行。Oracle FETCH子句實例
1. 獲取前N行記錄的示例
以下語句返回庫存量最高的前10個產品: -- 以下查詢語句僅能在Oracle 12c以上版本執行 SELECT product_name, quantity FROM inventories INNER JOIN products USING(product_id) ORDER BY quantity DESC? FETCH NEXT 5 ROWS ONLY;2. WITH TIES示例
以下查詢使用WITH TIES選項的行限制子句: -- 以下查詢語句僅能在Oracle 12c以上版本執行 SELECT product_name, quantity FROM inventories INNER JOIN products USING(product_id) ORDER BY quantity DESC? FETCH NEXT 10 ROWS WITH TIES; 即使查詢請求了10行數據,因為它具有WITH TIES選項,查詢還返回了另外兩行。 請注意,這兩個附加行在quantity列的值與第10行quantity列的值相同。Oracle In子句
Oracle IN運算符可以用來確定值是否與列表或子查詢中的任何值相匹配,本文就將為大家帶來Oracle IN運算符的具體用法。Oracle IN語法:?
確定表達式是否與值列表匹配的Oracle IN運算符的語法如下所示: expression [NOT] IN (v1,v2,...) 并且表達式的語法與子查詢匹配: expression [NOT] IN (subquery) 參數 在上面語法中,這里將介紹每個參數含義: expression - 該表達式(expression)是任何有效的表達式,它可以是要匹配的表的列。 v1, v2, v3.. - IN運算符后面是逗號分隔值列表,用于測試匹配。所有值必須與表達式具有相同的數據類型。 subquery - 子查詢返回一列的結果集以測試匹配。該列還必須具有與表達式相同的數據類型。 返回值 如果表達式(expression)的值等于值列表中的任何值或由子查詢返回的結果集,則IN運算符返回true。 否則,它返回false。 NOT運算符否定IN運算符的結果。<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
總結
以上是生活随笔為你收集整理的Oracle 查询基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 外键
- 下一篇: 3 Oracle管理表