MySql SELECT 文法

來源:互聯網
上載者:User

標籤:

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE ‘file_name‘
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE ‘file_name‘
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

select被使用來得到從一個或者多個表中挑選出來的行,可以包含union語句和子查詢。

select最常見的子句如下:

  • 每一個select_expr表明想要擷取的一個列。必須至少有一個select_expr。
  • table_references表明從哪個表或者哪些表來擷取行。文法會在join文法中描述。
  • 從mysql 5.6.2開始,select支援明確的分區查詢,在一個table_reference中接著表名後,使用有一個分區或者子分區的列表的partition關鍵字。在這種情況下,只有分區列表中的行會被查詢,而表的其他分區會被忽略。

   在mysql 5.6.6和之後,select ... partition from table使用會執行表層級的鎖(因此分區鎖)的儲存引擎如myisam會只鎖partition選項中指定的分區或者子分區。

  • where子句,如果給出的話,表明行為了被選擇必須滿足的條件。where_condition是一個運算式,每一個被選擇的行會得到true。如果沒有where子句,語句會查詢出所有的行。

   在where運算式裡,可以使用mysql提供的除了彙總函式外的所有的函數和操作符。

select也可以使用來擷取行計算,而且不使用任何錶。

例如:select 1 + 1;2

當沒有使用任何錶時,也允許使用dual作為一個虛假的表名。

例如:select 1 + 1 from dual;2

dual純粹為了需要所有的查詢語句都包含from和其它可能的子句時方便。mysql可能忽略這個子句。mysql不需要from dual,如果沒有使用任何錶的話。

一般來講,子句必須嚴格按照文法描述中顯示的順序使用。例如,having子句必須在任意的group by子句之後,和任意的order by之後。例外是into子句,into子句可以像文法描述中顯示的一樣顯示,也可以立即跟隨在select_expr列表後。

select_expr術語列表包含了表明擷取哪些列的查詢列表。術語指定一個列或者運算式或者使用*縮寫。

  • 只有一個沒有限制的*的查詢列表當做查詢所有表的所有列的縮寫。

   select * from t1 inner join t2 ...

  • tbl_name.*可以使用作為一個有限制的縮寫,來從這個定義的表中查詢所有列。

   select t1.*, t2.* from t1 inner join t2 ...

  • 在查詢列表裡使用沒有限制的*和其它項可能會產生語法錯誤。為了避免這個問題,可以使用tbl_name.*來引用。

    select avg(score), t1.* from t1 ...

 

MySql SELECT 文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.