1. 程式人生 > 其它 >MySQL學習(6) - 單表查詢

MySQL學習(6) - 單表查詢

技術標籤:MySQL

學習目標

  • 掌握簡單查詢,會使用SELECT查詢所有欄位和指定的欄位
  • 掌握按條件查詢,會使用運算子及不同的關鍵字進行查詢
  • 掌握高階查詢,會使用聚合函式查詢、分組查詢等
  • 學會為表和欄位起別名

簡單查詢

SELECT語句

基本語法:

SELECT [DISTINCT] * | {欄位名1,欄位名2....}
FROM 表名
[WHERE 條件表示式1]
[GROUP BY 欄位名 [HAVING 條件表示式2]]
[ORDER BY 欄位名 [ASC|DESC]]
[LIMIT [OFFSET] 記錄數]  

各個子句的含義:
(1) SELECT [DISTINCT] * | {欄位名1,欄位名2…}:表示要查詢的欄位;*表示所有的欄位;DISTINCT是看可選引數,用來去除重複資料。

(2)FROM 表名:指定所要查詢的表。
(3)WHERE 條件表示式1:where是可選引數,用來指定查詢條件。
(4)GROUP BY 欄位名 [HAVING 條件表示式2]:GROUP BY是可選引數,用來將查詢結果按照指定結果進行分組;HAVING 條件表示式2:對分組後的結果進行過濾。
(5)ORDER BY 欄位名 [ASC|DESC]:對查詢結果按照指定欄位進行排序,預設為升序,ASC表示升序,DESC表示降序。
(6)LIMIT [OFFSET] 記錄數:LIMIT用來限制查詢結果的數量,OFFSET表示偏移量,偏移量為0,從查詢結果的第一條開始記錄;記錄數表示返回查詢記錄的條數。

查詢所有欄位

SELECT * FROM class

結果顯示:
在這裡插入圖片描述

查詢某個特定欄位

SELECT id,stu_name FROM class

結果顯示:
在這裡插入圖片描述

按條件查詢

  • 帶關係運算符的查詢
    基本語法:
SELECT * FROM student WHERE id=2
SELECT * FROM student WHERE grade > 80

結果顯示:
在這裡插入圖片描述
在這裡插入圖片描述

帶IN的查詢

查詢stu_name在 (‘zhang’,‘zhao’,‘tong’)中的所有記錄;不存在:使用not in

SELECT * FROM student WHERE stu_name IN ('zhang','zhao','tong')

結果:
在這裡插入圖片描述

帶BETWEEN_AND的查詢

判斷某個欄位的值是否在指定的範圍之內。
查詢id在1和2之間的所有記錄不在某個範圍內,使用NOT BETWEEN…AND…

SELECT * FROM student WHERE id BETWEEN 1 AND 2

結果:
在這裡插入圖片描述

空值查詢

SELECT * FROM student WHERE id IS NOT NULL
SELECT * FROM student WHERE id NOT NULL
  • 帶like的查詢
    使用like對欄位進行模糊匹配
SELECT * FROM student WHERE id (NOT) LIKE "匹配的字串"

萬用字元

%:c% 匹配以c開頭的字串;c%g 以c開頭以g結尾
_:只能匹配單個字元;w_o 以w開頭o結尾且中間只有一個字元

帶and和or的關鍵字

and:同時滿足條件一和條件二

SELECT * FROM student WHERE id=1 AND grade=90

在這裡插入圖片描述
or:滿足條件一或條件二

SELECT * FROM student WHERE id=1 or id=3

在這裡插入圖片描述

複雜查詢

聚合函式

統計某個欄位的最大值、最小值、平均值等的函式。
COUNT():返回某列的行數
SUM():返回某列的和
AVG():返回某列的平均值
MAX()\MIN():返回某列的最大最小值

  • 語法格式:
SELECT 函式(*) FROM 表名

對結果進行排序

  • 語法格式
# 對成績按照從大到小排列
SELECT * FROM student ORDER BY grade DESC

結果:
在這裡插入圖片描述

分組查詢

按照某個欄位或者多個欄位中的值進行分許,值相同的為一組,通常與聚合函式一起使用才有意義。
計算男女生人數

SELECT count(*),gender FROM student GROUP BY gender

在這裡插入圖片描述

為表和欄位取別名

SELECT * FROM student AS a WHERE a.id=1

SELECT id as stu_id,stu_name FROM student AS a WHERE a.id=1
# 查詢結果中id變為stu_id,但是原表中不變

結果:
在這裡插入圖片描述