mysql select語句操作實(shí)例
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用于恢復(fù)從一個(gè)或多個(gè)表中選擇的行,并可以加入U(xiǎn)NION語句和子查詢。
每個(gè)select_expr都指示一個(gè)您想要恢復(fù)的列, table_references指示行從哪個(gè)表或哪些表中被恢復(fù)。
簡單查詢
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;
--要以相反的順序進(jìn)行分類,應(yīng)把DESC(降序)關(guān)鍵字添加到ORDER BY子句中的列名稱中。默認(rèn)值為升序;該值可以使用ASC關(guān)鍵詞明確地指定。
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不能用于應(yīng)被用于WHERE子句的條目,不能編寫如下語句:
SELECT col_name FROM tbl_name HAVING col_name > 0;
--而應(yīng)該這么編寫
SELECT col_name FROM tbl_name WHERE col_name > 0;
--HAVING子句可以引用總計(jì)函數(shù),而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;
--如果要恢復(fù)從某個(gè)偏移量到結(jié)果集合的末端之間的所有的行,您可以對(duì)第二個(gè)參數(shù)是使用比較大的數(shù)。
--以下語句可以恢復(fù)從第96行到最后的所有行:
SELECT * FROM tbl LIMIT 95,18446744073709551615;
SELECT...INTO OUTFILE
SELECT...INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個(gè)文件中。該文件被創(chuàng)建到服務(wù)器主機(jī)上,因此您必須擁有FILE權(quán)限,才能使用此語法。file_name不能是一個(gè)原有的文件。
SELECT...INTO OUTFILE語句的主要作用是讓您可以非??焖俚匕岩粋€(gè)表轉(zhuǎn)儲(chǔ)到服務(wù)器機(jī)器上。如果您想要在服務(wù)器主機(jī)之外的部分客戶主機(jī)上創(chuàng)建結(jié)果文件,您不能使用SELECT...INTO OUTFILE。在這種情況下,您應(yīng)該在客戶主機(jī)上使用比如“mysql –e "SELECT ..." > file_name”的命令,來生成文件。
SELECT...INTO OUTFILE是LOAD DATA INFILE的補(bǔ)語;用于語句的exort_options部分的語法包括部分FIELDS和LINES子句,這些子句與LOAD DATA INFILE語句同時(shí)使用。
在下面的例子中,生成一個(gè)文件,各值用逗號(hào)隔開。這種格式可以被許多程序使用
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只把一行寫入到文件中,不對(duì)任何列或行進(jìn)行終止,也不執(zhí)行任何轉(zhuǎn)義處理。如果您想要把一個(gè)BLOB值存儲(chǔ)到文件中,則這個(gè)語句是有用的。
UNION
UNION用于把來自許多SELECT語句的結(jié)果組合到一個(gè)結(jié)果集合中,語法如下:
SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT]
SELECT ...]
列于每個(gè)SELECT語句的對(duì)應(yīng)位置的被選擇的列應(yīng)具有相同的類型。(例如,被第一個(gè)語句選擇的第一列應(yīng)和被其它語句選擇的第一列具有相同的類型。)在第一個(gè)SELECT語句中被使用的列名稱也被用于結(jié)果的列名稱。
如果您對(duì)UNION不使用關(guān)鍵詞ALL,則所有返回的行都是唯一的,如同您已經(jīng)對(duì)整個(gè)結(jié)果集合使用了DISTINCT。如果您指定了ALL,您會(huì)從所有用過的SELECT語句中得到所有匹配的行。
您可以在同一查詢中混合UNION ALL和UNION DISTINCT。被混合的UNION類型按照這樣的方式對(duì)待,即DISTICT共用體覆蓋位于其左邊的所有ALL共用體。DISTINCT共用體可以使用UNION DISTINCT明確地生成,或使用UNION(后面不加DISTINCT或ALL關(guān)鍵詞)隱含地生成。
簡單例子:
(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選項(xiàng)指定是否重復(fù)行應(yīng)被返回。如果這些選項(xiàng)沒有被給定,則默認(rèn)值為ALL(所有的匹配行被返回)。DISTINCT和DISTINCTROW是同義詞,用于指定結(jié)果集合中的重復(fù)行應(yīng)被刪除。
SELECT DISTINCT a FROM table_name;
SELECT COUNT(DISTINCT a) FROM table_name;
- 10個(gè)mysql中select語句的簡單用法
- MySQL使用select語句查詢指定表中指定列(字段)的數(shù)據(jù)
- MySQL中select語句介紹及使用示例
- Mysql select語句設(shè)置默認(rèn)值的方法
- 單個(gè)select語句實(shí)現(xiàn)MySQL查詢統(tǒng)計(jì)次數(shù)
- mysql SELECT語句去除某個(gè)字段的重復(fù)信息
- php下巧用select語句實(shí)現(xiàn)mysql分頁查詢
- mysql 導(dǎo)出select語句結(jié)果到excel文件遇到問題及解決方法
- MySQL中select語句使用order按行排序
- html中select語句讀取mysql表中內(nèi)容
- mysql學(xué)習(xí)筆記之完整的select語句用法實(shí)例詳解
相關(guān)文章
MYSQL數(shù)據(jù)庫中的現(xiàn)有表增加新字段(列)
MYSQL 增加新字段的sql語句,需要的朋友可以參考下。2010-05-05MySQL中create table as 與like的區(qū)別分析
這篇文章主要介紹了MySQL中create table as 與like的區(qū)別,結(jié)合實(shí)例分析了二者在使用中的具體區(qū)別與主要用途,需要的朋友可以參考下2016-01-01mysql 5.7.14 下載安裝、配置與使用詳細(xì)教程
這篇文章主要介紹了mysql 5.7.14 下載安裝、配置與使用詳細(xì)教程的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09Windows mysql 雙向同步設(shè)置方法 詳細(xì)篇
如果你需要windows mysql 主、備機(jī)雙向同步環(huán)境,可按照以下步驟進(jìn)行操作2011-05-05CentOS Mysql數(shù)據(jù)庫如何實(shí)現(xiàn)定時(shí)備份
這篇文章主要介紹了CentOS Mysql數(shù)據(jù)庫如何實(shí)現(xiàn)定時(shí)備份,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Windows下安裝MySQL 5.7.17壓縮版中遇到的坑
最近發(fā)現(xiàn)原來好端端的MySQL突然間不能用了,無奈只能重新下載了最新的MySQL 5.7.17 Community 壓縮版 for Windows 64-bit。但在安裝過程中遇到了一些意外的問題,通過查找相關(guān)資料也解決了,所以想著總結(jié)出來,方便需要的朋友們可以參考借鑒,下面來一起看看吧。2017-01-01mysql自動(dòng)插入百萬模擬數(shù)據(jù)的操作代碼
這篇文章主要介紹了mysql自動(dòng)插入百萬模擬數(shù)據(jù)的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10master and slave have equal MySQL server UUIDs 解決方法
使用rsync配置了大量mysql,省去了大量編譯和配置的時(shí)間,隨逐個(gè)修改master和slave服務(wù)器的my.cnf,后,發(fā)現(xiàn)數(shù)據(jù)不能同步2013-07-07