SQL学习之数据查询,基于Oracle下的HR用户(三)

2.6 优先规则

求值运算优先级
1算术运算
2连字操作
3比较操作
4is [not] null, like, [not] in
5[not] between
6not 逻辑条件
7and 逻辑条件
8or 逻辑条件

优先规则:优先规则定义表达式求值和计算的顺序,表中列出了默认的优先顺序。你可以用圆括号括住你想要先计算的表达式来覆盖默认的优先顺序。
2.6.1 示例一

查询工作岗位是 SA_REP 或者工作岗位是 AD_PRES 并且薪水大于 15000 的员工姓名、工作 ID 以及薪水。
select last_name,job_id,salary from employees where job_id = 'SA_REP' or job_id='AD_PRES' and salary > 15000

在这里插入图片描述

2.6.2 示例二

查询工作岗位是 SA_REP 或者是 AD_PRES 并且他们的薪水大于 15000 的员工姓名、工作 ID 以及薪水。
select last_name,job_id,salary from employees where (job_id = 'SA_REP' or job_id='AD_PRES') and salary > 15000;

在这里插入图片描述
2.7 使用 ORDER BY 排序
2.7.1ORDER BY 子句作用
用 ORDER BY 子句排序
ASC: 升序排序,默认
DESC: 降序排序
ORDER BY 子句:用于对结果集进行排序处理,提供了升序排序(ASC)与降序排序(DESC)如果不指定排序规则默认为升序排序。在排序中也可以使用没有包括在SELECT 子句中的列排序。如果未使用 ORDER BY 子句,排序次序就未定义,并且 Oracle 服务器可能对于相同查询的两次执行取回行的顺序不同。
2.7.2ORDER BY 语法
ORDER BY 子句在 SELECT 语句的最后
ORDER BY 后侧指定需要排序列
ASC 以升序排序行 (这是默认排序)
DESC 以降序排序行
2.7.3 升序规则
对于数字值,小的值在前面显示—例如,1–999。
对于日期,早的日期在前面显示—例如,01-1-92 在 01-1-95 前面 。
对于字符值,依字母顺序显示—例如,A 第一,Z 最后。
对于空值,升序排序时显示在最后,降序排序时显示在最前面
2.7.3.1 示例

select last_name,hire_date,salary,commission_pct
from employees order by commission_pct;

在这里插入图片描述

2.7.4 列号排序
可以使用投影的列的序号指定排序列,但是不推荐此种做法。
2.7.4.1 示例

select last_name,hire_date,salary,commission_pct
from employees order by 2;

在这里插入图片描述
2.7.5 用列别名排序
可以使用列的别名指定排序列。
2.7.5.1 示例

select last_name as name,hire_date,salary,commission_pct from employees order by name;

在这里插入图片描述

2.7.6 多列排序
多列排序:可以用多列排序查询结果。在 ORDER BY 子句中,多个指定的列名之间用逗号分开。如果想要对某个列倒序排序需则在该列名后面指定 DESC。
2.7.6.1 示例:

select hire_date,salary from employees order by hire_date,salary desc;

在这里插入图片描述2.7.7SELECT 语句的执行顺序如下:
FROM 子句
WHERE 子句
SELECT 子句
ORDER BY 子句

2.8 约束与排序小节练习
2.8.1 创建一个查询,显示收入超过 $12,000 的雇员的名字和
薪水。

答案:select last_name,salary from employees where salary > 12000;

在这里插入图片描述

2.8.2 创建一个查询,显示雇员号为 176 的雇员的名字和部门
号。

答 案 : select last_name,department_id from
employees where employee_id = 176;

在这里插入图片描述

2.8.3 显示所有薪水不在 5000 和 12000 之间的雇员的名字和
薪水。

答案:select last_name,salary from employees
where salary not between 5000 and 12000;

在这里插入图片描述在这里插入图片描述

2.8.4 显示受雇日期在 2002 年 2 月 20 日 和 2007 年 5 月
1 日 之间的雇员的名字、岗位和受雇日期。按受雇日期
顺序排序查询结果。

答 案 : select last_name,job_id, hire_date
from employees where hire_date between '22-2
月-02' and '01-5 月-07' order by hire_date;

在这里插入图片描述

2.8.5 显示所有在部门 20 和 50 中的雇员的名字和部门号,并
以名字按字母顺序排序。

答 案 : select last_name,department_id from
employees where department_id in (20,50)
order by last_name;

在这里插入图片描述

2.8.6 列出收入在 $5,000 和 $12,000 之间,并且在部门 20
或 50 工作的雇员的名字和薪水。将列标题分别显示为
Employee 和 Monthly Salary。

答 案 : select last_name "Employee",salary
"Monthly Salary" from employees where salary
between 5000 and 12000 and department_id in (20,50);

在这里插入图片描述

2.8.7 显示每一个在 2004 年受雇的雇员的名字和受雇日期。
答 案 : select last_name ,hire_date from
employees where hire_date like ‘%04’;
2.8.8 显示所有没有主管经理的雇员的名字和工作岗位。

答案:select last_name,job_id from employees
where manager_id is null;

在这里插入图片描述

2.8.9 显示所有有佣金的雇员的名字、薪水和佣金。以薪水和佣
金的降序排序数据。

答 案 : select last_name ,salary ,
commission_pct from employees where
commission_pct is not null order by salary
desc ,commission_pct desc;

在这里插入图片描述

2.8.10 显示所有名字中第三个字母是 a 的雇员的名字。

答案: select last_name from employees where
last_name like '__a%';

在这里插入图片描述

2.8.11 显示所有名字中有一个 a 和一个 e 的雇员的名字。

答案: select last_name from employees where
last_name like '%a%' and last_name like '%e%';

在这里插入图片描述

2.8.12 显示所有工作是销售代表 (SA_REP) 或者普通职员
(ST_CLERK) ,并且薪水不等于 $2,500 、 $3,500 或
$7,000 的雇员的名字、工作和薪水。

答 案 : select last_name,job_id,salary from
employees where job_id in
('SA_REP','ST_CLERK') and salary not in (2500,3500,7000);

在这里插入图片描述

2.8.13 显示所有佣金总计为 20% 的雇员的名字、薪水和佣
金。

方法一 : select last_name,salary,commission_pct
from employees where commission_pct = 0.2;

在这里插入图片描述

方法法二 : select last_name,salary,commission_pct
from employees where commission_pct = .20;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值