限制数据和对数据排序

来源:互联网 发布:java list 泛型写法 编辑:程序博客网 时间:2024/06/05 12:42

2
1

programming
1
Oracle SQL开发基础
2
2

programming
课程结构
内容

课时(H)

第一章 Oracle数据库基础

2.5

第二章 编写简单的查询语句

1.5

第三章 限制数据和对数据排序

2

第四章 单行函数

4

第五章 多表查询

4

第六章 分组函数

3

第七章 子查询

4

第八章 数据操作与事务控制

4

第九章 表和约束

4

第十章 其他数据库对象

4

 


2
3

programming
第三章 限制数据和对数据排序

目标:

本章旨在向学员介绍限制数据的
应用,通过本课的学习,学员应
该掌握如下知识:

1) 运算符的使用

2)Order by的使用

时间:学时
教学方法:
2
4

programming
第三章 限制数据和对数据排序
限制数据和对数据排序:

3.1WHERE子句的使用

3.2ORDER BY子句的使用


2
5

programming
3.1WHERE子句的使用 1/2
查询
20
部门的所有员工
查询20部门的所有员工


 

 

 

 

 

 

EMP
EMP

EMPNO ENAME SAL ... DEPTNO
7839 KING 5100 10
7369 SMITH 800 20
7499 ALLEN 1600 30
7782 CLARK 2450 10
...
SELECT *

FROM emp

WHERE deptno= 20;

 

 

 

 

 

EMP
EMP

 EMPNO ENAME SAL ... DEPTNO
7369 SMITH 800 20
7566 JONES 2975 20
7902 FORD 3000 20
带有限制条件的查询
2
6

programming
3.1WHERE子句的使用 2/2

.使用WHERE子句限定返回的记录
.WHERE子句在 FROM 子句后
.语法:


 


.查询公司月薪高于12000的员工信息。


SELECT *|{[DISTINCT] 列名|表达式 [别名][,...]}

FROM 表名

[WHERE 条件];

SELECT employee_id, last_name, salary

FROM employees

WHERE salary >= 12000;


2
7

programming
3.1.1比较运算符的使用

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

programming
3.1.2字符型与日期型大小写敏感的实例 1/2

.使用比较运算符需要遵循以下原则:
– 字符及日期类型需要在两端用单引号;
– 字符类型大小写敏感;
– 日期类型格式敏感,默认格式’DD-MON-RR’;


.查询在1999年1月1日以后进入公司的雇员信息。


SELECT last_name, hire_date

FROM employees

WHERE hire_date >= '01-1月-1999';


2
9

programming
3.1.2字符型与日期型大小写敏感的实例 1/2

.转换英文环境
–查询在1999年1月1日以后进入公司的雇员信息(英文环境)

 


SELECT last_name, hire_date
FROM employees
WHERE hire_date >= '01-JAN-1999';
ALTER SESSION SET NLS_LANGUAGE='AMERICAN';
2
10

programming
3.1.3特殊比较运算符

运算符
IN( 列表)

含义

确定集合
确定范围,在两个值之间 (包含比较值)
IS NULL
LIKE

字符串匹配查询

判断空值
BETWEEN...AND...


2
11

programming
3.1.4BETWEEN…AND…运算符的使用
.查询月薪在4200元到6000公司的雇员。


SELECT employee_id, last_name, salary
FROM employees
WHERE salary BETWEEN 4200 AND 6000;
2
12

programming
3.1.5IN运算符的使用

.IN运算符主要对指定的值进行比较查看的时候使用。
.查询部门编号为10、90或110的雇员信息。


 
SELECT employee_id, last_name, salary, department_id

FROM employees

WHERE department_id IN (10, 90, 110);


2
13

programming
SELECT employee_id, last_name, salary

FROM employees

WHERE last_name LIKE 'S%';

3.1.6LIKE运算符的使用 1/3
.使用LIKE运算符完成模糊查询功能
.使用通配符来代替未知的信息。常用通配符有 %和_ 。
– %可以代替任意长度字符(包括长度为0)。
– _可以代替一个字符。


.查询last_name首字母是S的雇员信息。


 

 


2
14

programming
.%与_组合使用
.查询last_name第二个字母是b的雇员信息。


 

3.1.6LIKE运算符的使用 2/3


 

SELECT employee_id, last_name, salary

FROM employees

WHERE last_name LIKE '_b%';


2
15

programming
.使用ESCAPE 标识符来查找带特殊符号的字符号。
.查询JOB_ID以“FI_”开头的雇员信息。


 

3.1.6LIKE运算符的使用 3/3
SELECT employee_id, last_name, job_id, salary

FROM employees

WHERE job_id LIKE 'FI\_%' ESCAPE '\';


2
16

programming
SELECT employee_id, last_name, salary, department_id

FROM employees

WHERE department_id IS NULL;

3.1.7IS NULL运算符的使用
.查询包含空值的记录
.未分配部门的雇员信息。


 

 


2
17

programming
3.1.8逻辑运算符的使用 1/6
运算符
OR

含义

如果组合的条件之一是TRUE,返回TRUE。NULL和
TRUE组合,返回TRUE。
如果组合的条件都是TRUE,返回TRUE。NULL和
FALSE组合,返回FALSE。
NOT

如果下面的条件是FALSE,返回TRUE。

AND
2
18

programming
3.1.8逻辑运算符的使用 2/6

.查询月薪在4200元到6000元公司的雇员。


 
SELECT employee_id, last_name, salary

