sql语句顺序和执行顺序
(8)SELECT (9)DISTINCT
(1)FROM
(3)JOIN(2)ON
(4)WHERE
(5)GROUP BY <group_by_list>
(6)WITH {CUBE|ROLLUP}
(7)HAVING
(10)ORDER BY <order_by_list>
(11)LIMIT <limit_number>
标准的 SQL 的解析顺序为:
(1) FROM 子句 组装来自不同数据源的数据
(2) WHERE 子句 基于指定的条件对记录进行筛选
(3) GROUP BY 子句 将数据划分为多个分组
(4) 使用聚合函数进行计算(MAX是对整列,不分组)
(5) 使用HAVING子句筛选分组
(6) 计算所有的表达式
(7) 使用ORDER BY对结果集进行排序
运算符优先级
完整执行顺序:
limit
LIMIT m,n : 表示从第m+1条开始,取n条数据;
LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。
符合主键
主键是唯一的索引,通常会用GUID最为主键,但是并不是每个表都存在ID字段,例如学生表(姓名,生日,性别,班级),这里面每一个值都可能重复,无法使用单一字段作为主键,这时我们可以将多个字段设置为复合主键,由复合主键标识唯一性。只要不是复合主键每个值都重复,就不算重复。
非条件
- NOT IN(表),字段!=字段
join 查询有null时
- 可用到WHERE dept_no IS NULL
连接查询的简写形式
(好理解)SELECT emp_no FROM (SELECT * FROM employees LEFT JOIN dept_manager
ON employees.emp_no = dept_manager.emp_no)
WHERE dept_no IS NULL
(简写)SELECT employees.emp_no FROM employees LEFT JOIN dept_manager
ON employees.emp_no = dept_manager.emp_no
WHERE dept_no IS NULL
group 不和合计函数在一起时,默认选第一个
having 是堆group分组的后的数据进行操作的,
- sum(),max(),。。。
判断奇数偶数
num%2=1;
判断不为某值
value ! =‘value’