基礎(chǔ)查詢
以極客時(shí)間專欄《SQL必知必會(huì)》的王者榮耀表格為例罐旗。
SELECT
語句
檢索單個(gè)列
查詢語句:
SELECT name
FROM heros
結(jié)果:
檢索多個(gè)列
查詢語句:
SELECT name, hp_max
FROM heros
檢索多個(gè)列
查詢語句:
image.png
檢索所有列
查詢語句:
SELECT *
FROM heros
注:生產(chǎn)條件下区转,不推薦查詢所有列名吏廉,最好列出所需列名恋沃,減輕數(shù)據(jù)庫的負(fù)荷,提升性能。
檢索不同的行
去重
查詢語句:
SELECT DISTINCT role_main
FROM heros
限制結(jié)果
查詢語句:
SELECT NAME,hp_max FROM heros LIMIT 5
查詢語句:
SELECT NAME,hp_max FROM heros
LIMIT 5,6
查詢排序
ORDER
語句
按照一列排序
查詢語句:
SELECT NAME,hp_max,hp_growth FROM heros
ORDER BY hp_growth
LIMIT 5
結(jié)果:
按照多列排序
查詢語句:
SELECT NAME,hp_max,hp_growth,hp_start FROM heros
ORDER BY hp_start,hp_max
LIMIT 5
指定排序方向
查詢語句:
SELECT NAME,hp_max,hp_growth,hp_start FROM heros
ORDER BY hp_max DESC
LIMIT 5
結(jié)果:
查詢語句:
SELECT name ,hp_max,hp_growth,hp_start FROM heros
ORDER BY hp_max DESC, hp_growth
LIMIT 5
結(jié)果:
查詢過濾
WHERE
語句
操作符 | 說明 |
---|---|
= | 等于 |
< | 小于 |
> | 大于 |
<> != | 不等于 |
<= !> | 小于等于 |
>= !< | 大于等于 |
BETWEEN | 在兩個(gè)值之間 |
IS NULL | 為 NULL 值 |
檢查單個(gè)值
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE hp_max > 8000
ORDER BY hp_max DESC
LIMIT 5
結(jié)果:
匹配檢查
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE role_main = '戰(zhàn)士'
ORDER BY hp_max DESC
LIMIT 5
結(jié)果:
不匹配檢查
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE role_main <> '坦克'
ORDER BY hp_max DESC
LIMIT 5
結(jié)果:
范圍值檢查
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE hp_max BETWEEN 7500 AND 8000
ORDER BY hp_max DESC
結(jié)果:
空值檢查
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_assist IS NULL
ORDER BY hp_max DESC
LIMIT 5
結(jié)果:
組合WHERE
子句
AND 操作符
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_assist IS NULL AND hp_growth >380
ORDER BY hp_max DESC
OR操作符
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_main = '射手' OR role_main = '法師'
ORDER BY hp_max DESC
LIMIT 10
結(jié)果:
IN操作符
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_main IN ('射手','法師','刺客')
ORDER BY hp_max DESC
LIMIT 10
結(jié)果:
NOT操作符
查詢語句:
SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_main NOT IN ('射手','法師','刺客')
ORDER BY hp_max DESC
LIMIT 10
結(jié)果:
計(jì)算次序
SELECT的執(zhí)行順序:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
優(yōu)先級(jí):
FROM > WHERE > GROUP BY > HAVING > SELECT 的字段 > DISTINCT > ORDER BY > LIMIT
示例:
SELECT DISTINCT player_id, player_name, count(*) as num # 順序 5
FROM player JOIN team ON player.team_id = team.team_id # 順序 1
WHERE height > 1.80 # 順序 2
GROUP BY player.team_id # 順序 3
HAVING num > 2 # 順序 4
ORDER BY num DESC # 順序 6
LIMIT 2 # 順序 7
Ref:
- 《MySQL必知必會(huì)》(Ben Forts)
- 極客時(shí)間《SQL必知必會(huì)》