FROM语句

FROM子句用于指定SQL语句的执行对象,它定义了查询的数据来源。

FROM子句的基本语法为:

SELECT column1, column2
FROM table_name;

FROM子句支持的执行对象有:

  1. 表:从表中查询数据。

  2. 视图:从视图中查询数据。

  3. 子查询:将子查询的结果作为一张表,可以在外层查询的FROM子句中使用。

  4. 连接:指定两个或两个以上表,并定义连接条件,来创建连接结果集。支持内连接、外连接和交叉连接。

  5. decided表表达式:决定表函数可以返回多行结果,这些结果在FROM子句中被当作一张表。如TABLE()函数。

  6. with子查询:定义一张临时的虚拟表,可以在FROM子句中引用该表。

  7. 数据库链接:通过数据库链接查询远程数据库中的数据。

示例:

SELECT * FROM employees; -- 从employees表中查询所有列

SELECT * FROM departments; -- 从departments视图中查询所有列

SELECT *
FROM (SELECT employee_id, salary
FROM employees
WHERE salary > 5000) sub; -- 从子查询结果中查询所有列

SELECT e.employee_id, e.first_name, d.department_name
FROM employees e
JOIN departments d
ON (e.department_id = d.department_id); -- 使用连接查询

SELECT *
FROM TABLE(dbms_xplan.display_cursor('sql_id')); -- 使用decided表函数

WITH dept_avg_sal AS
(SELECT department_id, AVG(salary) avg_sal FROM employees GROUP BY department_id)
SELECT * FROM dept_avg_sal; -- 使用with子查询

SELECT *
FROM employees@remote_host; -- 使用数据库链接查询远程表

FROM子句用于定义SQL语句的数据来源,它是查询和DML语句的基础,指定了语句要操作或查询的数据。理解FROM子句可以让我们清楚当前语句的执行对象到底是什么,这对语句的正确性和性能有重要影响。

要熟练使用FROM子句,需要掌握:

  1. 支持的各种类型的数据来源,如表、视图、子查询、连接、表函数、with子查询、数据库链接等。

  2. 这些数据来源之间的区别及各自的特点。如表与视图的区别,内连接与外连接的区别等。

  3. 子查询作为一张表使用的概念,以及子查询的作用和使用场景。

  4. 表函数的概念及常见表函数的使用,如dbms_xplan包中的表函数。

  5. 与连接查询相关的概念,如交叉连接、自然连接的概念和三种主要连接的语法。

  6. 数据库链接的概念及其使用场景。

FROM子句在SQL语句中起着举足轻重的作用,但由于其简单的语法,很容易被忽视。要真正掌握FROM子句,需要对各种类型的数据来源有深入理解,并在实践中大量使用,积累丰富的经验。熟练运用FROM子句,可以写出高效和准确的SQL语句,满足各种复杂的业务需求。它是开发人员和DBA必备的技能之一。

posted @ 2023-07-14 15:57  BBBone  阅读(146)  评论(0编辑  收藏  举报