目錄

 前言

目錄

1.基本查詢

2.表的增刪查改

1.increase

1.Create

2.Insert

3.替換

2.Retrieve

1.select列

2.where條件

3.結果查詢

3.update

4.delete

5.插入查詢結果

 6.聚合函數

結語


1.基本查詢

在 MySQL 中,對錶進行基本查詢主要使用 SELECT 語句。其中會用到很多的限定條件的語句比如:where,from,distinct語句,接下來我會帶着大家從實例中學習這些語句的用法。

2.表的增刪查改

1.increase

1.Create

語法:

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

VALUES (value_list) [, (value_list)] ...

value_list: value, [, value] ...

示例:

mysql基礎查詢_MySQL

2.Insert

(1)單行插入 + 全列插入

mysql基礎查詢_數據_02

(2)多行數據 + 指定列插入

mysql基礎查詢_#數據庫_03

(3)插入否則更新

當插入數據的時候可能某一列面臨主鍵或者唯一鍵衝突,此時可以選擇性的同步更新操作:

語法:

INSERT ... ON DUPLICATE KEY UPDATE

column = value [, column = value] ...

示例:

這裏id衝突了所以插入失敗了,使用插入否則更新的語句成功插入

mysql基礎查詢_數據_04


通過 MySQL 函數獲取受到影響的數據行數:
 


-- 0 row affected: 表中有衝突數據,但衝突數據的值和 update 的值相等

-- 1 row affected: 表中沒有衝突數據,數據被插入

-- 2 row affected: 表中有衝突數據,並且數據已經被更新


-- 通過 MySQL 函數獲取受到影響的數據行數

SELECT ROW_COUNT();


3.替換

(1)當主鍵或者唯一鍵沒有衝突時直接插入

(2)當主鍵或者唯一鍵如果衝突了,刪除後再插入

mysql基礎查詢_#數據庫_05

2.Retrieve

1.select列

(1)全列查詢

-- 通常情況下不建議使用 * 進行全列查詢:

1. 查詢的列越多,意味着需要傳輸的數據量越大;

2. 可能會影響到索引的使用。(索引待後面講解)

mysql基礎查詢_MySQL_06

(2)指定列查詢

查詢的時候指定列不需要按定義表的順序查詢

mysql基礎查詢_數據_07

(3)查詢字段為表達式

表達式包含一個字段:

mysql基礎查詢_#數據庫_08

表達式包含多個字段:

mysql基礎查詢_升序_09

(4)為查詢結果指定別名

mysql基礎查詢_#數據庫_10

(5)結果去重distinct

有重複數據:

mysql基礎查詢_數據_11

數學成績去重:

mysql基礎查詢_#數據庫_12

2.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

具體案例:

-- 創建表結構

CREATE TABLE exam_result (

id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(20) NOT NULL COMMENT ' 同學姓名 ',

chinese float DEFAULT 0.0 COMMENT ' 語文成績 ',

math float DEFAULT 0.0 COMMENT ' 數學成績 ',

english float DEFAULT 0.0 COMMENT ' 英語成績 '

);

-- 插入測試數據

INSERT INTO exam_result (name, chinese, math, english) VALUES

(' 唐三藏 ', 67, 98, 56),

(' 孫悟空 ', 87, 78, 77),

(' 豬悟能 ', 88, 98, 90),

(' 曹孟德 ', 82, 84, 67),

(' 劉玄德 ', 55, 85, 45),

(' 孫權 ', 70, 73, 78),

(' 宋公明 ', 75, 65, 30);

(1)查詢英語不及格的同學(english < 60)

mysql基礎查詢_升序_13

(2)語文成績在 [80, 90] 分的同學及語文成績

使用and:

mysql基礎查詢_升序_14

使用between and:

mysql基礎查詢_#mysql_15

(3)數學成績是 58 或者 59 或者 98 或者 99 分的同學及數學成績

使用or:

mysql基礎查詢_升序_16

使用In:

mysql基礎查詢_#數據庫_17


(4)姓孫的同學 及 孫某同學:



% 匹配任意多個(包括 0 個)任意字符:




mysql基礎查詢_MySQL_18



_ 匹配嚴格的一個任意字符:



mysql基礎查詢_升序_19


(5)語文成績好於英語成績的同學



mysql基礎查詢_#數據庫_20


總分在 200 分以下的同學



mysql基礎查詢_MySQL_21


語文成績 > 80 並且不姓孫的同學



mysql基礎查詢_MySQL_22


(8)孫某同學,否則要求總成績 > 200 並且 語文成績 < 數學成績 並且 英語成績 > 80



mysql基礎查詢_MySQL_23


3.結果查詢

語法:

-- ASC 為升序(從小到大)

-- DESC 為降序(從大到小)

-- 默認為 ASC

SELECT ... FROM table_name [WHERE ...]

ORDER BY column [ASC|DESC], [...];


注意:沒有 ORDER BY 子句的查詢,返回的順序是未定義的,永遠不要依賴這個順序



同學及數學成績,按數學成績升序顯示(ORDER BY 默認升序)



mysql基礎查詢_#mysql_24


查詢同學各門成績,依次按 數學降序,英語升序,語文升序的方式顯示



mysql基礎查詢_升序_25


查詢同學及總分,由高到低



mysql基礎查詢_MySQL_26


ORDER BY 子句中可以使用列別名



mysql基礎查詢_數據_27


查詢姓孫的同學或者姓曹的同學數學成績,結果按數學成績由高到低顯示



mysql基礎查詢_#mysql_28


(5)篩選分頁結果

語法:


-- 起始下標為 0

-- 從 s 開始,篩選 n 條結果

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n


-- 從 0 開始,篩選 n 條結果

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;


-- 從 s 開始,篩選 n 條結果,比第二種用法更明確,建議使用

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;


建議:對未知表進行查詢時,最好加一條 LIMIT 1 ,避免因為表中數據過大,查詢全表數據導致數據庫卡死


按 id 進行分頁,每頁 3 條記錄,分別顯示 第 1 、 2 、 3 頁


第一頁



mysql基礎查詢_MySQL_29


第二頁


mysql基礎查詢_#mysql_30

第三頁,如果結果不足 3 個,不會有影響

mysql基礎查詢_#數據庫_31

3.update

語法:

UPDATE table_name SET column = expr [, column = expr ...]

[WHERE ...] [ORDER BY ...] [LIMIT ...]

(1)對查詢到的結果進行列值更新

mysql基礎查詢_升序_32

(2)將曹孟德同學的數學成績變更為 60 分,語文成績變更為 70 分

mysql基礎查詢_#數據庫_33

(3)將總成績倒數前三的 3 位同學的數學成績加上 30 分

mysql基礎查詢_#數據庫_34

(4)將所有同學的語文成績更新為原來的 2 倍

mysql基礎查詢_#mysql_35

4.delete

語法

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

(1)刪除孫悟空同學的考試成績

mysql基礎查詢_升序_36

(2)刪除整張表

mysql基礎查詢_數據_37

5.插入查詢結果

語法:

INSERT INTO table_name [(column [, column ...])] SELECT ...

 6.聚合函數

COUNT([DISTINCT] expr) 返回查詢到的數據的 數量


SUM([DISTINCT] expr) 返回查詢到的數據的 總和,不是數字沒有意義


AVG([DISTINCT] expr) 返回查詢到的數據的 平均值,不是數字沒有意義


MAX([DISTINCT] expr) 返回查詢到的數據的 最大值,不是數字沒有意義


MIN([DISTINCT] expr) 返回查詢到的數據的 最小值,不是數字沒有意義