刪除資料
以下用一個簡單的 `students` 資料表,示範 SQL 如何刪除資料。
## 1. 建立資料表
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
department VARCHAR(50)
);
```
## 2. 新增範例資料
```sql
INSERT INTO students (id, name, age, department)
VALUES
(1, '王小明', 20, '資訊工程'),
(2, '李小華', 22, '企業管理'),
(3, '陳美玲', 21, '資訊工程'),
(4, '林志偉', 23, '電子工程');
```
目前資料如下:
| id | name | age | department |
|---:|---|---:|---|
| 1 | 王小明 | 20 | 資訊工程 |
| 2 | 李小華 | 22 | 企業管理 |
| 3 | 陳美玲 | 21 | 資訊工程 |
| 4 | 林志偉 | 23 | 電子工程 |
---
# 一、刪除指定資料:`DELETE ... WHERE`
例如,刪除編號為 `2` 的學生:
```sql
DELETE FROM students
WHERE id = 2;
```
執行後,`李小華` 這筆資料會被刪除。
> `WHERE` 用來指定刪除條件,避免刪除整張表的資料。
---
# 二、依條件刪除多筆資料
例如,刪除所有就讀「資訊工程」的學生:
```sql
DELETE FROM students
WHERE department = '資訊工程';
```
這會刪除所有符合條件的資料,而不只是其中一筆。
也可以使用其他條件:
```sql
DELETE FROM students
WHERE age >= 22;
```
這會刪除年齡大於或等於 22 歲的學生。
---
# 三、刪除資料表中的全部資料
```sql
DELETE FROM students;
```
這會刪除 `students` 表中的所有資料,但資料表本身仍然存在。
## 非常重要
以下語法會刪除整張表中的所有資料:
```sql
DELETE FROM students;
```
如果不小心省略 `WHERE`,就會清空整張表。因此執行前應確認條件是否正確。
---
# 四、使用 `TRUNCATE` 清空資料表
```sql
TRUNCATE TABLE students;
```
`TRUNCATE` 也會刪除所有資料,但通常比逐筆執行 `DELETE` 更快。
| 語法 | 作用 |
|---|---|
| `DELETE FROM students WHERE ...` | 刪除符合條件的資料 |
| `DELETE FROM students` | 刪除全部資料,但保留資料表 |
| `TRUNCATE TABLE students` | 快速清空全部資料 |
| `DROP TABLE students` | 連資料表結構一起刪除 |
---
# 五、刪除資料表本身:`DROP TABLE`
如果要連同資料表結構一起刪除:
```sql
DROP TABLE students;
```
執行後,`students` 資料表以及其中所有資料都會消失。
---
## 建議做法
刪除資料前,可以先用 `SELECT` 確認即將刪除的資料:
```sql
SELECT *
FROM students
WHERE department = '資訊工程';
```
確認結果正確後,再執行:
```sql
DELETE FROM students
WHERE department = '資訊工程';
```
實務上,刪除資料時最常使用的語法是:
```sql
DELETE FROM 資料表名稱
WHERE 條件;
```
相關學習地圖、教學課程
Python 資料工程
Python 後端工程、資料庫