mysql select語句操作實例。本站提示廣大學習愛好者:(mysql select語句操作實例)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql select語句操作實例正文
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;