第2章 数据查询-条件查询和排序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
示例:从employees表中检索满足下列两个条件的行
薪资为10000或更高 职位包含字符串‚MAN‛
示例:从Employees表中检索满足下列两个条件之一的行
薪资为10000或更高 职位包含字符串‚MAN‛
NOT 运算符 示例:查询职务不是IT_PROG、ST_CLERK和SA_REP 的 所有雇员的姓名和职务。
1.2 SQL操作符
SQL 操作符
操作符 LIKE
说明 与某个字符模式匹配
IN
BETWEEN …AND…
与值列表的任一值匹配
介于两个值之间(包含这两个值)
用IN测试指定值集
使用IN操作符来检索其列值在某个列表中的行 示例:返回雇员表中由编号100/101和201管辖的雇员信息
IN运算符可以用于任何的数据类型 ()中指定的数值顺序是可以任意指定的
Βιβλιοθήκη Baidu
上机练习
第2课练习
SELECT last_name,job_id,department_id,hire_date FROM employees ORDER BY hire_date;
示例:使用DESC关键字。 对从employees表中检索出的数据首先根据hire_date进行 升序排序,然后根据last_name列的值进行降序排序
问题
需求:
查询部门编号为90的部门的员工信息
1 使用WHERE子句限定返回行
WHERE子句的作用
customers表
只想查看customer_id不等于2的顾客信息
使用WHERE子句限定返回行
限制选定的行
使用WHERE子句可以限制返回的行
WHERE子句在FROM子句的后面,包含一个必要条件
语法说明
……Where hire_date=’01-JAN-95’
薪资过6000的员工
……where salary>=6000
Last_name是‘Smith’的员工
……where last_name=‘Smith’
示例:在WHERE子句中使用(<=)操作符从employees 表中检索薪资在3000及以下的员工信息
SELECT * FROM employees ORDER BY hire_date ASC,last_name DESC;
按照列别名或数字位置排序
替代变量
对同一个查询,每次 运行时为查询条件提 供一个不同的值
替代变量
使用&替代变量可临时存储值
可以在以下地方使用替代变量
WHERE条件 ORDER BY 子句 列表达式 表名 整个SELECT语句
SELECT * FROM customers WHERE customer_id > ANY (2,3,4);
示例:使用ALL操作符从customers表中检索customer_id列 比2、3和4都大的行
SELECT * FROM customers WHERE customer_id > ALL (2,3,4);
LIKE中的ESCAPE指定转义符
IS NULL条件
使用IS NULL可以测试空值
上例:查询没有经理管辖的雇员的姓名和经理id
SELECT last_name,manager_id FROM employees WHERE manager_id=null
X
查询无权获得佣金的所有雇员的信息 (commission_pct为空值)
注意:IN 运算符实质上相当于转化为一系列等值比较 的OR运算,因此性能上并不会提升,只能达到简化逻辑 的目的
BETWEEN检索指定范围内的值
使用BETWEEN操作符来检索值包含着指定区间内的行 示例:查询薪资在2500到3500之前的雇员信息
对字符串也可以使用BETEWEE
用LIKE对字符串进行模式匹配
注意:在JDBC代码中调用的SQL语句,不能使用替代变 量
SELECT employee_id,last_name,salary,department_id FROM employees WHERE employee_id=&employee_num
替代变量指定字符串和日期
SELECT last_name,department_id,salary*12 FROM employees WHERE job_id=‘&job_title’
使用 LIKE 运算符可执行通配符搜索,查找仅限于搜索字符串 值 搜索条件可包含文字字符或数字:
% 表示零个或多个字符 _ 表示一个字符
示例:使用LIKE操作符,查找first_name第一个字母为S的雇员:
LIKE可以是某些BETWEEN比较的快捷实现 比如:查询1995年进入公司的雇员信息
?
这点是利用了‚在Oracle中,日期是用字符串表示的‛ 这个特点
语句 说明
WHERE condition
将查询对象限制在满足一定条件的行 由列名、表达式、常数和比较运算符组成
Where中的字符和日期
字符串和日期应放在单引号内 字符串区分大小写,日期区分格式 默认的日期格式是DD-MON-RR
示例:
1.1条件表达式中的比较运算符
比较值可以使用的比较运算符
操作符 = <> 或!= 说明 等于 不等于
NOT与其他运算符一起使用
使用ORDER BY 子句
使用 ORDER BY 子句可对检索结果进行排序
ASC:升序,默认顺序 DESC:降序 ORDER BY子句位于SELECT的最后
使用ORDER BY 子句
示例:使用ORDER BY 对从Employees表中获得的数据根据 入职日期hire_date进行排序
示例:使用(>)号操作符从products表中检索product_id 和name列,满足product_id列大于8
SELECT product_id,name FROM products WHERE product_id>8;
示例:使用ANY操作符从customers表中检索customer_id列 大于2、3或4中任何一行的值
Oracle数据库查询与管理
第2章:条件查询和排序
本章内容
使用WHERE条件限定查询行 使用ORDER BY对查询结果进行排序 使用替换变量& 在查询中使用单行函数
字符串函数 日期桉树 数字函数
本章目标
掌握SELECT语句中的where条件限定 能对查询得到的数据进行排序 能使用单行函数进行定制输出
使用逻辑操作符
逻辑操作符允许使用逻辑条件来限制查询的结果 使得可以在Where子句中使用多个条件
操作符 x AND y x OR y NOT x
说明 当x和y都为ture时,返回true 当x和y中有一个为true时,就返回true 如果x为false,则返回true;如果x为true,则返回false
<
> <= >= ANY ALL LIKE
小于
大于 小于或等于 大于或等于 跟在>、<、>=、<=后面,与一个列表中的任何一个值进行比较 跟在>、<、>=、<=后面,与一个列表中的所有值进行比较 与某个字符模式匹配
IN
BETWEEN
与值列表的任一值匹配
介于两个值之间(包含这两个值)
示例:
95年1月1日入职的员工