版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、幻灯片1进度表:时间45 minutes30 minutes75 minutes讲演练习总共约束和排序数据Copyright Oracle Corporation, 2001.s.幻灯片2课程目标从数据库取回数据的时候,你可能需要限制所显示的数据行,或者将显示的结果行排序。本课介绍用来完成这些工作的 SQL 语句。目标完成本课后, 您应当能够执行下列操作:用一个查询限制返回的行用一个查询排序返回的行Copyright Oracle Corporation, 2001.s.幻灯片3用选择限制行在幻灯片的例子中,假定你想要显示部门 90 中所有的雇员。只返回DEPARTMENT_ID 列值为 90
2、 的行,这种限制方法基于 SQL 的 WHERE 子句。用选择限制行EMPLOYEES“返回所有在部门90的雇员”Copyright Oracle Corporation, 2001.s.幻灯片4限制选择的行你能够用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个必须满足的条件,WHERE 子句紧跟着 FROM 子句。如果条件是 true,返回满足条件的行。在语法中:WHEREcondition限制查询满足条件的行由列名、表达式、常数和比较操作组成WHERE 子句能够比较列值、文字值、算术表达式或者函数,WHERE 子句由三个元素组成:列名比较条件列名、常量或值列表限制选择
3、的行用 WHERE 子句限制返回的行WHERE 子句跟着 FROM 子句Copyright Oracle Corporation, 2001.s.SELECT*|DISTINCT column|expresalias,.FROMtableWHEREcondition(s);幻灯片5使用 WHERE 子句在例子中,SELECT 语句取回所有雇员的 name,job ID 和 department 号,这些雇员的 department_id 是 90。使用 WHERE 子句Copyright Oracle Corporation, 2001.s.SELECT employee_id, last_n
4、ame, job_id, department_id FROMemployeesWHERE department_id = 90;幻灯片6字符串和日期在 WHERE 子句中字符串和日期必须包含在单引号 ( ) 中。但是,数字常数不应该包含在单引号中。所有的字符搜索是大小写敏感的。在下面的例子中,没有行返回,因为EMPLOYEES 表的所有名字都是大小写混合的:SELECT last_name, job_id, department_id FROMemployeesWHERE last_name = WHALEN;Oracle 数据库以数字格式日期,表示为:世纪、年、月、日、小时、分和秒。默认的
5、日期显示是 DD-MON-RR。注:改变默认的日期格式的方法在后面的课程中介绍。教师注释一些学生可能会问,怎样覆盖大小写敏感,在后面的课程中,函数,例如,UPPER 和 LOWER 来覆盖大小写敏感。介绍,用单行字符串和日期字符串和日期的值放在单引号中字符值区分大小写,日期值是格式敏感的日期的默认格式是 DD-MON-RR.Copyright Oracle Corporation, 2001.s.SELECT last_name, job_id, department_id FROMemployeesWHERE last_name =Whalen;幻灯片7比较条件比较条件被用于一个表达式与一个
6、值或与另一个表达式的比较。他们以下面的格式被用于 WHERE 子句中:语法.WHEREexpr operator value举例.WHEREWHERE WHEREhire_date=01-JAN-95salary=6000 last_name=Smith别名不能用在 WHERE 子句中。注:符号 != 和 = 也能够表示不等于 条件。比较条件Copyright Oracle Corporation, 2001.s.运算含义=等于大于=大于等于小于=小于等于不等于幻灯片8使用比较条件在例子中,SELECT 从 EMPLOYEES 表语句取回 last name 和 salary,在这里这些雇员的
7、薪水小于等于 3000。注意,有一个直接的值 3000 提供给 WHERE 子句。该直接值 3000 与 EMPLOYEES 表中的 SALARY 列的薪水值进行比较。使用比较条件Copyright Oracle Corporation, 2001.s.SELECT last_name, salary FROMemployeesWHERE salary= 下限) AND (a =10000 job_id LIKE %MAN%;幻灯片17OR 操作在例子中,两个条件之一为真的那些或者收入大于等于$10,000 的雇员都被选择。都被选择,因此,任何 job ID 中包含 MANOR 真值表下面的表
8、显示了用 OR 组合两个表达式的结果:教师注释示范:2_or.sql目的:举例说明 OR 运算符的使用。ORTRUEFALSENULLTRUETRUETRUETRUEFALSETRUEFALSENULLNULLTRUENULLNULL使用 OR 操作OR 操作要求两者之一为真即可Copyright Oracle Corporation, 2001.s.SELECT employee_id, last_name, job_id, salary FROMemployeesWHERE ORsalary = 10000 job_id LIKE %MAN%;幻灯片18NOT 操作幻灯片中的例子显示那些工
9、作岗位不是 IT_PROG、ST_CLERK 或 SA_REP 的雇员的名字和工作岗位。NOT 真值表下面的表显示了应用 NOT 运算符到一个条件的结果:注:NOT 运算符也可以用于另一个 SQL 运算符,例如,BETN、LIKE、和 NULL。.WHERE WHERE WHEREWHEREjob_idsalaryNOTNOTIN (AC_ACCOUNT, AD_VP)BETLIKEN 10000 AND 15000 %A%NOT NULLlast_name NOTcommis_pct ISNOTTRUEFALSENULLFALSETRUENULL使用 NOT 操作Copyright Orac
10、le Corporation, 2001.s.SELECT last_name, job_id FROMemployeesWHEREjob_idNOT IN (IT_PROG, ST_CLERK, SA_REP);幻灯片19优先规则优先规则定义表达式求值和计算的顺序,表中列出了默认的优先顺序。你可以用圆括号括住你想要先计算的表达式来覆盖默认的优先顺序。优先规则使用圆括号改变优先规则Copyright Oracle Corporation, 2001.s.求值顺序1算术运算2连字操作3比较操作4IS NOT NULL, LIKE, NOT IN5NOT BETN6NOT 逻辑条件7AND 逻辑条
11、件8OR 逻辑条件幻灯片20AND 操作优先的例子在幻灯片的例子中,有两个条件:第一个条件是 job_id 是 AD_PRES 并且薪水高于 15,000。第二个条件是 job_id 是 SA_REP。因此,该 SELECT 语句读作: “选择符合下面条件的行,雇员是董事长 (雇员是销售代表。”) ,并且收入超过$15,000,或教师注释演示:2_sal1.sql目的:举例说明优先规则。优先规则Copyright Oracle Corporation, 2001.s.SELECT last_name, job_id, salary FROMemployeesWHERE job_id = SA_
12、REP ORjob_id = AD_PRES ANDsalary 15000;幻灯片21使用圆括号在上面的例子中有两个条件:第一个条件是 job_id 是 AD_PRES 或者 SA_REP第二个条件是薪水高于$15,000。因此,该 SELECT 语句读作: “选择符合下面条件的行,雇员是董事长 (超过$15,000。”) 或者销售代表,并且收入教师注释演示:2_sal2.sql目的:举例说明优先规则。优先规则使用圆括号强制优先权Copyright Oracle Corporation, 2001.s.SELECT last_name, job_id, salary FROMemployee
13、sWHERE (job_id = SA_REP ORjob_id = AD_PRES) ANDsalary 15000;幻灯片22ORDER BY 子句在一个不明确的查询结果中排序返回的行。ORDER BY 子句用于分排序。如果使用了 ORDER BY 子句,它必须位于 SQL 语句的最后。你可以指定一个表达式,或者一个别名,作为排序条件。语法SELECT FROM WHERE ORDER在语法中:expr tablecondition(s)BY column, expr ASC|DESC;指定排序显示返回的行以升序排序行 (这是默认排序)以降序排序行ORDER BY ASCDESC如果未使用
14、 ORDER BY 子句,排序次序就未定义,并且 Oracle 服务器可能对于相同查询的两次执行取回行的顺序不同。ORDER BY 子句以指定的顺序显示返回的行。教师注释让学生知道 ORDER BY 子句在查询完成后执行,除非使用了 FOR UPDATE 子句,ORDER BY 子句应放在最后。ORDER BY 子句用 ORDER BY 子句排序行ASC: 升序排序,默认DESC: 降序排序ORDER BY 子句在 SELECT 语句的最后Copyright Oracle Corporation, 2001.s.SELECTlast_name, job_id, department_id, h
15、ire_date FROMemployees;ORDER BY hire date幻灯片23数据的默认排序默认的排序顺序是升序:对于数字值,小的只值对于日期,早的日期面显示例如,1999。面显示例如,01-JAN-92 在 01-JAN-95 。对于字符值,依字母顺序显示例如,A 第一,Z 最后。对于空值,升序排序时显示在最后,降序排序时显示在最前面。反转默认排序为了显示倒序排序的行,在 ORDER BY 子句的列名后面指定 DESC 关键字。幻灯片中的例子按照雇员的受雇日期从近到远排序。教师注释让学生知道,也能够以 SELECT 列表中的列号排序。下面的例子用 salary 以逆序排序输出:
16、SELECTFROM ORDER BYlast_name, salary employees2 DESC;降序排序Copyright Oracle Corporation, 2001.s.SELECTlast_name, job_id, department_id, hire_date FROMemployeesORDER BY hire_dateDESC;幻灯片24用列别名排序能够在 ORDER BY 子句中使用列别名。幻灯片的例子用年薪排序数据。教师注释在,SELECT 语句的执行顺序如下:FROM 子句 WHERE 子句 SELECT 子句 ORDER BY 子句用列别名排序Copyri
17、ght Oracle Corporation, 2001.s.SELECT employee_id, last_name, salary*12 FROMemployeesORDER BYannsal;annsal幻灯片25用多列排序你可以用多列排序查询结果。排序的限制是所给表中的列数。在 ORDER BY 子句中,多个指定的列名之间用逗号分开。如果你想要倒排序一个列,在该列名后面指定 DESC。你也可以用没有包括在 SELECT 子句中的列排序。例子显示所有雇员的名字和薪水。先用部门号顺序排序结果,再用薪水逆序排序。SELECTFROMlast_name, salaryemployeesORD
18、ER BY department_id, salary DESC;教师注释以升叙排序显示 DEPARTMENT_ID 列,同时以降序排序显示 SALARY 列。多列排序ORDER BY 列表的顺序就是排序的顺序你可以排序一个不在 SELECT 列表中的列Copyright Oracle Corporation, 2001.s.SELECT last_name, department_id, salary FROMemployeesORDER BY department_id, salary DESC;幻灯片26小结在本可中,你应该已经学会关于限制和排序 SELECT 语句返回的行。你也应该已经
19、学会实现各种运算和使用条件。小结在本课中, 您应该已经学会如何:使用 WHERE 子句限制输出行使用比较条件使用 BETN, IN, LIKE, 和 NULL 条件应用逻辑 AND, OR, 和 NOT 操作使用 ORDER BY 子句排序输出的行Copyright Oracle Corporation, 2001.s.SELECT*|DISTINCT column|expresalias,.FROMtableWHEREcondition(s)ORDER BY column, expr, alias ASC|DESC;幻灯片27练习 2概览本章的作业包括使用 WHERE 子句和 ORDER B
20、Y 子句的多种练习。练习 2 概览本章练习包括下面的:选择数据并且改变行显示的顺序用 WHERE 子句限制行用 ORDER BY 子句排序行Copyright Oracle Corporation, 2001.s.幻灯片 28练习 21.创建一个查询,显示收入超过 $12,000 的雇员的名字和薪水。将件 lab2_1.sql 中,运行该查询。SQL语句存到文SELECT last_name, salary FROM employeesWHERE salary 12000;2.创建一个查询,显示雇员号为 176 的雇员的名字和部门号。SELECT last_name, department_i
21、d FROM employeesWHERE employee_id = 176;3.修改 lab2_1.sql 文件,显示所有薪水不在 5000 和字和薪水。将 SQL 语句存到文件 lab2_3.sql 中。12000之间的雇员的名SELECT last_name, salaryFROM employeesWHERE salary NOT BETN 5000 AND 12000;4.显示受雇日期在年 月日 和年 5 月 1 日 之间的雇员的名字、岗位和受雇日期。按受雇日期顺序排序查询结果。SELECT last_name, job_id, hire_date FROM employeesWH
22、ERE hire_date BETN 20-Feb-1998 AND 01-May-1998ORDER BY hire_date;5.显示所有在部门 20 和 50 中的雇员的名字和部门号,并以名字按字母顺序排序。SELECT last_name, department_id FROM employeesWHERE department_id IN (20, 50)ORDER BY last_name;6.修改 lab2_3.sql 列出收入在 $5,000 和 $12,000 之间,并且在部门 20 或50 工作的雇员的名字和薪水。将列标题分别显示为 Employee 和 Monthly S
23、alary,将 lab2_3.sql 保存为 lab2_6.sql。运行 lab2_6.sql 中的语句。SELECT last_name Employee, salary Monthly Salary FROM employeesWHERE salary BETN 5000 AND 12000AND department_id IN (20, 50);7.显示每一个在 1994 年受雇的雇员的名字和受雇日期。SELECT last_name, hire_dateFROM employeesWHERE hire_daIKE %94;8.显示所有没有主管经理的雇员的名字和工作岗位。SELECT last_name, job_id FROM emplo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光伏储能合同能源管理模式(emc)测算表
- 广西建设工程专用合同条款
- 海上货运代理合同 答辩状
- 合同到期搬离通知书
- 大班数学认识半点课件
- 专项8 非连续性文本阅读- 2022-2023学年五年级语文下册期末专项练习
- 2024普通软件产品销售合同
- 2024公司借款保证合同范本
- 深圳大学《印度文化遗产赏析》2021-2022学年第一学期期末试卷
- 菜苗栽种合同(2篇)
- 《临床决策分析》课件.ppt
- 家风家训PPT课件
- 泪道冲洗PPT学习教案
- 部编版六年级语文上册词语表(带拼音)-六上册词语表连拼音
- 浅谈校园影视在学校教育中的作用
- 无公害农产品查询
- 试剂、试药、试液的管理规程
- 研究生课程应用电化学(课堂PPT)
- 通信综合网管技术规格书doc
- 六宫数独可直接打印共192题
- 班会:如何克服浮躁心理PPT优秀课件
评论
0/150
提交评论