首頁  >  文章  >  資料庫  >  了解mysql中select語句操作實例

了解mysql中select語句操作實例

怪我咯
怪我咯原創
2017-04-01 10:12:051584瀏覽


Select的語法

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, ...

    [INTO OUTFILE 'file_name' export_options

      | INTO DUMPFILE 'file_name']

    [FROM table_references

    [WHERE where_definition]

    [GROUP BY {col_name | expr | position}

      [ASC | DESC], ... [WITH ROLLUP]]

    [HAVING where_definition]

    [ORDER BY {col_name | expr | position}

      [ASC | DESC] , ...]

    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

    [PROCEDURE procedure_name(argument_list)]

    [FOR UPDATE | LOCK IN SHARE MODE]]

SELECT用於還原從一個或多個表中選擇的行,並且可以加入UNION語句和子查詢
每個select_expr都指示一個您想要還原的列, table_references指示行從哪個表或哪些表中被還原。
簡單查詢

SELECT columna columnb FROM mytable;

#ORDER BY查詢

SELECT college, region, seed FROM tournament  ORDER BY region, seed;

SELECT college, region AS r, seed AS s FROM tournament ORDER BY r, s;

SELECT college, region, seed FROM tournament  ORDER BY 2, 3;
--要以相反的顺序进行分类,应把DESC(降序)关键字添加到ORDER BY子句中的列名称中。默认值为升序;该值可以使用ASC关键词明确地指定。

SELECT a, COUNT(b) FROM test_table ORDER BY a DESC;

GROUP BY查詢

SELECT a, COUNT(b) FROM test_table GROUP BY a DESC;

SELECT COUNT(col1) AS col2 FROM t GROUP BY col2 HAVING col2 = 2;
-- HAVING不能用于应被用于WHERE子句的条目,不能编写如下语句:

SELECT col_name FROM tbl_name HAVING col_name > 0;

--而应该这么编写

SELECT col_name FROM tbl_name WHERE col_name > 0;
--HAVING子句可以引用总计函数,而WHERE子句不能引用:

SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)>10;

LIMIT查詢

#
SELECT * FROM tbl LIMIT 10;  # Retrieve rows 0-9;

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15;
--如果要恢复从某个偏移量到结果集合的末端之间的所有的行,您可以对第二个参数是使用比较大的数。

--以下语句可以恢复从第96行到最后的所有行:

SELECT * FROM tbl LIMIT 95,18446744073709551615;

SELECT...INTO OUTFILE

#SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選取的行寫入一個檔案中。該檔案被建立到伺服器主機上,因此您必須擁有FILE權限,才能使用此語法。 file_name不能是一個原有的檔案。

SELECT...INTO OUTFILE語句的主要作用是讓您可以非常快速地將一個表轉儲到伺服器機器上。如果您想要在伺服器主機以外的部分客戶主機上建立結果文件,您不能使用SELECT...INTO OUTFILE。在這種情況下,您應該在客戶主機上使用例如「mysql –e "SELECT ..." > file_name」的命令,來產生檔案。

SELECT...INTO OUTFILE是LOAD DATA INFILE的補語;用於語句的exort_options部分的語法包括部分FIELDS和LINES子句,這些子句與LOAD DATA INFILE語句同時使用。

在下面的例子中,產生一個文件,各值用逗號隔開。這種格式可以被許多程式使用

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' 

FIELDS TERMINATED BY ',' 

OPTIONALLY ENCLOSED BY '"' 

LINES TERMINATED BY '\n'

FROM test_table;

如果您使用INTO DUMPFILE取代INTO OUTFILE,則MySQL只把一行寫入到檔案中,不對任何欄位或行進行終止,也不執行任何轉義處理。如果您想要把一個BLOB值儲存到檔案中,則這個語句是有用的。
UNION
UNION用來把許多SELECT語句的結果組合到一個結果集合中,語法如下:

SELECT ...

UNION [ALL | DISTINCT]

SELECT ...

[UNION [ALL | DISTINCT]

SELECT ...]

列於每個SELECT語句的對應位置的被選擇的列應具有相同的類型。 (例如,被第一個語句選擇的第一列應和被其它語句選擇的第一列具有相同的類型。)在第一個SELECT語句中被使用的列名稱也被用於結果的列名稱。
如果您對UNION不使用關鍵字ALL,則所有傳回的行都是唯一的,如同您已經對整個結果集合使用了DISTINCT。如果您指定了ALL,您會從所有用過的SELECT語句中得到所有符合的行。
您可以在相同查詢中混合UNION ALL和UNION DISTINCT。被混合的UNION類型按照這樣的方式對待,即DISTICT共用體會覆蓋位於其左邊的所有ALL共用體。 DISTINCT共用體可以使用UNION DISTINCT明確生成,或使用UNION(後面不加DISTINCT或ALL關鍵字)隱含地生成。
簡單範例:

(SELECT a FROM tbl_name WHERE a=10 AND B=1)

UNION

(SELECT a FROM tbl_name WHERE a=11 AND B=2)

ORDER BY a LIMIT 10;

ALL, DISTINCT和DISTINCTROW
ALL, DISTINCT和DISTINCTROW選項指定是否重複行應被傳回。如果這些選項沒有被給定,則預設值為ALL(所有的匹配行被傳回)。 DISTINCT和DISTINCTROW是同義詞,用來指定結果集合中的重複行應被刪除

SELECT DISTINCT a FROM table_name;

SELECT COUNT(DISTINCT a) FROM table_name;



以上是了解mysql中select語句操作實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn