資料庫常用SQL操作篇

  • 2019 年 11 月 6 日
  • 筆記

數據查詢

查詢資料庫表的內容(所有行和列)

SELECT * FROM <表名>;  
  • 示例

image

計算

SELECT <數學多項式>;  
  • 示例

image

條件查詢

SELECT * FROM <表名> WHERE <條件表達式>;  
  • 示例

image

  • 注意:對於條件表達式,可以用邏輯運算符ANDORNOT)將多個條件同時進行匹配;

[圖片上傳失敗…(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 <條件...>;  
  1. 先確定主表,繼續使用FROM <表1>的語法;
  2. 再確定需要連接的表,使用INNER JOIN <表2>的語法;
  3. 然後確定連接條件,使用ON <條件..…>,這裡的條件是s.class_id = c.id,表示students表的class_id列與classes表的id列相同的行需要連接;
  4. 可選:加上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

  • 注意:不帶WHEREUPDATE將會更新整個表的數據;

DELETE

DELETE FROM <表名> WHERE ...;  

image

  • 注意:不帶WHEREDELETE將會刪除整個表的數據;