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;

魔珐星云
魔珐星云

无需昂贵GPU,一键解锁超写实/二次元等多风格3D数字人,跨端适配千万级并发的具身智能平台。

下载

  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

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.9万人学习

Node.js 教程
Node.js 教程

共57课时 | 8.6万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.6万人学习

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

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