FROM employees

WHERE salary>=4200 AND salary<=6000;


2
19

programming
3.1.8逻辑运算符的使用 3/6

.月薪大于10000元,并且在60和90号部门工作的员工。


SELECT last_name, salary, department_id

FROM employees

WHERE salary>10000 AND department_id in (60,90);


2
20

programming
3.1.8逻辑运算符的使用 4/6
.月薪大于10000元,或者在60和90号部门工作的员工。


SELECT last_name, salary, department_id

FROM employees

WHERE salary>10000 OR department_id in (60,90);


2
21

programming
3.1.8逻辑运算符的使用 5/6

.查找职位不是IT_PROG,ST_CLERK,FI_ACCOUNT的员工
信息。


SELECT last_name, job_id, salary
FROM employees
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK',
'FI_ACCOUNT');
2
22

programming
3.1.8逻辑运算符的使用 6/6

NOT运算符还可以和BETWEEN…AND、LIKE、IS NULL一起使用。

–...WHERE department_id NOT IN (60, 90);
–... WHERE salary NOT BETWEEN 10000 AND 25000;
–... WHERE last_name NOT LIKE 'D%'
–... WHERE manager_id IS NOT NULL

 



2
23

programming
3.1.9运算符的优先级 1/3
.括号’()’优先于其他操作符。


优先级

1
4
3

2
5

6
7
运算分类

逻辑非

逻辑与

逻辑或

其他比较运算符
数学运算符

通用比较运算符

连接运算符

运算符举例

NOT

AND

OR

IS [NOT] NULL, LIKE, [NOT] BETWEEN, [NOT] IN

*, \, +, -

=, <>, <, >, <=, >=

||


2
24

programming
3.1.9运算符的优先级 2/3

查找职位是FI_ACCOUNT或工资超过16000的职位是AD_VP的员
工。

SELECT last_name, job_id, salary, department_id

FROM employees

WHERE job_id = 'FI_ACCOUNT'

OR job_id = 'AD_VP'

AND salary > 16000;


2
25

programming
3.1.9运算符的优先级 3/3

查找工作超过16000并且职位是FI_ACCOUNT或是AD_VP的员工。

SELECT last_name, job_id, salary, department_id

FROM employees

WHERE (job_id = 'FI_ACCOUNT'

OR job_id = 'AD_VP')

AND salary > 16000;


2
26

programming
第三章 限制数据和对数据排序

限制数据和对数据排序:

3.1WHERE子句的使用

3.2ORDER BY子句的使用


2
27

programming
3.2.1使用ORDER BY子句排序的应用 1/5

.ORDER BY子句后的语法结构如下:


查看公司员工信息,按照员工部门降序排列。

SELECT *|{[DISTINCT] 列名|表达式 [别名][,...]}

FROM 表名

[WHERE 条件]

[ORDER BY {列名|表达式|别名} [ASC|DESC],…];

SELECT last_name, job_id, salary, department_id

FROM employees

ORDER BY department_id DESC;


2
28

programming
3.2.1使用ORDER BY子句排序的应用 2/5

.不同数据类型排序规则(以升序为例)
–数字升序排列小值在前,大值在后。即按照数字大小顺序由
小到大排列。
–日期升序排列相对较早的日期在前,较晚的日期在后。例
如:’01-SEP-06’在’01-SEP-07’前。
–字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;
中文升序按照字典顺序排列。
–空值在升序排列中排在最后,在降序排列中排在最开始。

 



2
29

programming
3.2.1使用ORDER BY子句排序的应用 3/5

.使用列别名排序,多列排序。


查看员工信息,结果按照年薪升序排列。


查看员工信息,结果按照job_id升序排列,月薪按照降序排列。


SELECT last_name, job_id, salary*12 annual, department_id

FROM employees

ORDER BY annual;

SELECT last_name, job_id, salary, department_id

FROM employees

ORDER BY job_id, salary desc;


2
30

programming
3.2.1使用ORDER BY子句排序的应用 4/5

.ORDER BY特殊使用
–ORDER BY子句可以出现在SELECT子句中没有出现过的列。
–ORDER BY子句后的列名,可以用数字来代替。这个数字是
SELECT语句后列的顺序号。

 


查看公司员工信息,按照月薪由高到低排列,而具体的工资数不

显示。

SELECT last_name, job_id, hire_date
FROM employees
ORDER BY salary;
2
31

programming
3.2.1使用ORDER BY子句排序的应用 5/5

.查看员工信息,结果按照按照job_id升序排列,月薪按照降序
排列。


SELECT last_name, job_id, salary, department_id

FROM employees

ORDER BY 2, 3 desc;


2
32

programming
本章小结

.选择表中的部分行
.比较运算符的使用
.特殊比较运算符的使用
.逻辑运算符的使用
.ORDER BY的使用



2
33

programming
练习

1.查询last_name是Chen的员工的信息。

2.查询参加工作时间在1997-7-9之后,并且不从事IT_PROG工作
的员工的信息。

3.查询员工last_name的第三个字母是a的员工的信息。

4.查询除了10、20、110号部门以外的员工的信息。

5.查询部门号为50号员工的信息,先按工资降序排序,再按姓名
升序排序。

6.查询没有上级管理的员工(经理号为空)的信息。

7.查询员工表中工资大于等于4500并且部门为50或者60的员工的
姓名(last_name)、工资、部门号。


2
34

programming
谢谢



原创粉丝点击