SQL中的查询排序

一、SQL基础查询
1、select语句
格式:select字段from表名;

2、where 用于限制查询的结果

3、查询条件> < >= <= = !=

练习:查询工资低于2000的员工
练习:查询部门id不是10的员工
练习:查询91年后入职的员工

4、与 或(AND,OR)

5、在 不在(IN,NOT IN)

6、在[a,b] (between val1 and val2)
练习:查询工资大于1000,小于1500的员工

7、空 非空(NULL,NOT NULL)
练习:查询出公司中最高领导的名字

8、全部 任一(ALL,ANY)
不能单独使用,必须与关系运算符配合
练习:查询职位是仓库管理员的工资
练习:查询工资比任一仓库管理员高的员工信息
练习:查询工资比所有仓库管理员高的员工信息

从s_emp表查询出所有的部门ID

9、排重DISTINCT
用在字段之前
练习:工资在1000~1500之间的职位有哪些

二、排序
1、使用 ORDER BY 语句
格式:select 字段 from 表名 where 条件 ORDER BY 字段;
练习:显示员工姓名、职位、工号,按年薪从低到高排列显示

2、设置升序降序(ASC,DESC)
格式:select 字段 from 表名 where 条件 ORDER BY 字段 ASC|DESC

3、多项排序
格式:select 字段 from 表名 where 条件 ORDER BY 字段 ASC|DESC,字段ASC|DESC

三、聚合函数
注意:在使用比较运算符时NULL为最大值,在排序时也会受影响
把 select 语句的查询结果汇聚成一个结果,这样的函数叫聚合函数
1、MAX\MIN
获取最大值和最小值,可以是任何数据类型,但只能获取一个字段

2、AVG\SUM
获取平均值、总和
nvl(salary,0)

3、COUNT
统计记录的数量

四、分组
1、GROUP BY
格式:select 组函数 from 表 group by 字段

2、HAVING 组判断条件
它的真假决定一组数据是否返回
练习:计算部门中最低的工资小于700的部门平均工资

五、查询语句的执行顺序
1、格式:select sum(salary) from 表名 where bool order by group by
  a、from 表名,先确定数据的来源
  b、where 确定表中的哪些数据有效
  c、group by 字段名,确定分组的依据
  d、having 确定组数据是否返回
  e、order by 对组数据进行排序

六、关联查询
1、多表查询
select 字段 from 表1,表2 where;
2、多表查询时有相同字段怎么办
    1、表名.字段名
  2、表名如果太长,可以给表起别名 (from 表 别名)
3、笛卡尔积
  a、8条数据
  b、9条数据
在多表查询时,一定要设置where 条件,否则将得到笛卡尔积


七、连接查询
当使用多表进行关联查询时,根据设置的条件会得到不同的结果
1、内连接查询:左右两边能匹配上的
select last_name ,name from s_emp,s_dept where dept_id=s_dept.id
2、外连接:左右两边不能匹配的数据
select last_name ,name from s_emp left|right|full outer join s_dept on dept_id=s_dept.id
3、左外连接
匹配成功的数据+左表不能匹配的数据
4、右外连接
匹配成功的数据+右表不能匹配的数据
5、全外连接
匹配成功的数据+左右表不能匹配的数据



猜你喜欢

转载自www.cnblogs.com/xiwen2017/p/9635004.html