一、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;
執行後,結果只顯示 name 和 age 兩列。
六、給列取別名:讓結果更清晰¶
如果列名不夠直觀(比如 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;
十二、練習建議¶
- 自己創建一個簡單的表(比如學生表),插入幾條測試數據。
- 嘗試修改上述示例,比如改條件、換列名、調整排序方式。
- 用不同的條件組合(AND/OR/NOT),練習模糊查詢(%和_)。
通過不斷嘗試,你會逐漸熟悉MySQL查詢的邏輯,從“寫簡單語句”到“靈活提取數據”。
記住:MySQL查詢的核心是 明確需求→選表→定列→加條件→排序/限制,多練幾次就能熟練掌握!