資料庫

MySQL/MariaDB 資料庫 SELECT 查詢指令用法教學

介紹如何使用 SELECT 指令配合各種篩選條件,查詢 MySQL/MariaDB 資料表中的資料。

SELECT 指令基本語法

SELECT 指令可用來查詢並列出符合條件的資料,其基本語法如下:

-- SELECT 基本用法
SELECT 欄位 FROM 資料表
  WHERE 篩選條件
  ORDER BY 排序欄位
  LIMIT 顯示筆數;

完整的 SELECT 指令用法,可參考 MySQL 的文件

假設我們已經建立好一張 person 資料表,並且插入了一些資料,若要查看 persons 資料表內所有的資料,可以執行:

-- 查看 persons 資料表內所有資料
SELECT * FROM persons;
+----+-------+------+---------+
| id | name  | age  | city    |
+----+-------+------+---------+
|  1 | Arden |   32 | Taipei  |
|  2 | Bond  |   54 | Taipei  |
|  3 | Cole  |   12 | Hsinchu |
|  4 | Dana  |   19 | Hsinchu |
| 19 | Jack  |   33 | Taipei  |
+----+-------+------+---------+

指定顯示欄位

若只要顯示某些欄位,可在 SELECT 之後指定欄位名稱:

-- 查看 persons 資料表內 name 與 age 欄位
SELECT name, age FROM persons;
+-------+------+
| name  | age  |
+-------+------+
| Arden |   32 |
| Bond  |   54 |
| Cole  |   12 |
| Dana  |   19 |
| Jack  |   33 |
+-------+------+

WHERE 篩選條件

若要根據各種條件篩選要顯示的資料,可以加上 WHERE 並指定篩選條件:

-- 篩選 age 大於 20 的資料
SELECT * FROM persons WHERE age > 20;
+----+-------+------+--------+
| id | name  | age  | city   |
+----+-------+------+--------+
|  1 | Arden |   32 | Taipei |
|  2 | Bond  |   54 | Taipei |
| 19 | Jack  |   33 | Taipei |
+----+-------+------+--------+

以下是各種條件的範例:

-- 篩選 age 大於 20 的資料
SELECT * FROM persons WHERE city = "Hsinchu";

-- 篩選 name 是 A 開頭的資料
SELECT * FROM persons WHERE name LIKE "A%";

-- 篩選 name 不是 A 開頭的資料
SELECT * FROM persons WHERE name NOT LIKE "A%";

-- 多種條件
SELECT * FROM persons WHERE (name NOT LIKE "A%") AND (age < 50);

ORDER BY 排序資料

若要根據指定的欄位排序資料,可以使用 ORDER BY 指定排序的欄位:

-- 根據 age 排序
SELECT * FROM persons ORDER BY age;
+----+-------+------+---------+
| id | name  | age  | city    |
+----+-------+------+---------+
|  3 | Cole  |   12 | Hsinchu |
|  4 | Dana  |   19 | Hsinchu |
|  1 | Arden |   32 | Taipei  |
| 19 | Jack  |   33 | Taipei  |
|  2 | Bond  |   54 | Taipei  |
+----+-------+------+---------+

以下是各種排序方法的範例:

-- 遞增排序(預設)
SELECT * FROM persons ORDER BY age ASC;

-- 遞減排序
SELECT * FROM persons ORDER BY age DESC;

-- 先依 city 遞減排序,再依 age 遞增排序
SELECT * FROM persons ORDER BY city DESC, age;

LIMIT 限制資料筆數

若資料比數太多,可用 LIMIT 限制資料顯示的上限:

-- 最多顯示 3 筆資料
SELECT * FROM persons LIMIT 3;
+----+-------+------+---------+
| id | name  | age  | city    |
+----+-------+------+---------+
|  1 | Arden |   32 | Taipei  |
|  2 | Bond  |   54 | Taipei  |
|  3 | Cole  |   12 | Hsinchu |
+----+-------+------+---------+

LIMIT 預設會從第一筆資料開始顯示,若想要從指定位置開始顯示,可以指定要跳過的資料筆數:

-- 跳過 1 筆、最多顯示 3 筆資料
SELECT * FROM persons LIMIT 1, 3;
+----+------+------+---------+
| id | name | age  | city    |
+----+------+------+---------+
|  2 | Bond |   54 | Taipei  |
|  3 | Cole |   12 | Hsinchu |
|  4 | Dana |   19 | Hsinchu |
+----+------+------+---------+
Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago