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

2 约束和排序数据
2.1 用选择限制行

SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)] ;

WHERE 子句跟着 FROM 子句
WHERE 限制查询满足条件的行 condition 由列名、表达式、常数和比较操作组成
你能够用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个必须满足的条件,WHERE 子句紧跟着 FROM 子句。如果条件是 true,返回满足条件的行。WHERE 子句能够比较列值、文字值、算术表达式或者函数WHERE 子句由三个元素组成:
列名、比较条件列名、常量或值列表
2.1.1 示例

查询雇员的 last_name,job ID 和 department 号,要求这些雇员的 department_id 是90select last_name,job_id,department_id 
from employees 
where department_id = 90;

在这里插入图片描述

2.2 字符串和日期
• 字符串和日期的值放在单引号中
• 字符值区分大小写,日期值是格式敏感的
• 日期的默认格式是 DD-MON-RR
• 中文版 Oracle 与英文版 Oracle 对于日期的月份格式有区别。中文版的用 1 月 英文版为月份的简写如:January Jan. 在 WHERE 子句中字符串和日期必须包含在单引号 (‘ ’) 中。但是,数字常数不应该包含在单引号中。所有的字符搜索是大小写敏感的。
Oracle 数据库以内部数字格式存储日期,表示为:世纪、年、月、日、小时、分和秒。
默认的日期显示是 DD-MON-RR。
2.2.1 示例

查询员工表中名字为 King 的员工的工作编号。
select job_id from employees where last_name = 'King';
查询 2006124 日入职的员工的姓名、部门编号以及工作 ID。
select last_name,department_id,job_id from employees where hire_date = '24-1月-06';

在这里插入图片描述在这里插入图片描述2.3 比较条件
条件运算符

运算符含义
=等于
>大于
>=大于等于
<=小于等于
<小于
<>不等于

注:不等于也可使用 != 和 ^= 来表示。

查询员工薪水小于等于 3000 的员工的姓名与薪水。
select last_name,salary from employees
where salary <= 3000;

在这里插入图片描述2.4 其它比较条件

操作含义
between…and…在两个值之间
in(set)匹配一个任意值列表
like匹配一个字符模板
is null是一个空值

2.4.1 使用 BETWEEN 条件
BETWEEN 条件:可以用 BETWEEN 范围条件显示基于一个值范围的行。指定的范围包含一个下限和一个上限。BETWEEN … AND …实际上是由 Oracle 服务器转变为 AND
条件:(a >= 下限) AND (a <= 上限),所以使用 BETWEEN … AND … 并没有性能的提高,只是逻辑上简单。
2.4.1.1 示例

查询薪水在$2,500 和$3,500(包含 25003500) 之间的那些雇员的姓名以及薪水。
select last_name,salary from employees
where salary between 2500 and 3500;

在这里插入图片描述

2.4.2 使用 IN 条件
IN 条件:用 IN 条件在指定的一组值中进行选择。IN ( … ) 实际上是由 Oracle 服务器转变为一组 OR 条件:a = value1 OR a = value2 OR a = value3,所以使用 IN ( … ) 并没有得到性能的提高,只是逻辑上简单。

2.4.2.1 示例
查询所有经理号为 100101201 的雇员的 employee numbers, last names, salary。
select employee_id,last_name,salary from employees 
where manager_id in(100,101,201);

在这里插入图片描述

2.4.3 使用 LIKE 条件
• 使用 LIKE 条件执行有效搜索串值的通配符搜索
• 搜索条件既可以包含文字也可以包含数字:
% 表示零个或多个字符
_ 表示一个占位符
LIKE 条件:我们也许不总能知道要搜索的确切的值,但能够选择那些用 LIKE 条件匹配一个字符模板的行。字符模板匹配运算涉及通配符查询。有两个符号 % 和 _ 可以用来构造搜索串。

2.4.3.1 示例一
查询 EMPLOYEES 表中名字以一个大写字母 S 开始的雇员的名字。
select last_name from employees where
last_name like 'S%';

在这里插入图片描述

2.4.3.2 示例二
查询所有在 2005 年进入本公司的雇员的名字和受雇日期。
select last_name,hire_date from
employees where hire_date like '%05';

在这里插入图片描述

ESCAPE:可以用 ESCAPE 标识符搜索实际的 % 和 _ 符号。使用 ESCAPE 选项,该选项指定换码符是什么。如果你想要搜索包含‘SA_’的字符串可以使用 ESCAPE 对\表示该符号为转义符号。LIKE ‘%SA_%’ ESCAPE ‘’;

2.4.3.3 示例三
查询员工表中工作 ID 中包含 SA_的员工姓名以及工作 ID。
select last_name,job_id from employees
where job_id like 'SA\_%' escape '\';

在这里插入图片描述

2.4.4 使用 NULL 条件
NULL 条件:NULL 条件中包括 IS NULL 条件和 IS NOT NULL 条件。IS NULL 条件用于空值测试。空值的意思是难以获得的、未指定的、未知的或者不适用的。因此,不能用 = 判断,因为 null 不能等于或不等于任何值。IS NOT NULL 测试不是空值。
2.4.4.1 示例

查询所有没有佣金的雇员的 last name, job ID 和 commission。
select last_name,job_id,commission_pct
from employees where commission_pct is null;

在这里插入图片描述

查询所有有佣金的雇员的 last name, job ID 和 commission。
select last_name,job_id,commission_pct
from employees where commission_pct is not null;

在这里插入图片描述
2.5 逻辑条件关系

运算含义
and如果两个组成部分的条件都为真,返回True
or如果两个组成部分中的任一个条件为真,返回True
not如果跟随的条件为假,返回True

逻辑条件:逻辑条件组合两个比较条件的结果来产生一个基于这些条件的单个的结果,或者逆转一个单个条件的结果。当所有条件的结果为真时,返回行。SQL 的三个逻辑运算符是:AND 、OR 、NOT 。
2.5.1AND
AND:AND 要求两个条件同时为真。
2.5.1.1 示例

查询工作岗位包含字符串 MAN 并且收入大于等于$10,000 的那些雇员的编号、工作ID、名字以及薪水。
select employee_id,job_id,last_name,salary from employees where job_id like '%MAN%' and salary >= 10000;

在这里插入图片描述
2.5.2OR
OR:OR 操作要求两者之一为真即可。
2.5.2.1 示例

查询任何 job ID 中包含 MAN 或者收入大于等于$10,000 的雇员编号、工作 ID、名字以及薪水。
select employee_id,job_id,last_name,salary
from employees where job_id like '%MAN%' or
salary >= 10000;

在这里插入图片描述

2.5.3NOT
NOT:取反。NOT 运算符也可以用于另一个 SQL 运算符,例如,BETWEEN、LIKE、IN 和 NULL。
2.5.3.1 示例

查询那些工作岗位不是 IT_PROG、ST_CLERK 或 SA_REP 的雇员的名字和工作岗位。
select last_name,job_id from employees
where job_id not in('IT_PROG','ST_CLERK','SA_REP');

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值