《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条。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值