一、MySQL是什麼?

MySQL是一款開源的關係型數據庫管理系統,就像一個“數字倉庫”,可以用來存儲、管理大量結構化數據。比如電商網站的用戶信息、學校的學生檔案、企業的訂單數據等,都可以用MySQL來存儲和提取。對於編程或數據分析來說,學會從MySQL中提取數據是基礎技能。

二、準備工作:連接數據庫

在開始查詢前,你需要先確保MySQL已安裝並運行。如果是新手,推薦使用圖形化工具(如Navicat、SQLyog)或命令行工具(MySQL Command Line Client)連接數據庫。連接成功後,你會看到類似 mysql> 的提示符,就可以開始輸入查詢語句了。

三、理解“表”和“字段”

在MySQL中,數據存儲在“表”中,每個表由多個“字段”組成,每個字段對應一類信息(比如姓名、年齡)。舉個例子:假設我們有一個學生信息表 student,它的字段可能有:
- id:學號(數字,唯一標識)
- name:姓名(文本)
- age:年齡(數字)
- class:班級(文本)

四、最基礎的查詢:查詢所有數據

語法SELECT * FROM 表名;
- * 表示“所有列”,FROM 後面跟表名。

示例:查詢學生表中所有學生的信息:

SELECT * FROM student;

執行後,你會看到表中所有行和列的數據。

五、查詢指定列:只看需要的信息

如果不想看所有列(比如只關心姓名和年齡),可以指定列名。

語法SELECT 列1, 列2, ... FROM 表名;

示例:查詢學生的姓名和年齡:

SELECT name, age FROM student;

執行後,結果只顯示 nameage 兩列。

六、給列取別名:讓結果更清晰

如果列名不夠直觀(比如 name 可能顯示爲“姓名”),可以用 AS 給列取別名:

語法SELECT 列名 AS 別名 FROM 表名;

示例:給姓名和年齡取更友好的別名:

SELECT name AS 學生姓名, age AS 年齡 FROM student;

結果中的列名將顯示爲“學生姓名”和“年齡”。

七、條件查詢:只查符合要求的數據

實際場景中,我們很少需要查所有數據,而是根據條件篩選。用 WHERE 子句實現條件過濾。

1. 比較運算符:查滿足條件的行
  • >(大於)、<(小於)、=(等於)、>=(大於等於)、<=(小於等於)、!=<>(不等於)

示例1:查年齡大於18歲的學生:

SELECT * FROM student WHERE age > 18;

示例2:查班級是“一班”的學生(注意:字符串需用單引號):

SELECT * FROM student WHERE class = '一班';
2. 邏輯運算符:組合多個條件
  • AND(且)、OR(或)、NOT(非)

示例1:年齡大於18歲 班級是“一班”:

SELECT * FROM student WHERE age > 18 AND class = '一班';

示例2:年齡小於15歲 班級是“二班”:

SELECT * FROM student WHERE age < 15 OR class = '二班';
3. 模糊查詢:匹配部分內容

LIKE 實現模糊匹配,% 代表任意多個字符,_ 代表單個字符。

示例1:查姓名以“張”開頭的學生:

SELECT * FROM student WHERE name LIKE '張%';

示例2:查姓名中包含“明”的學生(中間有“明”):

SELECT * FROM student WHERE name LIKE '%明%';

八、排序:讓結果有序

ORDER BY 對結果排序,默認是升序(ASC),降序用 DESC

語法SELECT ... FROM 表名 ORDER BY 列名 [ASC/DESC];

示例:按年齡降序排列學生(年齡大的在前):

SELECT * FROM student ORDER BY age DESC;

九、限制結果:只取前N條

LIMIT 限制返回的行數,常用於分頁或快速查看部分數據。

語法SELECT ... FROM 表名 LIMIT 數量;LIMIT 偏移量, 數量;(偏移量=從第幾條開始,從0開始)

示例1:只查前3條學生信息:

SELECT * FROM student LIMIT 3;

示例2:從第2條開始,取3條數據(偏移量=1,因爲第1條是0):

SELECT * FROM student LIMIT 1, 3;

十、去重:排除重複數據

如果表中有重複行(比如多條相同信息),用 DISTINCT 去重。

語法SELECT DISTINCT 列名 FROM 表名;

示例:查所有不重複的班級:

SELECT DISTINCT class FROM student;

十一、綜合示例:組合多個功能

假設我們要查:
- 班級是“一班”
- 年齡大於18歲
- 姓名以“李”開頭
- 只顯示姓名和年齡
- 按年齡降序排列
- 取前2條

SQL語句

SELECT name AS 學生姓名, age AS 年齡 
FROM student 
WHERE class = '一班' 
  AND age > 18 
  AND name LIKE '李%' 
ORDER BY age DESC 
LIMIT 2;

十二、練習建議

  1. 自己創建一個簡單的表(比如學生表),插入幾條測試數據。
  2. 嘗試修改上述示例,比如改條件、換列名、調整排序方式。
  3. 用不同的條件組合(AND/OR/NOT),練習模糊查詢(%和_)。

通過不斷嘗試,你會逐漸熟悉MySQL查詢的邏輯,從“寫簡單語句”到“靈活提取數據”。

記住:MySQL查詢的核心是 明確需求→選表→定列→加條件→排序/限制,多練幾次就能熟練掌握!

小夜