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 '%字串%';


0 條回復   |  直到 2019-4-20 | 3518 次瀏覽




熱門評論


登入後才可發表內容