資料庫常用SQL操作篇
- 2019 年 11 月 6 日
- 筆記
數據查詢
查詢資料庫表的內容(所有行和列)
SELECT * FROM <表名>;
- 示例

image
計算
SELECT <數學多項式>;
- 示例

image
條件查詢
SELECT * FROM <表名> WHERE <條件表達式>;
- 示例

image
- 注意:對於條件表達式,可以用邏輯運算符(
AND
、OR
、NOT
)將多個條件同時進行匹配;
[圖片上傳失敗…(image-d71d71-1571369518934)]

image

image
- 對於三個及以上的條件,可以用小括弧
()
進行條件運算;

image
- 常用條件表達式
條件 |
表達式舉例1 |
表達式舉例2 |
說明 |
---|---|---|---|
使用=判斷相等 |
score = 90 |
name = 『cunyu』 |
字元串需要用單引號括起來 |
使用>判斷大於 |
score > 90 |
name > 『cunyu』 |
字元串比較根據ASCII碼,中文字元比較根據資料庫設置 |
使用>=判斷大於或相等 |
score >= 90 |
name >= 『cunyu』 |
|
使用<判斷小於 |
score < 90 |
name <= 『cunyu』 |
|
使用<=判斷小於或相等 |
score <= 90 |
name <= 『cunyu』 |
|
使用<>判斷不相等 |
score <> 90 |
name <> 『cunyu』 |
|
使用LIKE判斷相似 |
name LIKE 『ab%』 |
name LIKE 『%bc%』 |
%表示任意字元,例如』ab%』將匹配』ab』,』abc』,』abcd』 |
投影查詢
- 基本的投影查詢
SELECT 列1,列2,列3 FROM ...;

image
- 對列名重命名的投影查詢
SELECT 列1 別名1, 列2 別名2, 列3 別名3 FROM ...;

image
- 注意:別名是存在於記憶體中的,而
WHERE
僅適用於硬碟,但是HAVING
既可以針對硬碟,也可以針對記憶體條件進行查詢;
分頁查詢
- 經排序後獲取結果中第
M
條開始後N
條記錄;
-- MySQL中兩句等效 SELECT <列名> FROM <表名> ORDER BY <列名> LIMIT <M> OFFSET <N>; SELECT <列名> FROM <表名> ORDER BY <列名> LIMIT <N> , <M>;

image
聚合查詢
- 常用聚合函數
函數 |
說明 |
---|---|
SUM |
計算某一列的合計值,該列必須為數值類型 |
AVG |
計算某一列的平均值,該列必須為數值類型 |
MAX |
計算某一列的最大值 |
MIN |
計算某一列的最小值 |
COUNT |
統計某一列的個數 |

image

image
多表查詢(笛卡爾查詢)
SELECT * FROM <表1> <表2>

image
- 注意:多表查詢時,使用
表名.列名
的方式,以防止結果集列名重複問題;
連接查詢
- 定義:另一種類型的多表查詢,它對多個表進行
JOIN
運算,即先確定一個主表作為結果集,然後將其他表的行有選擇地「連接」到主表結果集中; - 內連接,以下是查詢的寫法:
SELECT ... FROM <表1> INNER JOIN <表2> ON <條件...>;
- 先確定主表,繼續使用
FROM <表1>
的語法; - 再確定需要連接的表,使用
INNER JOIN <表2>
的語法; - 然後確定連接條件,使用ON <條件..…>,這裡的條件是s.class_id = c.id,表示students表的class_id列與classes表的id列相同的行需要連接;
- 可選:加上
WHERE
子句、ORDER BY
等子句;

image
- 外連接
- RIGHT OUTER JOIN:返回右表均存在的行;
- LEFT OUTER JOIN:返回左表均存在的行;
- FULL OUTER JOIN:將兩張表中所有記錄均選出來,且自動將對方不存在的列填充為
NULL
;
排序
- 正序(默認規則下為正序,以下兩條語句功能相同)
SELECT <列名> FROM <表名> ORDER BY <列名> ASC; SELECT <列名> FROM <表名> ORDER BY <列名>;

image

image
- 逆序
SELECT <列名> FROM <表名> ORDER BY <列名> DESC;

image
數據修改
INSERT
INSERT INTO <表名> (欄位1, 欄位2, ...) VALUES (值1, 值2, ...);

image

image
UPDATE
UPDATE <表名> SET 欄位1=值1, 欄位2=值2, ... WHERE ...;

image

image
- 注意:不帶
WHERE
的UPDATE
將會更新整個表的數據;
DELETE
DELETE FROM <表名> WHERE ...;

image
- 注意:不帶
WHERE
的DELETE
將會刪除整個表的數據;