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

    xiaoxiao2024-03-07  145

    本节书摘来自异步社区出版社《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条。

    相关资源:Oracle SQL疑难解析
    最新回复(0)