《Oracle SQL疑难解析》——1.1 从表中查询数据

简介:

本节书摘来自异步社区出版社《Oracle SQL疑难解析》一书中的第1章,第1.1节,作者: 【美】Grant Allen , Bob Bryla , Darl Kuhn,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 从表中查询数据

Oracle SQL疑难解析

1.1.1 要解决的问题

如何从一个表中查询特定行和列的数据。

1.1.2 解决方法

用包含WHERE子句的SELECT语句。下面的SELECT 语句可以从数据库表中查询符合条件的行的列值:

select employee_id, first_name, last_name, hire_date, salary
from hr.employees
where department_id = 50
 and salary < 7500;

上述SELECT 语句从Oracle 数据库自带的HR样本SCHEMA的EMPLOYEE表中返回了45行,这里列出前10行:

----------- ----------  -----------  ---------  ------
    198 Donald    OConnell    21-JUN-99  2600
    199 Douglas  Grant    13-JAN-00    2600
    123 Shanta    Vollman    10-OCT-97    6500
    124 Kevin    Mourgos    16-NOV-99  5800
    125 Julia    Nayer    16-JUL-97  3200
    126 Irene    Mikkilineni  28-SEP-98  2700
    127 James    Landry    14-JAN-99  2400
    128 Steven    Markle    08-MAR-00    2200
    129 Laura    Bissot    20-AUG-97    3300
    130 Mozhe    Atkinson    30-OCT-97    2800
…

1.1.3 数据库如何工作

我们用SELECT语句来帮助你理解(或帮助你回忆)组成一个查询语句的基本元素。语句的第一行显式地声明我们希望在结果中包含的5个字段:

select employee_id, first_name, last_name, hire_date, salary
下一行是FROM子句,指出我们要从哪个表中取得字段数据:

from hr.employees
在这个例子中,我们用了完全对象命名(two-part object naming)方法,不仅用了表名EMPLOYEES,还指出了表所属的SCHEMA:HR。这就显式地把我们要查询的EMPLOYEES表与任何其他SCHEMA中可能存在的同名表区分开来,也可以避免这样的错误:现在使用的用户SCHEMA下也有EMPLOYEE表,如果不显式地指明SCHEME,那么EMPLOYEE表指的就是当前用户SCHEMA下的表。

下面列出WHERE 子句,下面的子句表明必须两个条件都满足的行才能选中:

where department_id = 50
 and salary < 7500

只有EMPLOYEES表两个条件都满足的行才能选中,“AND”的意思是同时满足,单单满足一个条件是不能选中的。如果用非技术语言来描述,就是“员工所在的部门的ID必须是50,同时本人的工资必须低于7500”。

另外的布尔操作符是OR和NOT,它们都遵循通用的布尔优先级规则,使用圆括号可以显式改变优先级顺序。我们用上面的例子来展示如何组合使用这些操作符:

select employee_id, first_name, last_name, hire_date, salary
from hr.employees
where department_id = 50
 and (salary < 2500 or salary > 7500);

这个查询语句跟前面的例子一样,也是查找5个字段,但这一次,查找出的记录是部门ID为50、薪水小于2500或大于7500的员工:

EMPLOYEE_ID  FIRST_NAME  LAST_NAME  HIRE_DATE  SALARY
120      Matthew    Weiss    18/JUL/96  8000
121      Adam      Fripp    10/APR/97    8200
122      Payam    Kaufling    01/MAY/95    7900
127      James    Landry    14/JAN/99  2400
128      Steven    Markle    08/MAR/00    2200
132      TJ      Olson    10/APR/99    2100
135      Ki      Gee      12/DEC/99  2400
136      Hazel    Philtanker  06/FEB/00    2200

这次在HR SCHEMA中符合条件的记录只有8条。

相关文章
|
2天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
6天前
|
Oracle 安全 关系型数据库
Oracle数据守卫(DG):数据的“守护者”与“时光机”
【4月更文挑战第19天】Oracle Data Guard保障数据安全,通过实时维护备库实现故障切换,保证业务连续性。它使用日志传输和应用保持数据同步,如同“时光机”,借助闪回技术能恢复误操作数据。此外,它还提供数据压缩、加密和故障转移等功能,提升数据库安全性与性能。作为数据管理员,理解并善用Data Guard是确保企业数据安全的关键。
|
6天前
|
存储 NoSQL Oracle
Oracle 12c的内存列存储:数据的“闪电侠”
【4月更文挑战第19天】Oracle 12c的内存列存储以超高速度革新数据处理,结合列存储与内存技术,实现快速查询与压缩。它支持向量化查询和并行处理,提升效率,但需合理配置以平衡系统资源。作为数据管理员,应善用此功能,适应业务需求和技术发展。
|
6天前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
6天前
|
存储 Oracle 数据管理
Oracle 12c的自动数据优化(ADO)与热图:数据管理的“瘦身”与“透视”艺术
【4月更文挑战第19天】Oracle 12c的ADO和热图技术革新数据管理。ADO智能清理无用数据,优化存储,提升查询速度,实现数据&quot;瘦身&quot;;热图则以直观的视觉表示展示数据分布和状态,助力识别性能瓶颈,犹如数据的&quot;透视&quot;工具。这两项技术结合,强化数据管理,为企业业务发展保驾护航。
|
6天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
6天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
SQL Oracle 关系型数据库
oracle用SQL Plus输入命令为什么只显示2
oracle用SQL Plus输入命令为什么只显示2
464 0
oracle用SQL Plus输入命令为什么只显示2
|
SQL Oracle 关系型数据库

推荐镜像

更多