MySQL-單表查詢

單表查詢

簡單查詢

查詢全部字段mysql

SELECT * FROM 表名 ;

查詢指定字段sql

SELECT 字段名1,字段名2,... FROM 表名 ;

按條件查詢

帶關係運算符的查詢函數

SELECT *|(字段名1,字段名2,... )
FROM 表名
WHERE 關係表達式 ;

"等於 =" "不等於 !=或<>「 」小於 <「 」大於 >「 」小於等於 <=」 」大於等於 >=「
帶IN關鍵字的查詢code

SELECT *|(字段名1,字段名2,... )
FROM 表名 
WHERE 字段名 [NOT] IN (元素1,元素2,...) ;

NOT是可選參數,表示查詢不在IN關鍵字指定集合範圍中的記錄。
例如查詢student表中id值爲1,2,3的記錄:select * from student where id in(1,2,3);
帶BETWEEN AND關鍵字的查詢排序

SELECT *|(字段名1,字段名2,... )
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2 ;

NOT是可選參數,表示查詢不在在指定範圍中的記錄。
例如查詢student表中id範圍爲【2,5】的name:select name from student where between 2 and 5;
空值查詢字符串

SELECT *|(字段名1,字段名2,... )
FROM 表名
WHERE 字段名 IS [NOT] NULL ;

NOT是可選參數,表示查詢不是空值的記錄。
例如查詢student表中grade爲空的學生姓名:select name from student where grade is NULL;
帶DISTINCT關鍵字的查詢(用於過濾重複記錄)it

SELECT DISTINCT 字段名 FROM 表名 ;

當DISTINCT後字段名有多個時,只有多個字段的值一塊兒重複才被認爲是重複記錄。
帶LIKE關鍵字的查詢table

SELECT *|(字段名1,字段名2,... )
FROM 表名
WHERE 字段名 [NOT] LIKE '匹配字符串' ;

NOT是可選參數,使用NOT表示查詢與指定字符串不匹配的記錄。
其中‘匹配字符串’指的是包含百分號(%)或者下劃線( _ )的通配字符串:
百分號(%)通配符,匹配任意長度的字符串,包括空字符串。例如"c%"指的是以c開頭的字符串,"%c"指的是以c結尾的字符串,"%c%"指的是包含c的字符串(包含開頭和結尾)。select id,name from student where name like '%c%' ;
下劃線( _ )通配符,一個下劃線表明一個字符,例如"c_t"表示開頭爲c結尾爲t長度爲3的字符串;並且要注意空格,帶有空格的「M_ _QL」只能匹配到MY SQL,不能匹配到MYSQL。
特殊的:若是要匹配字符串中的%或_須要用轉譯字符「\」,例如「%\%%」表示包含%的字符串。
帶AND關鍵字的多條件查詢class

SELECT *|(字段名1,字段名2,... )
FROM 表名
WHERE 表達式1 AND 表達式2 [... AND 表達式n]

例如查詢student表中id爲1和二、name以c開頭而且grade>50的記錄:select * from student where id in(1,2) and name like 'c%' and grade>50;
帶OR關鍵字的多條件查詢select

SELECT *|(字段名1,字段名2,... )
FROM 表名
WHERE 表達式1 OR 表達式2 [... OR 表達式n]

知足其中一個表達式便可,例如查詢student表中id<3或者sex爲女的學生姓名:select name from student where id<1 or sex='女';
拓展:OR和AND關鍵字一塊兒使用時,AND的優先級高於OR,一塊兒使用時,先運算AND兩邊的條件表達式,再算OR條件兩邊的條件表達式。

高級查詢

聚合函數

函數名稱 做用
COUNT( ) 返回某列的行數
SUM( ) 返回某列的和
AVG( ) 返回某列的平均值
MAX( ) 返回某列的最大值
MIN( ) 返回某列的最小值
  • COUNT( )函數:統計記錄條數
SELECT COUNT( * ) FROM 表名 ;
  • SUM( )函數:某個字段求和
SELECT SUM(字段名) FROM 表名 ;
  • AVG( )函數:某個字段求平均值
SELECT AVG(字段名) FROM 表名 ;
  • MAX( )函數:某個字段求最大值
SELECT MAX(字段名) FROM 表名 ;
  • MIN( )函數:某個字段求最小值
SELECT MIN(字段名) FROM 表名 ;

對查詢結果排序

SELECT *|字段名1,字段名2,...
FROM 表名
ORDER BY 字段名1 [ASC|DESC],字段名2 [ASC|DESC]... ;

ASC升序,DESC降序,rand()爲隨機排序,默認爲升序。
例如查出student表全部記錄並按照grade排序:select * from student order by grade;
當指定按照多個字段進行排序時,先對第一個字段排序,若是遇到字段值相同的再把這些按照下一個進行排序。

分組查詢

使用GROUP BY按某個字段或者多個字段中的值進行分組,字段中值相同的爲一組。

SELECT *|字段名1,字段名2,...
FROM 表名
GROUP BY 字段名1,字段名2,...[HAVING 條件表達式] ;

單獨使用GROUP BY分組:
查詢的是每一個分組中的一條記錄。
GROUP BY和聚合函數一塊兒使用:
例如查詢student表的count( * )和sex,按照sex進行分組查詢,再計算每一個分組中各有多少學生select count(*),sex from student group by sex;結果爲(其中一、五、3表示對應性別的個數)

+----------+------+
| count(*) | sex  |
+----------+------+
|        1 | NULL |
|        5 | 女   |
|        3 | 男   |
+----------+------+
3 rows in set (0.00 sec)

GROUP BY和HAVING關鍵字一塊兒使用
HAVING關鍵字和WHERE關鍵字做用相同,都用於設置條件表達式,對查詢結果進行過濾,二者區別:HAVING關鍵字以後能夠跟聚合函數,而WHERE關鍵字不能。
例如將student表按照sex字段進行分組查詢,查出grade字段值之和大於200的分組:select sum(grade),sex from student group by sex having sum(grade)>200;
使用LIMIT限制查詢結果的數量
該關鍵字能夠指定查詢結果從哪一條記錄開始以及查詢多少條信息。

SELECT 字段名1,字段名2,...
FROM 表名
LIMIT [OFFSET,] 記錄數 ;

OFFSET爲可選參數,表示偏移量,若是偏移量爲0則從查詢結果的第一條記錄開始,偏移量爲1從裏二條開始,以此類推。不指定時默認值爲0。‘記錄數’表示返回查詢記錄的條數。
例如查詢student表中第2條到第5條的記錄:select * from student limit 1,4;

相關文章
相關標籤/搜索