MySQL表的增刪查改(一)

1.新增數據

INSERT [INTO] table_name 
    [(column [, column] ...)] 
    VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...

用例:創建一張學生表

-- 創建一張學生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
    id INT,
    sn INT comment '學號',
    name VARCHAR(20) comment '姓名',
    qq_mail VARCHAR(20) comment 'QQ郵箱'
);

單行數據+全列插入

-- 插入兩條記錄,value_list 數量必須和定義表的列的數量及順序一致
INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孫悟空', '11111');

多行數據+指定列插入

-- 插入兩條記錄,value_list 數量必須和指定列數量及順序一致
INSERT INTO student (id, sn, name) VALUES 
    (102, 20001, '曹孟德'),
    (103, 20002, '孫仲謀');

2.查詢數據

SELECT 
    [DISTINCT] {* | {column [, column] ...} 
    [FROM table_name]
    [WHERE ...]
    [ORDER BY column [ASC | DESC], ...]
    LIMIT ..

用例:

-- 創建考試成績表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
    id INT,
    name VARCHAR(20),
    chinese DECIMAL(3,1),
    math DECIMAL(3,1),
    english DECIMAL(3,1)
);

-- 插入測試數據
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
    (1,'張三', 67, 98, 56),
    (2,'李四', 87.5, 78, 77),
    (3,'王五', 88, 98.5, 90);

全列查詢

-- 通常情況下不建議使用 * 進行全列查詢
-- 1. 查詢的列越多,意味着需要傳輸的數據量越大;
-- 2. 可能會影響到索引的使用。(索引待後面課程講解)
SELECT * FROM exam_result;

在這裏插入圖片描述

指定列查詢

-- 指定列的順序不需要按定義表的順序來
SELECT id, name, math FROM exam_result;

在這裏插入圖片描述

查詢字段爲表達式

-- 表達式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表達式包含一個字段
SELECT id, name, english + 10 FROM exam_result;
-- 表達式包含多個字段
SELECT id, name, chinese + math + english FROM exam_result;

在這裏插入圖片描述

別名:

爲查詢結果中的列指定別名,表示返回的結果集中,以別名作爲該列的名稱,語法:

SELECT column [AS] alias_name [...] FROM table_name;
-- 結果集中,表頭的列名=別名
SELECT id, name, chinese + math + english 總分 
		FROM exam_result;

在這裏插入圖片描述

查詢去重 DISTINCT

使用DISTINCT關鍵字對某列數據進行去重:
在這裏插入圖片描述

排序 ORDER BY

-- ASC 爲升序(從小到大)
-- DESC 爲降序(從大到小)
-- 默認爲 ASC
SELECT ... FROM table_name [WHERE ...] 
    ORDER BY column [ASC|DESC], [...];
  1. 沒有 ORDER BY 子句的查詢,返回的順序是未定義的,永遠不要依賴這個順序
  2. NULL 數據排序,視爲比任何值都小,升序出現在最上面,降序出現在最下面
    對多個字段進行排序,排序優先級隨書寫順序
-- 查詢同學各門成績,依次按 數學降序,英語升序,語文升序的方式顯示
SELECT name, math, english, chinese FROM exam_result 
    ORDER BY math DESC, english, chinese;

在這裏插入圖片描述

條件查詢 WHERE

算術運算符:

運算符 說明
>, >=, <, <= 大於,大於等於,小於,小於等於
= 等於,NULL 不安全,例如 NULL = NULL 的結果是 NULL
<=> 等於,NULL 安全,例如 NULL <=> NULL 的結果是 TRUE(1)
!=, <> 不等於
BETWEEN a0 AND a1 範圍匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …) 如果是 option 中的任意一個,返回 TRUE(1)
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。% 表示任意多個(包括 0 個)任意字符;_ 表示任意一個字符

邏輯運算符:

運算符 說明
AND 多個條件必須都爲 TRUE(1),結果纔是 TRUE(1)
OR 任意一個條件爲 TRUE(1), 結果爲 TRUE(1)
NOT 條件爲 TRUE(1),結果爲 FALSE(0)

注:

  1. WHERE條件可以使用表達式,但不能使用別名。
  2. AND的優先級高於OR,在同時使用時,需要使用小括號()包裹優先執行的部分
    案例:
    在這裏插入圖片描述
    BETWEEN a0 AND a1:
    在這裏插入圖片描述
    IN:
    在這裏插入圖片描述
    模糊查詢:LIKE
    在這裏插入圖片描述
    分頁查詢:LIMIT
-- 起始下標爲 0

--0 開始,篩選 n 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 從 s 開始,篩選 n 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 從 s 開始,篩選 n 條結果,比第二種用法更明確,建議使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

在這裏插入圖片描述

修改 UPDATE

UPDATE table_name SET column = expr [, column = expr ...]
    [WHERE ...] [ORDER BY ...] [LIMIT ...]

在這裏插入圖片描述

刪除 DELETE

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
-- 刪除表中某一數據
DELETE FROM 數據表名 WHERE 條件;
-- 刪除整表數據
DELETE FROM 數據庫名;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章