數據庫查詢語句select用于從表中選取數據,結果被存儲在一個結果表中(稱為結果集);語法格式為“SELECT [列名稱] FROM 表名稱 [WHERE子句的等限制條件];”。
(推薦教程:mysql視頻教程)
SELECT 語句
SELECT 語句用于從表中選取數據。
結果被存儲在一個結果表中(稱為結果集)。
SELECT 的語法格式如下:
SELECT {*?|?} [ FROM?,?… [WHERE? [GROUP?BY?<group> [HAVING?<expression>?[{<operator>?<expression>}…]] [ORDER?BY?<order>] [LIMIT[<offset>,]?<row>] ]</row></offset></order></expression></operator></expression></group>
其中,各條子句的含義如下:
-
{*|}包含星號通配符的字段列表,表示所要查詢字段的名稱。
-
,…,表 1 和表 2 表示查詢數據的來源,可以是單個或多個。
-
WHERE 是可選項,如果選擇該項,將限定查詢數據必須滿足該查詢條件。
-
[ORDER BY],該子句告訴 MySQL 按什么樣的順序顯示查詢出來的數據,可以進行的排序有升序(ASC)和降序(DESC),默認情況下是升序。
-
[LIMIT[
,] ],該子句告訴 MySQL 每次顯示查詢出來的數據條數。
使用“*”查詢表的所有字段
SELECT 可以使用“*”查找表中所有字段的數據,語法格式如下:
SELECT?*?FROM?表名;
使用“*”查詢時,只能按照數據表中字段的順序進行排列,不能改變字段的排列順序。
例 1
從 tb_students_info 表中查詢所有字段的數據,SQL 語句和運行結果如下所示。
mysql>?use?test_db; Database?changed mysql>?SELECT?*?FROM?tb_students_info; +----+--------+---------+------+------+--------+------------+ |?id?|?name???|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+--------+---------+------+------+--------+------------+ |??1?|?Dany???|???????1?|???25?|?F????|????160?|?2015-09-10?| |??2?|?Green??|???????3?|???23?|?F????|????158?|?2016-10-22?| |??3?|?Henry??|???????2?|???23?|?M????|????185?|?2015-05-31?| |??4?|?Jane???|???????1?|???22?|?F????|????162?|?2016-12-20?| |??5?|?Jim????|???????1?|???24?|?M????|????175?|?2016-01-15?| |??6?|?John???|???????2?|???21?|?M????|????172?|?2015-11-11?| |??7?|?Lily???|???????6?|???22?|?F????|????165?|?2016-02-26?| |??8?|?Susan??|???????4?|???23?|?F????|????170?|?2015-10-01?| |??9?|?Thomas?|???????3?|???22?|?M????|????178?|?2016-06-07?| |?10?|?Tom????|???????4?|???23?|?M????|????165?|?2016-08-05?| +----+--------+---------+------+------+--------+------------+ 10?rows?in?set?(0.26?sec)
結果顯示,使用“*”通配符時,將返回所有列,數據列按照創建表時的順序顯示。
注意:一般情況下,除非需要使用表中所有的字段數據,否則最好不要使用通配符“*”。雖然使用通配符可以節省輸入查詢語句的時間,但是獲取不需要的列數據通常會降低查詢和所使用的應用程序的效率。使用“*”的優勢是,當不知道所需列的名稱時,可以通過“*”獲取它們。
查詢表中指定的字段
查詢表中的某一個字段的語法格式為:
SELECT??FROM?;
例 2
查詢 tb_students_info 表中 name 列所有學生的姓名,SQL 語句和運行結果如下所示。
mysql>?SELECT?name?FROM?tb_students_info; +--------+ |?name???| +--------+ |?Dany???| |?Green??| |?Henry??| |?Jane???| |?Jim????| |?John???| |?Lily???| |?Susan??| |?Thomas?| |?Tom????| +--------+ 10?rows?in?set?(0.00?sec)
輸出結果顯示了 tb_students_info 表中 name 字段下的所有數據。
使用 SELECT 聲明可以獲取多個字段下的數據,只需要在關鍵字 SELECT 后面指定要查找的字段名稱,不同字段名稱之間用逗號“,”分隔開,最后一個字段后面不需要加逗號,語法格式如下:
SELECT?,,…,?FROM?;
例 3
從 tb_students_info 表中獲取 id、name 和 height 三列,SQL 語句和運行結果如下所示。
mysql>?SELECT?id,name,height ????->?FROM?tb_students_info; +----+--------+--------+ |?id?|?name???|?height?| +----+--------+--------+ |??1?|?Dany???|????160?| |??2?|?Green??|????158?| |??3?|?Henry??|????185?| |??4?|?Jane???|????162?| |??5?|?Jim????|????175?| |??6?|?John???|????172?| |??7?|?Lily???|????165?| |??8?|?Susan??|????170?| |??9?|?Thomas?|????178?| |?10?|?Tom????|????165?| +----+--------+--------+ 10?rows?in?set?(0.00?sec)
輸出結果顯示了 tb_students_info 表中 id、name 和 height 三個字段下的所有數據。