395
財經資訊
SELECT__數據操作語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
該語句用於查詢表中的內容。
基本查詢
格式
SELECT
[ALL | DISTINCT]
selectexpr [AS othername] [, selectexpr ...]
[FROM table_references]
[WHERE where_conditions]
[GROUP BY group_by_list]
[HAVING search_confitions]
[ORDER BY order_list]
[LIMIT {[offset,] rowcount | rowcount OFFSET offset}]
[FOR UPDATE];
SELECT子句說明如下所示。
子句 | 說明 |
ALL | DISTINCT | 在數據庫表中,可能會包含重複值。指定“DISTINCT”,則在查詢結果中相同的行隻顯示一行;指定“ALL”,則列出所有的行;不指定時,默認為“ALL”。 |
select_expr | 列出要查詢的列名,用“,”隔開。也可以用“*”表示所有列。 |
AS other_name | 為輸出字段重新命名。 |
FROM table_references | 指名了從哪個表或哪些表中讀取數據。(支持多表查詢) |
WHERE where_conditions | 可選項,WHERE子句用來設置一個篩選條件,查詢結果中僅包含滿足條件的數據。where_conditions為表達式。 |
GROUP BY group_by_list | 用於進行分類匯總。 |
HAVING search_confitions | HAVING子句與WHERE子句類似,但是HAVING子句可以使用累計函數(如SUM,AVG等)。 |
ORDER BY order_list [ASC | DESC] | 用來按升序(ASC)或者降序(DESC)顯示查詢結果。不指定ASC或者DESC時,默認為ASC。 |
[LIMIT {[offset,] row_count |row_count OFFSET offset}] | 強製 SELECT 語句返回指定的記錄數。LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1)。 如果隻給定一個參數,它表示返回記錄行的最大數目,偏移量為0。 |
FOR UPDATE | 對查詢結果所有行上排他鎖,以阻止其他事務的並發修改,或阻止在某些事務隔離級別時的並發讀取。 |
JOIN句法
JOIN連接分為內連接和外連接。外連接又分為左連接、右連接和全連接。兩個表連接後,可以使用ON指定條件進行篩選。
OceanBase1.0版本裏JOIN可以支持USING子句,JOIN的連接條件中必須至少有一個等值連接條件。
內連接:結果中隻包含兩個表中同時滿足條件的行。
左連接:結果中包含位於關鍵字LEFT [OUTER] JOIN左側的表中的所有行,以及該關鍵字右側的表中滿足條件的行。
右連接:結果中包含位與關鍵字[RIGHT] [OUTER] JOIN右側的表中的所有行,以及該關鍵字左側的表中滿足條件的行。
全連接:結果中包含兩個表中的所有行。
集合操作
OceanBase中的集合操作主要包括UNION、EXCEPT和INTERSECT。
UNION句法
UNION用於合並兩個或多個SELECT語句的結果集。使用UNION需要注意以下幾點:
UNION內部的SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條SELECT語句中的列的順序必須相同。
默認地,UNION操作符選取不同的值。如果允許重複的值,請使用UNION ALL。
UNION 結果集中的列名總是等於UNION中第一個SELECT語句中的列名。
UNION指令的目的是將兩個或多個SELECT語句的結果合並起來。從這個角度來看,UNION跟JOIN有些類似,因為這兩個指令都可以由多個表格中擷取資料。但是UNION隻是將兩個結果聯結起來一起顯示,並不是聯結兩個表。
EXCEPT句法
EXCEPT用於查詢第一個集合中存在,但是不存在於第二個集合中的數據。
INTERSECT句法
INTERSECT用於查詢在兩個集合中都存在的數據。
DUAL虛擬表
DUAL是一個虛擬的表,可以視為一個一行零列的表。當我們不需要從具體的表來取得表中數據,而是單純地為了得到一些我們想得到的信息,並要通過SELECT完成時,就要借助一個對象,這個對象就是DUAL。一般可以使用這種特殊的SELECT語法獲得用戶變量或係統變量的值。
當SELECT語句沒有FROM子句的時候,語義上相當於FROM DUAL,此時,表達式中隻能是常量表達式。
格式
SELECT
[ALL | DISTINCT]
select_list
[FROM DUAL [WHERE where_condition]]
[LIMIT {[offset,] rowcount | rowcount OFFSET offset}];
SELECT…FOR UPDATE句法
格式
SELECT ... FOR UPDATE [WAIT n| NOWAIT];
其中:
WAIT子句指定等待其他用戶釋放鎖的秒數,防止無限期的等待。
NOWAIT不等待行鎖釋放。
SELECT … FOR UPDATE可以用來對查詢結果所有行上排他鎖,以阻止其他事務的並發修改,或阻止在某些事務隔離級別時的並發讀取。即使用FOR UPDATE語句將鎖住查詢結果中的元組,這些元組將不能被其他事務的UPDATE,DELETE和FOR UPDATE操作,直到本事務提交。
注意,目前OceanBase實現有如下限製:必須是單表查詢。
例如:
SELECT * FROM a FOR UPDATE;
IN和OR
OceanBase支持邏輯運算“IN”和“OR”。
最後更新:2016-11-24 11:23:47
上一篇:
DELETE__數據操作語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
下一篇:
用戶及權限管理__數據庫管理語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
類型1:圖片小文件加速__用戶指南_CDN-阿裏雲
監控報警__控製台使用指南_消息隊列 MQ-阿裏雲
查詢交換機列表__交換機相關接口_API 參考_雲服務器 ECS-阿裏雲
GetShipperStatus__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
2.1 數據恢複至7天內任意時間點__2. RDS最佳實踐_數據庫RDS 體驗_體驗館-阿裏雲
序幕拉開:阿裏雲晉升全球雲計算頂級俱樂部
將實例加入安全組__實例相關接口_API 參考_雲服務器 ECS-阿裏雲
大流量處理方法__網站訪問異常_技術分享_雲虛機主機-阿裏雲
業務風控Android/iOS使用說明__使用手冊_數據風控-阿裏雲
健康檢查的相關配置,是否有相對合理的推薦值?__健康檢查_技術運維分享_負載均衡-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