0

0

Oracle学习笔记:SQL查询总结

php中文网

php中文网

发布时间:2016-06-07 17:05:01

|

1351人浏览过

|

来源于php中文网

原创

1 查询语句 1.1获取唯一记录——distinct 获取员工唯一工资状况的SQL语句如下所示。 SQLgt; select distinct e.employee_name,

查询语句

 1.1获取唯一记录——distinct

获取员工唯一工资状况的SQL语句如下所示。

SQL> select distinct e.employee_name, s.salary

    from employees e, salary s

    where e.employee_id = s.employee_id;

 1.2

  在数据库查询中,,分组是一个非常重要的应用。分组是指将数据表中所有记录中,以某个或者某些列为标准,划分为一组。

  进行分组查询应该使用

 1.3  

 where

 为了获得工资总额大于

   select e.employee_id, e.employee_name, sum(s.salary) total_salary

   from employees e, salary s

   where e.employee_id = s.employee_id

   group by e.employee_id, e.employee_name

   having (sum(s.salary))>10000

 1.4  

  order by

  对该搜寻结果按照工资水平由高到低的顺序排列,SQL语句如下所示。

SQL> select distinct e.employee_name, s.salary

    from employees e, salary s

    where e.employee_id = s.employee_id

    order by s.salary desc;

  1.5  order by

  当两种子句同时存在时,

  order by

  获得员工工资总额状况,并按照工资总额由高到低的顺序进行排列。

SQL> select e.employee_name, sum(s.salary) total_salary

    from employees e, salary s

    where e.employee_id = s.employee_id

    group by e.employee_name

    order by total_salary desc;

  1.6  order bydistinct

  order by

  规则

 获得所有员工姓名,并按工资进行升序排列。

SQL> select e.employee_name,s.salary

    from employees e, salary s

    where e.employee_id = s.employee_id

    order by s.salary desc;

    

2  子查询

 子查询是指在查询语句的内部嵌入查询,以获得临时的结果集。

 Oracle总是自动优化带有子查询的查询语句。如果子查询中的数

 据源与父查询中的数据可以实现连接操作,那么将转化为连接操

 作;否则,将首先执行子查询,然后执行父查询。

 2.1  查询条件中的子查询

 例如,在表employees中存储了员工信息。但是其中某些员工并未领取过工资。

 那么可以利用子查询作为查询条件来获得所有领取过工资的员工信息。

SQL> select * from employees

    where employee_id in (select employee_id from salary);

 2.2  建表语句中的子查询

 子查询的另外一个应用场景用于建表语句中。

 例如,

 现欲创建一个与该视图具有相同结构的空数据表,则可以利用如下SQL语句。

SQL> create table tmp_user_objects

    as select * from user_objects where 11;

 2.3  插入语句中的子查询

 我们也可以在插入语句中使用子查询。这相当于向表中批量插入数据。

 创建的数据表为空表,我们可以利用子查询向其中插入数据。

SQL> insert into tmp_user_objects

    select * from user_objects

    where object_type='TABLE';

select * from user_objects where object_type='TABLE'

用于获得视图

该子查询的所有记录,将被插入表tmp_user_objects中。

3  联合语句

 联合语句是指对于多个查询所获得结果集进行集合操作。

 这些集合操作包括:

 这些集合运算都是二元运算,运算结果仍然是一个记录集合。

 3.1  

  union运算实际是合并两个结果集中的所有记录,并将其中重复记录剔除(保证结果集中的记录唯一)。

  实例:数据库中存在着两个表

  分别存储了参加了

  select student_id, student_name from a_students

    union 

    select student_id, student_name from b_students;

 3.2  

 union all

 但是union all只是将两个运算结果集进行简单整合,并不剔除其中的重复数据。

 这是与union运算的最大区别。

 只需在上例

 3.3  

 interseect运算是指交集运算。

 该运算可以获得两个结果集的交集——即同时存在于两个结果集中的记录。

   在表

   现欲获得既参加了

   即同时存在于两个表中的学生姓名,则可以使用intersect运算。

   相应的SQL语句如下所示。

   SQL> select student_name from a_students

    intersect

    select student_name from b_students;

AI工具箱
AI工具箱

AI工具箱是一个全方位AI资源聚合平台

