具体参考《21天学通Oracle》的第16章 SQL查询
DROP TABLE t_employee; DROP TABLE t_salary; DROP TABLE t_manager; CREATE TABLE t_employee( ID NUMBER(11) NOT NULL, NAME VARCHAR2(20) NOT NULL ); CREATE TABLE t_salary( ID NUMBER(11) NOT NULL, money NUMBER(10) NOT NULL, employee_id NUMBER(11) ); CREATE TABLE t_manager( ID NUMBER(11) NOT NULL, NAME VARCHAR2(20) NOT NULL ); INSERT INTO t_employee VALUES(1,'user1'); INSERT INTO t_salary values(1,100,1); INSERT INTO t_employee VALUES(2,'user2'); INSERT INTO t_salary values(2,200,2); INSERT INTO t_employee VALUES(3,'user3'); INSERT INTO t_salary values(3,300,3); INSERT INTO t_employee VALUES(4,'user4'); INSERT INTO t_salary values(4,400,4); INSERT INTO t_salary values(5,500,4); INSERT INTO t_employee VALUES(5,'user5'); INSERT INTO t_manager VALUES(1,'user1'); --笛卡尔积 SELECT * FROM t_employee e, t_salary s; --WHERE SELECT * FROM t_employee e, t_salary s WHERE e.id = s.employee_id; --GROUP BY, ORDER BY SELECT E.NAME, SUM(S.MONEY) AMOUNT FROM T_EMPLOYEE E, T_SALARY S WHERE E.ID = S.EMPLOYEE_ID GROUP BY E.NAME HAVING SUM(S.MONEY)>250 ORDER BY AMOUNT DESC; --IN SELECT * FROM t_employee e WHERE e.id IN (SELECT DISTINCT s.employee_id FROM t_salary s); --EXISTS SELECT * FROM t_employee e WHERE EXISTS (SELECT 1 FROM t_salary s WHERE e.id = s.employee_id); --UNION SELECT 0 ID, '请选择' NAME FROM DUAL UNION SELECT E.ID, E.NAME FROM T_EMPLOYEE E UNION SELECT M.ID, M.NAME FROM T_MANAGER M; --UNION ALL SELECT 0 ID, '请选择' NAME FROM DUAL UNION ALL SELECT E.ID, E.NAME FROM T_EMPLOYEE E UNION ALL SELECT M.ID, M.NAME FROM T_MANAGER M; --INTERSECT SELECT 0 ID, '请选择' NAME FROM DUAL UNION (SELECT E.ID, E.NAME FROM T_EMPLOYEE E INTERSECT SELECT M.ID, M.NAME FROM T_MANAGER M); --MINUS SELECT 0 ID, '请选择' NAME FROM DUAL UNION (SELECT E.ID, E.NAME FROM T_EMPLOYEE E MINUS SELECT M.ID, M.NAME FROM T_MANAGER M); --自然联接 SELECT * FROM t_employee e NATURAL JOIN t_salary s NATURAL JOIN t_manager m; --内联接 SELECT * FROM t_employee e INNER JOIN t_salary s ON e.id = s.employee_id; --内联接 可以 完全被WHERE替代,而且最好只是用WHERE子句,就不用ON了 SELECT * FROM t_employee e, t_salary s WHERE e.id = s.employee_id; --左外联接 SELECT * FROM t_employee e LEFT OUTER JOIN t_salary s ON e.id = s.employee_id; --左外联接,+形式,有+的一侧,表示该表为附表,另一个表为基表 SELECT * FROM t_employee e, t_salary s WHERE e.id = s.employee_id(+); --右外联接 SELECT * FROM t_employee e RIGHT OUTER JOIN t_salary s ON e.id = s.employee_id; --右外联接,+形式 SELECT * FROM t_employee e, t_salary s WHERE e.id(+) = s.employee_id; --完全外联接,执行过程是:先执行左外联接,再执行右外联接,最后进行UNION操作。开销很大,尽量避免使用。 SELECT * FROM t_employee e FULL JOIN t_salary s ON e.id = s.employee_id; --完全外联结 等价于 SELECT * FROM t_employee e LEFT OUTER JOIN t_salary s ON e.id = s.employee_id UNION SELECT * FROM t_employee e RIGHT OUTER JOIN t_salary s ON e.id = s.employee_id;
connect by 层次化查询,用云树形数据结构
oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:
select ... from <TableName>
where <Conditional-1>
start with <Conditional-2>
connect by <Conditional-3>
;
<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。
<Conditional-2>:查询结果重起始根结点的限定条件。
<Conditional-3>:连接条件
相关推荐
首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种无需完整Oracle客户端的方式来实现连接。这种连接方式通常依赖于Oracle的Instant ...
解决oracle sqldeveloper无法连接mysql、SQLServer问题,sqlDeveloper是ORACLE数据库开发工具,自带的是无法连接MS SQL Server以及mysql的,想连接的话需要第三方工具。 使用方法: 解压出来后将2个jar放入jlib...
### Oracle SQL Developer数据库连接成功后无法打开表的问题分析与解决 #### 问题概述 在使用Oracle SQL Developer工具时,部分用户可能会遇到一个较为常见的问题:虽然已经成功连接到Oracle数据库,但是在左侧的...
"SQL Server 连接 Oracle 方法" SQL Server 连接 Oracle 方法是数据库管理系统中的一个重要话题。本文将详细介绍如何在 SQL Server 中连接 Oracle 数据库,并解决在连接过程中可能出现的问题。 安装 Oracle 客户端...
SQL SERVER 连接 Oracle 数据库几种方法 在实际开发中,我们经常需要在 SQL Server 中连接 Oracle 数据库,以便实现数据交换和集成。那么,如何在 SQL Server 中连接 Oracle 数据库呢?下面我们将介绍几种常见的...
3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在MySQL中,子查询通常需要移到FROM或WHERE子句中。 4. **游标**:Oracle SQL支持游标,MySQL则不直接支持,需要使用存储过程或临时表来实现类似...
oracle sql 多表连接和子查询 oracle sql 多表连接和子查询
它详细解释了各种连接(JOIN)类型、子查询、集合操作、窗口函数、索引和视图等高级特性。此外,还涉及事务控制、并发控制和数据库权限管理。 4. **SQL快速参考**:此文档为快速查阅手册,提供了SQL常用命令和语法...
4. **测试连接**:使用创建好的数据库链接查询 SQL Server 数据库中的表,例如: ``` SELECT * FROM jobs@pubs; ``` 如果连接成功,将返回 SQL Server 数据库中的数据。 #### 结论 通过以上步骤,可以成功...
2. 高级查询技术:使用Oracle SQL的高级特性,如分析函数、子查询、连接以及数据聚合等。 3. 事务处理:深入理解如何使用Oracle的事务控制语句,如COMMIT、ROLLBACK以及SAVEPOINT,进行有效的事务管理。 4. 锁机制:...
接下来,我们可以编写SQL语句来执行各种操作。例如,删除用户可以使用`DROP USER`语句: ```sql DROP USER 用户名 CASCADE; ``` `CASCADE`关键字确保与该用户相关的所有对象(如表、索引等)也将被删除。 创建用户...
Oracle SQL是数据库管理员和开发人员用来与Oracle数据库交互的语言,它是SQL标准的扩展,提供了许多特有的功能和优化。本资源“Oracle Sql基础(beginning oracle sql中文版)”旨在为初学者提供一个全面的Oracle ...
- 在 SQL Developer 中,可以轻松地浏览数据库中的各种对象,如表、视图、存储过程等。 - 对象列表通常显示在左侧的树状结构中。 2. **创建、导入导出 Oracle 数据库连接:** - SQL Developer 支持创建新的...
标题“Oracle连接查询SQL性能测试”涉及的是数据库管理和优化领域,特别是针对Oracle数据库系统的SQL查询性能分析。在Oracle中,连接查询(JOINs)是整合多个表数据的关键操作,其性能直接影响到数据库的整体效率。...
- 报表生成:使用报表功能,可以根据SQL查询结果生成各种类型的报表,如HTML、PDF或CSV格式。 - 图形化数据:对于数值型数据,SQL Developer支持生成柱状图、饼图等,直观展示数据分布。 7. **数据库维护** - ...
4. **数据库连接**:虽然Oracle SQL Developer不需要单独安装Oracle数据库,但它需要Java Development Kit (JDK)来运行。在启动时,用户需要指定本地JDK的路径,以确保工具的正常运行。 5. **数据迁移**:此工具...
10. **数据库连接与管理工具**:如SQL*Plus、SQL Developer等,是与Oracle数据库交互的常用工具,它们能帮助我们执行SQL语句,管理数据库对象,以及监控数据库状态。 通过这份“Oracle SQL.ppt”,初学者可以逐步...
在使用连接服务器时,需要在 SQL Server 的查询分析器中使用具体的 SQL 语句来实现表记录的查看。更详细的使用方法这里不再赘述。 通过配置 Windows 的 ODBC 数据源和 SQL Server 2000 中的连接服务器,可以实现 ...
Oracle SQL,全称为结构化查询语言,是用于管理和操作Oracle数据库的强大工具。它允许用户查询、更新、插入和删除数据,以及创建和管理数据库对象。本资料“Oracle SQL语法大全”将全面涵盖Oracle SQL的基础概念、...
【大型数据库技术-实验二 Oracle SQL PLUS环境与查询】 实验主要涵盖了Oracle数据库系统中的SQL*PLUS工具的使用以及SQL查询语言的基本操作。SQL*PLUS是Oracle数据库管理系统的命令行界面,用于执行SQL语句和PL/SQL...