7.1 無(wú)條件數(shù)據(jù)查詢(xún)
7.1.1 簡(jiǎn)單數(shù)據(jù)查詢(xún)
關(guān)鍵字
SELECT...FROM...
語(yǔ)法:
SELECT
`查詢(xún)字段1 `,
`查詢(xún)字段2 `,
`查詢(xún)字段3 `,
……
`查詢(xún)字段n `
FROM `表名`;
示例

說(shuō)明:
- 對(duì)于簡(jiǎn)單的數(shù)據(jù)查詢(xún),應(yīng)使用SELECT…FROM這樣的命令,但需要注意,這樣會(huì)查詢(xún)出表中所有的數(shù)據(jù),因?yàn)闆](méi)有查詢(xún)條件。
- 在進(jìn)行數(shù)據(jù)查詢(xún)時(shí),必須明確寫(xiě)出需要查詢(xún)的字段,而不能使用星號(hào)*。
7.1.2 過(guò)濾重復(fù)數(shù)據(jù)
關(guān)鍵字:
DISTINCT
語(yǔ)法:
SELECT DISTINCT 字段名 FROM 表名;
示例:

說(shuō)明:
DISTINCT是用來(lái)去除某個(gè)字段的重復(fù)數(shù)據(jù),只取得某個(gè)字段不重復(fù)的數(shù)據(jù)。
7.2 有條件數(shù)據(jù)查詢(xún)
7.2.1 帶關(guān)系運(yùn)算符的條件數(shù)據(jù)查詢(xún)
關(guān)鍵字:
大于:>
大于等于:>=
小于:<
小于等于:<=
不等于:<>
語(yǔ)法:
SELECT
`查詢(xún)字段1 `,
`查詢(xún)字段2 `,
`查詢(xún)字段3 `,
……
`查詢(xún)字段n `
FROM `表名`
WHERE `條件字段1` = '條件字段1的值'
AND `條件字段2` > '條件字段2的值',
AND `條件字段3` <> '條件字段3的值',
……
AND `條件字段n` < '條件字段n的值';
示例:

7.2.2 帶邏輯運(yùn)算符的條件數(shù)據(jù)查詢(xún)
關(guān)鍵字:
AND
OR
語(yǔ)法:
SELECT
`查詢(xún)字段1 `,
`查詢(xún)字段2 `,
`查詢(xún)字段3 `,
……
`查詢(xún)字段n `
FROM `表名`
WHERE `條件字段1` = '條件字段1的值'
OR `條件字段2` = '條件字段2的值',
示例:

7.2.3 帶BETWEEN AND關(guān)鍵字的范圍查詢(xún)
關(guān)鍵字:
BETWEEN……AND……
語(yǔ)法:
SELECT
`查詢(xún)字段1 `,
`查詢(xún)字段2 `,
`查詢(xún)字段3 `,
……
`查詢(xún)字段n `
FROM `表名`
WHERE `條件字段1` = '條件字段1的值'
AND `條件字段2` BETWEEN '條件字段2的值1' AND '條件字段2的值2'
OR `條件字段3` BETWEEN '條件字段3的值1' AND '條件字段3的值2';
示例:

7.2.4 帶IS NULL關(guān)鍵字的空值查詢(xún)
語(yǔ)法:
WHERE `字段` IS NULL
示例:

說(shuō)明:
IS NULL是用于篩選表中某個(gè)字段的值為NULL的數(shù)據(jù)。
7.2.5 帶IN關(guān)鍵字的集合查詢(xún)
語(yǔ)法:
WHERE `字段` IN ('內(nèi)容1','內(nèi)容2','內(nèi)容3'……,'內(nèi)容n')
示例:

說(shuō)明:
IN關(guān)鍵字用于篩選某個(gè)字段滿(mǎn)足某些條件的數(shù)據(jù)。
7.2.6 帶LIKE關(guān)鍵字的模糊查詢(xún)
語(yǔ)法:
WHERE `字段` LIKE '%部分內(nèi)容%'
WHERE `字段` LIKE '%部分內(nèi)容'
WHERE `字段` LIKE '部分內(nèi)容%'
示例:

