1. SELECT查询基础语法
-- 查询一列 --
SELECT name FROM heros
-- 查询多列 --
SELECT name, hp_max, mp_max, attack_max, defense_max FROM heros
-- 检索所有列 --
SELECT * FROM heros;
-- 起别名 --
SELECT name AS n, hp_max AS hm, mp_max AS mm, attack_max AS am, defense_max AS dm FROM heros
1.1 查询常数
概念:在 SELECT 查询结果中增加一列固定的常数列。
作用:用常数列作为某种标记SELECT '王者荣耀' as platform, name FROM heros
SELECT 123 as platform, name FROM heros
1.2 去除重复行
关键字:DISTINCT
作用:去除重复的结果,作用类似于 distinct_func(selected result)
Example 1:
SQL:SELECT DISTINCT attack_range FROM heros
Example 2:
SQL:SELECT DISTINCT attack_range, name FROM heros
Note:
DISTINCT
需要放在所有列名前面DISTINCT
作用是对后面所有列名的组合进行去重
2. 如何排序检索数据
关键字:ORDER BY
排序列名:ORDER BY 后面可以有一个或多个列名,如果是多个列名进行排序,会按照后面第一个列先进行排序,当第一列的值相同的时候,再按照第二列进行排序,以此类推。
排序顺序:在ORDER BY
后面注明排序规则。ASC
代表递增排序,DESC
代表递减排序。
ORDER BY 位置:通常位于SELECT
语句的最后一条子句
SQL:SELECT name, hp_max FROM heros ORDER BY mp_max, hp_max DESC
SQL:SELECT name, hp_max FROM heros ORDER BY hp_max DESC LIMIT 5
3. SELECT的执行顺序
关键字顺序:SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
执行循序: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
在 SELECT 语句执行这些步骤的时候,每个步骤都会产生一个虚拟表,然后将这个虚拟表传入下一个步骤中作为输入。
需要注意的是,这些步骤隐含在 SQL 的执行过程中,对于我们来说是不可见的。