练习语句,基于几下 三张表为基础
例 表1:emp
例 表2:dept
例 表3:salgrade
条件查询 where
符号:
- =
- != 或 <>
- and
- or
- in
- between … and …
- is null 和 is not null
- not 可取非 (is not , not in)
- like
例 找工资不等于3000的 员工
给字段重命名 ‘as’ 或 ‘空格’ 接新名字 (若是中文,须 ’ 新名字 ')
例子
between and 使用 必须 左小右大 ,两边都为闭区间
例 查薪水在2500到5000薪资的员工
is null 和 is not null
例 查哪些员工comm 不为 null
and ,or 务必分别翻译为 并且 和 或者
例 查工作岗位是 manager 和 salesman 的员工 (留下神,是用and 还是 or ?)
in 相当于 or , not in 意为取反
和上一个例子相同
like 模糊查询 '%'意为任意多个字符, ‘_’ 意为任意一个字符
例 查员工名字中有 S 的员工
排序 order by
asc 升序 , desc 降序(若不写asc和desc则默认升序)
例子 按工资降序排序,再按名字升序排
分组函数 count sum min max avg
注意分组函数不能用在where 后面 分组函数一定在分组后执行,分组函数会忽略 null
group by having group by 可对一个字段里是相同的进行分组 having 相当于分组完后的 where
可在having 里用分组函数
当一个字段被分组后,select 的字段必须为 分组函数(字段名)或被分组的字段名
例子 找出每个部门不同工作岗位的最高薪水
联合分组
连接查询 分为内连接,外连接 关键字 join on
内连接分为 等值,非等值,自连接
这里直接以相比较 较难理解的自连接为例子
查每个员工的领导
外连接多表
查每个员工的部门名称,工资等级和领导
子查询
可在 select,where,from 后添加子查询
例 where 后
找出工资大于平均工资的员工信息
from 后
找每个部门的平均薪水等级
select 后
找出每个员工所在部门名称,显示员工和部门名字