下载

  3.4  

  minus是集合间的减法运算。该运算将返回第一个集合中存在,

  而第二个集合中不存在的记录。

  现欲获得参加了

  此时,我们可以利用

  而不存在于表b_students中的学生姓名。

  SQL> select student_name from a_students

    minus

    select student_name from b_students;

  3.5  联合语句的混合运算

  对于这四种集合运算

  Oracle允许进行混合运算。在混合运算时,这四种运算的优先级是相同的,

  也就是说,他们将按照自左至右的顺序依次进行。

  intersect

  SQL> select student_name from a_students

    intersect

    select student_name from a_students

    union all

    select student_name from b_students

4  连接

  在大多数查询中,所使用的数据源往往有多个。

  当多个数据源同时使用时,这些数据源如何进行

  组合便成为了一个至关重要的问题。连接即用来

  指定多个数据源之间的组合关系。默认情况下,

  多个数据源之间使用的是笛卡尔积方式进行组合。

  除此之外,Oracle还提供了另外几种特殊的组合方式。

  这些特殊方式有效补充了笛卡尔积的不足

  

  4.1   自然连接

  自然连接,顾名思义,即无需用户指定任何连接条件,

  只需指定连接的两个数据源。至于两个数据源如何进行数据整合则无需用户操心。

  自然连接所使用的关键字为natural join。其连接原则为,

  两个数据源的共有列,并且具有相同列值。

    表

    二者可以进行自然连接操作,相应的SQL语句如下所示。

   select * from employees natural join salary;

    natural join用于两个表之间的自然连接。

    搜寻结果获得的结果集,将含有公共列employee_id

    这里所说的公共列是指,不能为列employee_id指定限定词。

    例如,不能将列

   SQL> select e.employee_id

   4.2  内连接

   自然连接强制使用两个表之间的公共列作为搜寻条件;

   而且要求公共列的值必须相等。这带来了极大的限制,

   因此,自然连接并不常用。而内连接突破了这两种约束。

   内连接可以自行指定连接列和连接条件。内连接运算的关键字为inner join

  同样为了实现获得员工工资状况这一需求,利用内连接的SQL语句如下所示。

SQL> select e.employee_id, e.employee_name, s.month, s.salary

    from employees e

    inner join salary s

    on e.employee_id = s.employee_id;

   4.3  外连接

   内连接所指定的两个数据源,处于平等的地位。而外连接不同,外连接总是以一个数据源为基础,将另外一个数据源与之进行条件匹配。即使条件不匹配,基础数据源中的数据总是出现在结果集中。那么,依据哪个数据源作为基础数据源,便出现了两种外连接的方式——左(外)连接和右(外)连接。因为内连接没有左右之分,所以习惯上,我们将左外连接和右外连接简称为左连接和右连接。

    1.左连接

    2. 右连接

    3. 外连接的简略写法

    简略写法的优劣

    5.完全连接

   语句片断:

  SELECT MODELNAME, TABLENAME

  FORM EMCD_MONITOR_MODEL , EMCD_MONITOR_TABLE

  WHERE EMCD_MONITOR_TABLE.MODELID(+) =EMCD_MONITOR_MODEL.ID 

始终记住

反之, A.bid=B.id (+)为左连接;

相当于标准

 

  5  层次化查询

  关系型数据库中,同一个数据表中的记录具有相同的列,因此,

  不同的记录之间存在着平行关系。但是,有时候,各记录之间也

  可能存在着

  将整个表中的数据看做树状结构,而基于树状结构数据的查询,

  称为层次化查询。

  5.1  树状模型

  树状模型一个很典型的实例为市场信息。不同层级的市场之间存在着父子关系。

  

  

   

   5.2  层次化查询

select 

from 表名

start with 开始条件

connect by 递归条件

其中,

5.3  层次化查询的相关函数

对于层次化查询,最常用的函数为

sys_connect_by_path(

其中,名指定将哪个列的值进行串联,而分隔符则指定字符串串联时的分隔符。

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chatgpt使用指南
chatgpt使用指南

本专题整合了chatgpt使用教程、新手使用说明等等相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

chatgpt官网入口地址合集
chatgpt官网入口地址合集

本专题整合了chatgpt官网入口地址、使用教程等内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

minimax入口地址汇总
minimax入口地址汇总

本专题整合了minimax相关入口合集,阅读专题下面的文章了解更多详细地址。

4

2026.03.16

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

7

2026.03.16

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

114

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

141

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

396

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

65

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

111

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.8万人学习

Django 教程
Django 教程

共28课时 | 5.1万人学习

Excel 教程
Excel 教程

共162课时 | 21.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号