2.限制和排序数据
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 Sept. 2008 Confidential
2.6 ORDER BY 子句
使用 ORDER BY 子句对行排序 – ASC: 升序,默认值 – DESC: 降序 • ORDER BY 子句出现在SELECT语句的最后
•
SQL> SELECT ename, job, deptno, hiredate FROM emp ORDER BY hiredate; ENAME JOB DEPTNO HIREDATE ---------- --------- --------- --------SMITH CLERK 20 17-DEC-80 ALLEN SALESMAN 30 20-FEB-81 ... 14 rows selected.
3 Sept. 2008 Confidential
2.1 限定被选择的数据行(续)
使用WHERE子句限定返回的数据行.
SELECT FROM [WHERE * | {[DISTINCT] column [alias], ...} table condition(s)];
•
WHERE子句紧跟在FROM之后
查找条件可以包含字符串和数字
– % 表示零或任意更多的字符 – _ 代表一个字符
SQL> SELECT FROM WHERE ename emp ename LIKE 'S%';
3 Sept. 2008 Confidential
2.4.3 使用 LIKE 运算符(续)
•
使用部分匹配查找功能
SQL> SELECT FROM WHERE ENAME ---------MARTIN JAMES WARD ename emp ename LIKE '_A%';
2.4.5 练习
1、查询emp表,显示薪水在1500到3000之间,工作类别 以’M’开头的雇员信息 2、查询emp表,显示佣金为空的并且部门号为20或30的雇 员信息。
3 Sept. 2008 Confidential
2.5 逻辑运算符
含义 如果两部分条件都为真则返回真值 两部分条件中的任何一个为真则返回真 值 NOT 如果条件为假则返回真值
3 Sept. 2008 Confidential
2.4.4 使用空值运算符
•
使用 IS NULL 运算符来判定值是否为空。
ename, mgr emp mgr IS NULL;
SQL> SELECT FROM WHERE
ENAME MGR ---------- --------KING
3 Sept. 2008 Confidential
JOB
PRESIDENT MANAGER MANAGER MANAGER
...
DEPTNO
10 30 10 20
“…检索所有
在10部门的员工"
EMP
EMPNO ENAME JHale Waihona Puke BaiduB ... DEPTNO 10 10 10
7839 KING PRESIDENT 7782 CLARK MANAGER 7934 MILLER CLERK
3 Sept. 2008 Confidential
ENAME ---------ADAMS MILLER
3 Sept. 2008 Confidential
2.5.2 使用 OR 运算符
OR 只需要两个条件中的一个为真就能返回真值
SQL> SELECT FROM WHERE OR empno, ename, job, sal emp sal>=1100 job='CLERK';
3 Sept. 2008 Confidential
2.2 比较操作符(续)
SQL> SELECT ename, sal, comm FROM emp WHERE sal<=comm;
ENAME SAL COMM ---------- --------- --------MARTIN 1250 1400
ENAME ---------KING MARTIN ALLEN TURNER WARD
JOB SAL --------- --------PRESIDENT 5000 SALESMAN 1250 SALESMAN 1600 SALESMAN 1500 SALESMAN 1250
3 Sept. 2008 Confidential
运算符 AND OR
3 Sept. 2008 Confidential
2.5.1 使用 AND 运算符
AND 要求两个条件都为真,结果才为真
SQL> SELECT FROM WHERE AND EMPNO --------7876 7934 empno, ename, job, sal emp sal >= 1100 job='CLERK'; JOB SAL --------- --------CLERK 1100 CLERK 1300
3 Sept. 2008 Confidential
2.6 ORDER BY 子句(续)
SQL> SELECT empno, ename, sal*12 annsal FROM emp ORDER BY annsal; EMPNO ENAME ANNSAL --------- ---------- --------7369 SMITH 9600 7900 JAMES 11400 7876 ADAMS 13200 7654 MARTIN 15000 7521 WARD 15000 7934 MILLER 15600 7844 TURNER 18000 ... 14 rows selected.
CLERK 950
2.5.3 使用 NOT 运算符
SQL> SELECT ename, job FROM emp WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
ENAME ---------KING MARTIN ALLEN TURNER WARD
JOB --------PRESIDENT SALESMAN SALESMAN SALESMAN SALESMAN
3 Sept. 2008 Confidential
2.2 比较操作符(续)
SQL> SELECT ename, sal, hiredate FROM emp WHERE hiredate > '10-9月-07' and sal >1000;
ENAME SAL ---------- --------MARTIN 1250
EMPNO ENAME --------- ---------7839 KING 7698 BLAKE 7782 CLARK 7566 JONES 7654 MARTIN ... 7900 JAMES ... 14 rows selected.
3 Sept. 2008 Confidential
JOB SAL --------- --------PRESIDENT 5000 MANAGER 2850 MANAGER 2450 MANAGER 2975 SALESMAN 1250
ename, sal emp sal BETWEEN 1000 AND 1500;
SQL> SELECT FROM WHERE
ENAME SAL ---------- --------MARTIN 1250 TURNER 1500 WARD 1250 ADAMS 1100 MILLER 1300
下限
目标:
本章旨在向学员介绍如何限制 和排序数据 ,通过本课的学习 ,学员应该掌握如下知识: 1)掌握WHERE子句中条件表达 式的使用方法 2)掌握排序的基本规则
3 Sept. 2008 Confidential
2.1 限定被选择的数据行
EMP
EMPNO ENAME
7839 7698 7782 7566 ... KING BLAKE CLARK JONES
3 Sept. 2008 Confidential
2.1 限定被选择的数据行(续)
SQL> SELECT ename, job, deptno FROM emp WHERE job='CLERK';
ENAME ---------JAMES SMITH ADAMS MILLER
JOB DEPTNO --------- --------CLERK 30 CLERK 20 CLERK 20 CLERK 10
ENAME SAL MGR ---------- --------- --------FORD 3000 7566 SMITH 800 7902 SCOTT 3000 7566 ADAMS 1100 7788
3 Sept. 2008 Confidential
2.4.3 使用 LIKE 运算符
使用LIKE来执行字符串通配符查找。
2.4 其它比较运算符
运算符 BETWEEN ...AND... IN(list) 含义 两个值之间 (包含)
和多个值任何一个匹配
LIKE
IS NULL
字形匹配
是空值
3 Sept. 2008 Confidential
2.4.1 使用 BETWEEN 运算符
•
使用BETWEEN运算符来显示在某个范围内的数据行
3 Sept. 2008 Confidential
2.5.4 运算符优先规则
计算顺序
1 2 3
运算符
所有比较运算符 NOT AND
4
•
OR
使用括号可以改变运算符的优先原则
3 Sept. 2008 Confidential
2.5.4 运算符优先规则(续)
SQL> SELECT FROM WHERE OR AND ename, job, sal emp job = 'SALESMAN' job = 'PRESIDENT' sal > 1500;
2.5.4 运算符优先规则(续)
使用括号强制改变优先权
SQL> SELECT FROM WHERE OR AND ename, job, sal emp (job='SALESMAN' job='PRESIDENT') sal>1500;
ENAME ---------KING ALLEN
JOB SAL --------- --------PRESIDENT 5000 SALESMAN 1600
上限
3 Sept. 2008 Confidential
2.4.2 使用 IN 运算符
•
使用IN运算符来测试表中是否包含列表中的一系列值。
empno, ename, sal, mgr emp mgr IN (7902, 7566, 7788);
SQL> SELECT FROM WHERE
EMPNO --------7902 7369 7788 7876
• • • •
字符串和日期型数值都要用单引号引起来 字符型数值是区分大小写的 日期型数值是区分日期表达形式的 默认的日期形式是DD-MON-RR
3 Sept. 2008 Confidential
2.2 比较操作符
操作符
= > >= < <= <>或!=
含义
等于 大于 大于或等于 小于 小于或等于 不等于
hiredate
---------
18-9月-07
3 Sept. 2008 Confidential
2.3 比较操作符练习
1、查询emp表,显示薪水大于2000,并且工作类别是 MANAGER的雇员信息。 2、查询emp表,显示年年薪大于30000,工作类别不是 MANAGER的雇员信息。
3 Sept. 2008 Confidential
3 Sept. 2008 Confidential
2.6 ORDER BY 子句(续)
SQL> SELECT ename, job, deptno, hiredate FROM emp ORDER BY hiredate DESC; ENAME JOB DEPTNO HIREDATE ---------- --------- --------- --------ADAMS CLERK 20 12-JAN-83 SCOTT ANALYST 20 09-DEC-82 MILLER CLERK 10 23-JAN-82 JAMES CLERK 30 03-DEC-81 FORD ANALYST 20 03-DEC-81 KING PRESIDENT 10 17-NOV-81 MARTIN SALESMAN 30 28-SEP-81 ... 14 rows selected.