說(shuō)明:
LIKE關(guān)鍵字用于篩選某個(gè)字段包括某一部分內(nèi)容的所有數(shù)據(jù)。
7.3 數(shù)據(jù)查詢(xún)結(jié)果排序
7.3.1 按升序排序
關(guān)鍵字:
ORDER BY `字段`;
ORDER BY `字段` ASC;
示例:

說(shuō)明:
MySQL按照升序的方式默認(rèn)排序。
7.3.2 按倒序排序
關(guān)鍵字:
ORDER BY `字段` DESC
示例:

說(shuō)明:
如果需要按照降序排序,需要在代碼中明確指定。
7.4 限制數(shù)據(jù)記錄查詢(xún)數(shù)量
7.4.1 不指定初始位置
關(guān)鍵字:
LIMIT n
n: 數(shù)據(jù)條數(shù)
示例:
數(shù)據(jù)庫(kù)里所有數(shù)據(jù):

查詢(xún)語(yǔ)句:

查詢(xún)結(jié)果:

說(shuō)明:
limit用于限制查詢(xún)需要返回的數(shù)據(jù)條數(shù)。
7.4.2 指定初始位置
關(guān)鍵字:
LIMIT [m,] n
m: 下標(biāo)起始位置
n: 數(shù)據(jù)條數(shù)
示例:
數(shù)據(jù)庫(kù)里所有數(shù)據(jù):

查詢(xún)語(yǔ)句:

查詢(xún)結(jié)果:

說(shuō)明:
LIMIT m, n 指的是從m下表開(kāi)始,返回n條數(shù)據(jù)(數(shù)據(jù)表的下表從0開(kāi)始)
7.5 統(tǒng)計(jì)函數(shù)和分組數(shù)據(jù)查詢(xún)
7.5.1 MySQL支持的統(tǒng)計(jì)函數(shù)
- MAX
取得某個(gè)字段的最大值

- MIN
取得某個(gè)字段的最小值

- COUNT
取得查詢(xún)記錄的總條數(shù)

- AVG
查詢(xún)某個(gè)字段的平均值

- SUM
查詢(xún)某個(gè)字段的合計(jì)

7.5.2 分組數(shù)據(jù)統(tǒng)計(jì)——單字段分組查詢(xún)
關(guān)鍵字:
GROUP BY `字段`
示例:
訂單表的數(shù)據(jù)如下:

SODevice指的是客戶(hù)使用什么設(shè)備下的訂單,如果需要統(tǒng)計(jì)使用移動(dòng)端(Mobile)和PC端的各自的訂單數(shù)量并按照倒序排序時(shí),就相當(dāng)于按照訂單下單設(shè)備(SODevice)的類(lèi)型進(jìn)行分組后,再計(jì)算不同設(shè)備的合計(jì)。
SQL語(yǔ)句如下:

結(jié)果如下:

說(shuō)明:
- group by常用和聚合函數(shù)一塊使用。
- select指定的字段,要么就要包含在Group By語(yǔ)句的后面,作為分組的依據(jù);要么就要被包含在聚合函數(shù)中。
7.5.3 分組數(shù)據(jù)統(tǒng)計(jì)——多字段分組查詢(xún)
關(guān)鍵字:
GROUP BY `字段1`, `字段2`, ……, `字段n`
示例:
訂單表的數(shù)據(jù)如下:

需要查詢(xún)出每個(gè)省下的每個(gè)市在5月29日到5月30日(含5月30日)的訂單總數(shù),并按照訂單總數(shù)倒序排序。
SQL語(yǔ)句如下:

查詢(xún)結(jié)果如下:

7.5.4 分組數(shù)據(jù)統(tǒng)計(jì)——實(shí)現(xiàn)HAVING子句限定分組查詢(xún)
關(guān)鍵字:
HAVING `字段1` option 'value'
示例:
訂單明細(xì)表的數(shù)據(jù)如下:

需要從訂單明細(xì)表取得2017年5月29日到2017年5月30日(含5月30日)商品銷(xiāo)售數(shù)量大于2的每個(gè)商品的銷(xiāo)售數(shù)量,并按照銷(xiāo)售數(shù)量倒序排序。
SQL語(yǔ)句:

說(shuō)明:
HAVING相當(dāng)于WHERE,不同的是HAVING過(guò)濾的是經(jīng)過(guò)分組統(tǒng)計(jì)后的數(shù)據(jù)。