7.1 無條件數(shù)據(jù)查詢
7.1.1 簡(jiǎn)單數(shù)據(jù)查詢
關(guān)鍵字
SELECT...FROM...
語法:
SELECT
`查詢字段1 `,
`查詢字段2 `,
`查詢字段3 `,
……
`查詢字段n `
FROM `表名`;
示例
說明:
- 對(duì)于簡(jiǎn)單的數(shù)據(jù)查詢躯舔,應(yīng)使用SELECT…FROM這樣的命令碎紊,但需要注意惹骂,這樣會(huì)查詢出表中所有的數(shù)據(jù),因?yàn)闆]有查詢條件。
- 在進(jìn)行數(shù)據(jù)查詢時(shí),必須明確寫出需要查詢的字段旱爆,而不能使用星號(hào)*。
7.1.2 過濾重復(fù)數(shù)據(jù)
關(guān)鍵字:
DISTINCT
語法:
SELECT DISTINCT 字段名 FROM 表名;
示例:
說明:
DISTINCT是用來去除某個(gè)字段的重復(fù)數(shù)據(jù)窘茁,只取得某個(gè)字段不重復(fù)的數(shù)據(jù)怀伦。
7.2 有條件數(shù)據(jù)查詢
7.2.1 帶關(guān)系運(yùn)算符的條件數(shù)據(jù)查詢
關(guān)鍵字:
大于:>
大于等于:>=
小于:<
小于等于:<=
不等于:<>
語法:
SELECT
`查詢字段1 `,
`查詢字段2 `,
`查詢字段3 `,
……
`查詢字段n `
FROM `表名`
WHERE `條件字段1` = '條件字段1的值'
AND `條件字段2` > '條件字段2的值',
AND `條件字段3` <> '條件字段3的值',
……
AND `條件字段n` < '條件字段n的值';
示例:
7.2.2 帶邏輯運(yùn)算符的條件數(shù)據(jù)查詢
關(guān)鍵字:
AND
OR
語法:
SELECT
`查詢字段1 `,
`查詢字段2 `,
`查詢字段3 `,
……
`查詢字段n `
FROM `表名`
WHERE `條件字段1` = '條件字段1的值'
OR `條件字段2` = '條件字段2的值',
示例:
7.2.3 帶BETWEEN AND關(guān)鍵字的范圍查詢
關(guān)鍵字:
BETWEEN……AND……
語法:
SELECT
`查詢字段1 `,
`查詢字段2 `,
`查詢字段3 `,
……
`查詢字段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)鍵字的空值查詢
語法:
WHERE `字段` IS NULL
示例:
說明:
IS NULL是用于篩選表中某個(gè)字段的值為NULL的數(shù)據(jù)。
7.2.5 帶IN關(guān)鍵字的集合查詢
語法:
WHERE `字段` IN ('內(nèi)容1'山林,'內(nèi)容2'房待,'內(nèi)容3'……,'內(nèi)容n')
示例:
說明:
IN關(guān)鍵字用于篩選某個(gè)字段滿足某些條件的數(shù)據(jù)驼抹。
7.2.6 帶LIKE關(guān)鍵字的模糊查詢
語法:
WHERE `字段` LIKE '%部分內(nèi)容%'
WHERE `字段` LIKE '%部分內(nèi)容'
WHERE `字段` LIKE '部分內(nèi)容%'
示例:
說明:
LIKE關(guān)鍵字用于篩選某個(gè)字段包括某一部分內(nèi)容的所有數(shù)據(jù)桑孩。
7.3 數(shù)據(jù)查詢結(jié)果排序
7.3.1 按升序排序
關(guān)鍵字:
ORDER BY `字段`;
ORDER BY `字段` ASC;
示例:
說明:
MySQL按照升序的方式默認(rèn)排序。
7.3.2 按倒序排序
關(guān)鍵字:
ORDER BY `字段` DESC
示例:
說明:
如果需要按照降序排序框冀,需要在代碼中明確指定流椒。
7.4 限制數(shù)據(jù)記錄查詢數(shù)量
7.4.1 不指定初始位置
關(guān)鍵字:
LIMIT n
n: 數(shù)據(jù)條數(shù)
示例:
數(shù)據(jù)庫(kù)里所有數(shù)據(jù):
查詢語句:
查詢結(jié)果:
說明:
limit用于限制查詢需要返回的數(shù)據(jù)條數(shù)。
7.4.2 指定初始位置
關(guān)鍵字:
LIMIT [m,] n
m: 下標(biāo)起始位置
n: 數(shù)據(jù)條數(shù)
示例:
數(shù)據(jù)庫(kù)里所有數(shù)據(jù):
查詢語句:
查詢結(jié)果:
說明:
LIMIT m, n 指的是從m下表開始明也,返回n條數(shù)據(jù)(數(shù)據(jù)表的下表從0開始)
7.5 統(tǒng)計(jì)函數(shù)和分組數(shù)據(jù)查詢
7.5.1 MySQL支持的統(tǒng)計(jì)函數(shù)
- MAX
取得某個(gè)字段的最大值
- MIN
取得某個(gè)字段的最小值
- COUNT
取得查詢記錄的總條數(shù)
- AVG
查詢某個(gè)字段的平均值
- SUM
查詢某個(gè)字段的合計(jì)
7.5.2 分組數(shù)據(jù)統(tǒng)計(jì)——單字段分組查詢
關(guān)鍵字:
GROUP BY `字段`
示例:
訂單表的數(shù)據(jù)如下:
SODevice指的是客戶使用什么設(shè)備下的訂單宣虾,如果需要統(tǒng)計(jì)使用移動(dòng)端(Mobile)和PC端的各自的訂單數(shù)量并按照倒序排序時(shí),就相當(dāng)于按照訂單下單設(shè)備(SODevice)的類型進(jìn)行分組后温数,再計(jì)算不同設(shè)備的合計(jì)绣硝。
SQL語句如下:
結(jié)果如下:
說明:
- group by常用和聚合函數(shù)一塊使用。
- select指定的字段撑刺,要么就要包含在Group By語句的后面鹉胖,作為分組的依據(jù);要么就要被包含在聚合函數(shù)中够傍。
7.5.3 分組數(shù)據(jù)統(tǒng)計(jì)——多字段分組查詢
關(guān)鍵字:
GROUP BY `字段1`, `字段2`, ……, `字段n`
示例:
訂單表的數(shù)據(jù)如下:
需要查詢出每個(gè)省下的每個(gè)市在5月29日到5月30日(含5月30日)的訂單總數(shù)次员,并按照訂單總數(shù)倒序排序。
SQL語句如下:
查詢結(jié)果如下:
7.5.4 分組數(shù)據(jù)統(tǒng)計(jì)——實(shí)現(xiàn)HAVING子句限定分組查詢
關(guān)鍵字:
HAVING `字段1` option 'value'
示例:
訂單明細(xì)表的數(shù)據(jù)如下:
需要從訂單明細(xì)表取得2017年5月29日到2017年5月30日(含5月30日)商品銷售數(shù)量大于2的每個(gè)商品的銷售數(shù)量王带,并按照銷售數(shù)量倒序排序淑蔚。
SQL語句:
說明:
HAVING相當(dāng)于WHERE,不同的是HAVING過濾的是經(jīng)過分組統(tǒng)計(jì)后的數(shù)據(jù)愕撰。