閱讀216 返回首頁    go windows


DML語法__用戶指南_雲數據庫 PetaData-阿裏雲

SELECT語句

  1. Select EXPR, [distinct] T1.COL1, [T2.COL1], {count|sum|min|max}( T1.COL1), count([distinct] T1.COL1)
  2. from T1 [{join T2}1,n on T1.COL2 = T2.COL2]
  3. [where expr]
  4. group by [binary] COL1
  5. order by [BINARY] COL1 [limit m [offset n]]

說明:

  1. 1. 不支持for update/into從句;
  2. 2. 對於distinct複合語句,目前僅支持distinct分區鍵或count(distinct分區鍵);
  3. 3. 聚集函數不支持avg;
  4. 4. 跨分區聚合函數目前僅支持count/sum/min/max函數,僅支持varchar/integer/datetime/timestamp/date/time類型;
  5. 5. 不支持子查詢;
  6. 6. 當前僅支持兩個分區表join在分區鍵上且join條件為等值,或者分區表join廣播表,不支持join在非分區字段上,也不支持join在分區字段非等值條件上;
  7. 7. 若列為timestamp類型,則不得設置精度;
  8. 8. where條件過濾以及跨分區group by/order by該列類型時,嚴格符合”YY-MM-DD HH:MM:SS”格式,否則將被視作字符串類型;
  9. 9. 對於group by/order by,當前支持整型、浮點型、日期時間型的比較,對於字符串的比較,當前僅能進行二進製大小比較,不支持使用各類字符集的比較;
  10. 10. group by/order by的列,必須出現在select從句中,如果是二進製比較,必須同時在select和group by/order by從句顯式寫明BINARY 列名,同時具備group by與order by從句時,二者的操作列必須完全相同;
  11. 11. 跨分區group by、order by目前僅支持varchar/integer/datetime/timestamp/date/time類型;
  12. 12. 不支持having從句;
  13. 13. 不支持order by random()/order by function()/order by #(列序號整數);
  14. 14. 不支持with從句;

INSERT語句

  1. insert [ignore] [into] T1 (COL1, COL2) values (VALUE11, VALUE12) [, (VALUE21, VALUE22)] [on duplicate key update COL3 = VALUE3]

說明:

  1. 1. 允許insert多個值,且這些值可以在任意多個分區;
  2. 2. 且跨分區的insert會自動進入一個一階段提交分布式事務,不需要用戶自行開啟事務,但是在部分分區提交成功部分分區提交失敗時,可能導致回滾不一致;
  3. 3. 若用戶的表包含自增主鍵,則insert時該列的生成規則需遵守自增主鍵的使用方法;
  4. 4. insert時,列內容前不得附帶字符集等前綴描述,如insert into t (f) values (_utf8’a’)是不支持的,且對於分區鍵,用戶必須自行保證分區鍵的列定義,與用戶insert時填入的列值是匹配的,若用戶建表時列定義為整型,而insert時為浮點型或字符串型,則會因數據類型截斷,導致數據分布紊亂;
  5. 5. on duplicate update從句的特性類似於replace,無法保證非分區字段的唯一性,語法上雖未禁止,但不建議用戶使用,使用者請自行保證唯一性;
  6. 6. 不支持insert select從句;

UPDATE語句

  1. update T1 set COL1 = VALUE1, COL2 = VALUE2 where EXPR

說明:

  1. 1. 允許跨分區update,且跨分區的update會自動進入一個分布式事務,不需要用戶自行開啟事務,但是在部分分區提交成功部分分區提交失敗時,可能導致回滾不一致;
  2. 2. 不允許更新主鍵和分區鍵,若需要變更主鍵和分區鍵,需要先delete後重新insert;
  3. 3. update時,列內容前不得附帶字符集等前綴描述,如update t set f = _utf8’b’是不支持的;
  4. 4. 不支持update limit從句;

DELETE語句

  1. delete from T1 where EXPR

說明:

  1. 1. 允許跨分區delete,且跨分區的delete會自動進入一個分布式事務,不需要用戶自行開啟事務,但是在部分分區提交成功部分分區提交失敗時,可能導致回滾不一致;
  2. 2. 允許delete整張表;
  3. 3. 不支持delete limit從句;

REPLACE語句

  1. replace [into] T1 (COL1, COL2) values (VALUE11, VALUE12) [, (VALUE21, VALUE22)]

說明:

  1. 1. 允許replace多個值,且這些值可以在任意多個分區,且跨分區的replace會自動進入一個分布式事務,不需要用戶自行開啟事務,但是在部分分區提交成功部分分區提交失敗時,可能導致回滾不一致;
  2. 2. replace時,列內容前不得附帶字符集等前綴描述,如replaceinto t (f) values (_utf8’a’)是不支持的,且對於分區鍵,用戶必須自行保證分區鍵的列定義,與用戶replace時填入的列值是匹配的,若用戶建表時列定義為整型,而replace時為浮點型或字符串型,則會因數據類型截斷,導致數據分布紊亂;
  3. 3. 不支持replace set從句;

EXPLAIN DML語句

  1. 1. 目前支持EXPLAIN語句,可以分析DML語句的執行計劃,影響的分區,結果合並的流程等;
  2. 2. 若DML語句的執行計劃涉及到了多個分區,則應盡量利用where條件將查詢和更新限製在單個分區,如where 分區鍵 = 分區鍵值;

表達式

對於select、update、delete附帶的where從句,任何列值與字符串字麵值的二元比較操作,如Col =|>|<|>=|<=|!=|<> Value等,都必須將列名放在左邊,比較值放在右邊;

函數

  1. 1. 不支持類型轉換類函數;
  2. 2. select rds_partition_insert_id()用於獲取一個全局唯一的id,可充當表主鍵等;

最後更新:2016-11-23 16:03:54

  上一篇:go DDL語法__用戶指南_雲數據庫 PetaData-阿裏雲
  下一篇:go 事務說明__用戶指南_雲數據庫 PetaData-阿裏雲