进行数据分析及挖掘,我们的目的是从数据库中抓取有用信息。
1. SELECT语句
MySQL的书写顺序为:
SELECT
DISTINCT column,AGG_FUNC(column_or_expression)
FROM
Mytable
JOIN
other_table
ON
Mytable.column=other_table.column
WHERE
constraint_expression
GROUP BY
column
HAVING
constraint_expression
ORDER BY
column ASC/DESC
LIMIT
count OFFSET count;
MySQL的执行顺序为:
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
SELECT DISTINCT
ORDER BY
LIMIT/OFFSET
- FROM 和 JOIN被先执行,获得一份数据
- 有了数据集,WHERE 限制条件把不满足的行抛弃掉
- WHERE 限制条件后,GROUP BY 会根据某一字段来进行分组,并对各个组进行求聚合
- HAVING 与 WHERE 语句作用相同,但HAVING是过滤聚合值
- SELECT语句
- DISTINCT 对剩下的行,去除重复行,只保留唯一
- ORDER BY 对SELECT 后的结果进行排序
- LIMIT/OFFSET 用来限定返回的行数
1.1 一个基础的SQL查询
开始学习MySQL的一个好方法就是使用最简单的查询,即从一个表中查询一列数据。
SELECT zc.zcta5, LEFT(zc.zcta5, 3) as scf
FROM ZipCensus zc
WHERE stab = 'MN'
ORDER BY zc.zcta5
从ZipCensus,别名为zc的表中;获取列zcta5从左开始截取长度为3的字符串,别名为scf;且只有stab列等于“MN”的数据才返回;而后,对数据进行排列。
1.2 一个基本的求和查询
SQL的一个强大的功能是它能够对表中的数据求和。
SELECT stab, COUNT(*) as numzip
FROM ZipCensus zc
GROUP BY stab
ORDER BY numzip DESC
从ZipCensus,别名为zc的表中;并将表看成若干组,这些组是通过stab列中的不同值来决定的;在组内,计算表中数据行的行数;结果以计数的降序排序。