MySQL SELECT 基礎查詢
查詢 SELECT
SELECT 敘述句 (SQL SELECT Statement)
SELECT 很可能是最常用到的 SQL 語句,它是用來從資料庫取得資料,這個動作我們通常稱之為查詢 (query),資料庫依 SELECT 查詢的要求會返回一個結果資料表 (result table),我們通常稱之為資料集 (result-set)。
SELECT 語法 (SQL SELECT Syntax)
SELECT 敘述句主要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為 "從哪拿"。
SELECT table_column1, table_column2, table_column3...
FROM table_name;
SELECT 查詢用法 (SQL SELECT Example)
假設我們想從下面的 customers 資料表中取得顧客的姓名 (Name) 及電話 (Phone):
C_Id Name City Address Phone
1 張三 台北市 XX路100號 02-12345678
2 王五 新竹縣 YY路200號 03-12345678
3 李四 高雄縣 ZZ路300號 07-12345678
我們可以下這個 SELECT 查詢敘述句:
SELECT Name, Phone FROM customers;
返回的結果 (資料集) 會像這樣:
Name Phone
張三 02-12345678
王五 03-12345678
李四 07-12345678
SELECT *
如果我們想一次取得整張資料表裡所有的資料我們可以在 SELECT 語句裡用 * 這個特殊符號。
SELECT * FROM customers;
這個 SELECT 查詢返回的資料集會是:
C_Id Name City Address Phone
1 張三 台北市 XX路100號 02-12345678
2 王五 新竹縣 YY路200號 03-12345678
3 李四 高雄縣 ZZ路300號 07-12345678
若非必要,我們應該盡量避免使用 SELECT *,因為一次取得整張資料表會比較耗費系統資源,記住一個原則,取得需要的資料就好,不多拿也不少拿。例如若只想知道客戶的電話不需要連他的住址也一起取得。
基礎篇
1. 資料表查詢
SELECT `欄位` FROM `資料表`;
一般用法: SELECT * FROM `table` ;
翻譯:選擇table這個資料表所有欄位的資料(就是全選啦!!)
備註:星號代表所有欄位,在sql語法、指令中星號代表全部
2. 資料表查詢 + 排序
SELECT `欄位` FROM `資料表` ORDER BY `特定欄位` DESC ;
一般用法: SELECT `id`,`name` FROM `table` ORDER BY `特定欄位` DESC ;
翻譯: 選取table資料表內的 id 和 name 這兩個欄位,並根據id這欄位做降冪排序(由高而低、由大到小、由z到a)
備註:ASC則是(由低而高、由小到大、由a到z),與DESC相反
3. 資料表查詢 + 查詢條件
SELECT `欄位` FROM `資料表` WHERE `特定欄位` = 數字 ;
一般用法: SELECT * FROM `table` WHERE `id` = 363 ;
翻譯: 在table資料表內的尋找 id 欄位的內容是 363 且將 所有欄位的資料都取出來
SELECT `欄位` FROM `資料表` WHERE `特定欄位` LIKE 字串 ;
一般用法: SELECT `id`,`name` FROM `table` WHERE `name` LIKE 'admin' ;
翻譯: 在table資料表內的尋找 name 欄位的內容是 admin 且將 id 和 name 這兩個欄位都取出來
SELECT `欄位` FROM `資料表` WHERE `特定欄位` LIKE %字串% ;
一般用法: SELECT `id`,`name` FROM `table` WHERE `name` LIKE %'adm'% ;
翻譯: 在table資料表內的尋找 name 欄位的內容包含 adm ( admin 符合、administrator 也符合) 且將 id 和 name 這兩個欄位都取出來
備註:數字形態比對用 = (也可以用 > 、 < 、 >= 、 <=) ; 字串形態比對是使用 LIKE (LIKE 使用的是完全比對);字串如果需要模糊比對需要使用 %
整理一下
查詢單一欄位資料 select 欄位名 from 資料表名稱;
查詢多個欄位資料 select 欄位名, 欄位名, 欄位名 from 資料表名稱;
查詢欄位資料的唯一值 select distinct 欄位名 from 資料表名稱; 重複值只列一次
查詢所有欄位資料 select * from 資料表名稱;
條件式查詢 select * from 資料表名稱 where 條件式 (例如 sn='5'); (=, <, >, !=)
條件式查詢 and select * from 資料表名稱 where 條件式1 and 條件式2;
條件式查詢 or select * from 資料表名稱 where 條件式1 or 條件式2;
查詢某一範圍 between select * from 資料表名稱 where 欄位名 between 值1 and 值2; 值為數字
查詢空值欄位的資料 select * from 資料表名稱 where 欄位名 is null not null;
查詢特定筆數資料 select * from 資料表名稱 limit 8, 10; 第9筆開始選取10筆
查詢結果遞增排序 select * from 資料表名稱 order by 欄位名;
查詢結果遞減排序 select * from 資料表名稱 order by 欄位名 desc ;
查詢比對字串列出單一欄位 select 欄位名 from 資料表名稱 where 欄位名 like '%字串%';
查詢比對字串列出所有欄位 select * from 資料表名稱 where 欄位名 like '%字串%';
熱門評論