前言
在日常數據庫操作中,掌握增刪查改是每個開發者必備的技能。下面我將通過實例解析SQL的核心操作要點,幫你避開常見陷阱。
一、新增數據(INSERT)
- 單行插入:明確指定字段和值
INSERT INTO 表名(字段1, 字段2) VALUES (值1, 值2);
- 多行插入:批量操作高效寫入
INSERT INTO 表名(字段1, 字段2) VALUES(值1, 值2),(值3, 值4),(值5, 值6);
字段與值必須嚴格對應
二、查詢數據(SELECT)
1. 基礎查詢
類型 | 語法實例 | 說明 |
---|---|---|
全列查詢 | SELECT * FROM 表 | 返回全表結果 |
指定列 | SELECT 列1, 列2 FROM 表 | 查找特定字段 |
表達式 | SELECT (價格 * 0.8) FROM 商品 | 實時計算字段 |
去重 | SELECT DISTINCT 部門 FROM 員工 | 剔除重復值 |
2. 別名使用與限制
SELECT 字段1 AS 別名1, 字段2 AS 別名2 FROM 表;
- 別名僅當前SELECT有效(臨時標簽)
- 不可跨SELECT語句使用(每個查詢獨立)
- WHERE條件中禁止使用別名(SQL執行順序:WHERE > SELECT別名)
3. 排序控制(ORDER BY)
-- 默認升序(ASC可省略)
SELECT * FROM 成績表 ORDER BY 分數;-- 顯式降序
SELECT * FROM 商品表 ORDER BY 價格 DESC;
4. 條件查詢(WHERE)
基礎結構:
SELECT * FROM 表名 WHERE 條件表達式;
完整運算符體系
運算符類型 | 語法實例 | 說明 |
---|---|---|
比較運算符 | =, >, <, >=, <=, != | 基本數值/字符比較 |
范圍查詢 | BETWEEN 值1 AND 值2 | 閉區間范圍匹配 |
枚舉查詢 | IN(值1, 值2, ...) | 多值匹配 |
空值判斷 | IS NULL / IS NOT NULL | 空值檢測 |
模糊匹配 | LIKE '模式' | 通配符搜索 |
邏輯組合 | AND, OR, NOT | 條件組合與取反 |
① 比較運算符:
數值/字符串/日期均可比較
-- 字符串比較(按字典序)
SELECT * FROM 學生 WHERE 姓名 > '李四';
② BETWEEN AND:
閉區間匹配(含邊界)
-- 等價于 價格>=50 AND 價格<=100
SELECT * FROM 商品 WHERE 價格 BETWEEN 50 AND 100;
③ IN 運算符:
多值匹配
-- 查找特定學院學生
SELECT * FROM 學生 WHERE 學院 IN ('計算機', '電子工程');
④ NULL 判斷:
必須用 IS
-- 錯誤寫法:WHERE 電話 = NULL (永遠返回空)
SELECT * FROM 用戶 WHERE 電話 IS NULL;
⑤ 模糊查詢(LIKE):
-- % 匹配任意數量字符(包括0個)
WHERE 姓名 LIKE '張%' -- 找所有姓張的人-- _ 匹配單個字符
WHERE 學號 LIKE '2023_01' -- 找2023級01班的學生
⑥ 邏輯組合:
運算符優先級陷阱
-- 錯誤寫法(AND優先級高于OR):
WHERE 部門 = '銷售' OR 部門 = '技術' AND 工資 > 10000-- 正確寫法(用括號明確邏輯):
WHERE (部門 = '銷售' OR 部門 = '技術') AND 工資 > 10000
5. 分頁查詢(LIMIT/OFFSET)
SELECT * FROM 訂單表
LIMIT 10 OFFSET 20; -- 跳過前20條,取10條數據
OFFSET
:跳過的記錄數(偏移量)LIMIT
:返回的記錄數OFFSET類似于翻書跳過的頁數;LIMIT類似于本頁顯示的行數
三、修改數據(UPDATE)
UPDATE 商品表
SET 價格=價格*1.1, 庫存=庫存-1 -- 修改多個字段
WHERE 分類='電子產品'; -- 必須有WHERE條件!
注意:無WHERE條件將導致更新全表數據!
四、刪除數據(DELETE)
DELETE FROM 用戶表
WHERE 最后登錄時間 < '2020-01-01'; -- 刪除不活躍用戶
注意:無WHERE條件將導致整個表被清空!