登陆 注册

Oracle 利用SELECT检索数据

陈双义 2018-08-14 1761人围观 ,发现0个评论 Oracle数据库 百度已收录

Oracle 利用SELECT检索数据

01、查询数据 SELECT

(1)SELECT 语句语法

SELECT

[DISTINCT | ALL]       <--列表字段中的数据是否去除重复记录-->

select_list

FROM table_list

[where_clause]                    <--查询的WHERE条件部分-->

[group_by_clause]               <--GROUP BY 子句部分-->

[HAVING condition]            <--HAVING 子句部分-->

[order_by_clause]               <--排序-->

(2)使用别名替代表中的字段名

关键字 AS(如果不适用 AS 关键字,只用空格代替也是可以的)

select 字段名1 AS 替代名2,字段名2 替代名2,... FROM table_name;

(3)使用表达式操作查询的字段

“*”代表乘号,“||”是连接操作符,他用来连接两个字符串。

(4)去除重复记录

查询数据时可能有重复记录,可以使用关键字 DISTINCT 去除重复数据。

SELECT DISTINCT 字段名 FROM table_name;

02、检索出来的数据排序

(1)使用排序语法

排序需要放在select语句的后面,不管有什么限制条件,排序关键字只能在最后一项。

ORDER BY                                                         <--排序关键字-->

{expr | position | c_alias}                                   <--表达式 | 表中列的位置 | 别名-->

[ASC | DESC]                                                     <--升序 | 降序(默认升序)-->

[NULLS FIRST | NULLS LAST]                         <--NULL值排最前 | NULL值排最后(对空字段的处理方式)-->

[,{expr | position | c_alias}

[ASC | DESC]

[NULLS FIRST | NULLS LAST]

]...

(2)使用字段的位置作为排序字段

排序时可以使用查询列表中字段的位置来作为排序字段,表示位置的数字不能超出查询列表中字段的个数。

(3)多个字段排序

03、使用 WHERE 子句设置检索条件

WHERE条件子句可以使用的操作符主要有:关系操作符、比较操作符和逻辑操作符。

关系操作符包括:<,<=,>,>=,=,!=,<>

比较操作符包括:

IS NULL:如果操作数为NULL返回TRUE。

LIKE:模糊比较字符串值。

BETWEEN...AND...:验证值是否在范围内。

IN:验证操作数在设定的一系列值中。

逻辑操作符包括:

AND:两个条件都必须满足。

OR:只要满足其中一个即可。

NOT:与某个逻辑值相反。

(1)模糊查询数据

使用模糊查询的关键字是 LIKE,它和两个通配符一起使用,才能实现模糊查询功能。用这两个通配符可以替代模糊的部分。

_:可以替代一个字符。

%:可以替代多个字符。

(2)针对NULL值的查询

如果想要检索NULL数据,可以使用“IS NULL”;而利用“IS NOT NULL”,就可以检索非NULL的数据。

04、GROUP BY和HAVING子句

GROUP BY子句和HAVING子句同WHERE不一样,它们两个都是用于组的查询

(1)GROUP BY子句

GROUP BY

{ expr                                                                   <--通常表示数据库列名-->

| { ROLLUP |CUBE} ({ exper [,exper]...})               <--GROUP BY子句的扩展,可以返回小计和总计记录-->

}

GROUP BY语句可以和分组函数一起使用,可以根据某一列进行分组,也可以根据几列进行分组。

GROUP BY子句是统计数据时常用的语句,使用该子句时需要注意:

当查询中存在GROUP BY子句时,SELECT列表中只能存在分组函数,或出现在GROUP BY子句中的字段。

GROUP BY子句不允许出现在WHERE条件中,但允许出现在其后,GROUP BY子句可以和WHERE条件并列使用。

(2)HAVING子句

HAVING子句通常和GROUP BY子句一起使用,限制搜索条件。HAVING子句与组有关,而不与单个值有关。在GROUP BY子句中,它会作用于GROUP BY创建的组。

HAVING对GROUP BY子句负责,而WHERE对FROM负责。

05、使用子查询

子查询就是嵌套查询,它是嵌套在另一个语句中的SELECT语句。

(1)子查询返回单行

子查询允许返回单行数据,也允许返回多行数据。返回单行数据是逻辑上最简单的子查询嵌套查询语句。它和在WHERE条件中使用单一或多个条件限制的操作方法一致。

(2)子查询返回多行

子查询返回的值为多行值,需要用到 IN 关键字。除此以外,也可以使用量化比较关键字SOME、ANY、ALL,这些需配合<,=,>,<=,>=使用,他们表示的含义:

ANY:表示满足子查询结果的任何一个。和<,<=搭配,表示小于等于列表中的最大值;和>,>=配合时表示大于等于列表的最小值。

SOME:可以认为与ANY含义一样,只不过ANY多用于非“=”的环境中。

ALL:表示满足子查询结果的所有结果。和和<,<=搭配,表示小于等于列表中的最小值;和>,>=配合时表示大于等于列表的最大值。

06、连接查询

连接分为内连接、外连接和全连接(自连接)

(1)最简单的连接查询

最简单的连接查询是利用逗号完成,利用逗号把FROM中的表名隔开,但这样的意义不大。

(2)内连接

内连接也称为简单链接,它会把两个或多个表进行连接,只能查询出匹配的记录。内连接最常用的是等值连接和不等值连接。

内连接关键字“INNER JOIN”(或可以简写成“JOIN”,但后面“ON”关键字不可省略。)。

①、等值连接

连接条件中使用“=”连接两个条件列表。

②、不等值连接

不等值连接就是指连接条件中使用“>”、“>=”、“<=”、“<”、“!=”、“<>”、“BETWEEN...AND...”、“IN”等连接两个条件列表。

(3)自连接

自连接就是把自身表的一个引用作为另一个表来处理,这样就能获得一些特殊的数据。

(4)外连接

外连接分为左外连接、右外连接和全外连接。

①、左外连接:又称为左向外连接。返回结果不仅仅是符合连接条件的行记录,还包含左边表中的全部纪录。就是说,如果左表的某行记录在右表中没有匹配项,则返回结果中右表的所有选项列表列均为空。关键词:LEFT JOIN ... ON ...

②、右外连接:又称为右向外连接。和左外连接相反,将右边的表中所有的数据与左表进行匹配,返回的结果出了匹配成功的记录,还包含右表中未匹配成功的记录,并在其左表对应的列补空值。关键词:RIGHT JOIN ... ON ...

③、全外连接:返回所有匹配成功的记录,并返回左表未匹配成功的记录,也返回右表为匹配成功的记录。关键词:FULL JOIN ... ON ...

本文标题:Oracle 利用SELECT检索数据
本文链接:https://www.chenshuangyi.com/post/243.html
作者授权:除特别说明外,本文由 陈双义 原创编译并授权 陈双义博客 刊载发布。
版权声明:本文使用「署名-非商业性使用-相同方式共享」创作共享协议,转载或使用请遵守署名协议。协议见页脚-知识共享许可协议。
谢谢打赏
支付宝 支付宝
微信 微信
请发表您的评论
站点信息
  • 文章总数:258
  • 页面总数:9
  • 分类总数:10
  • 标签总数:377
  • 评论总数:119
  • 浏览总数:197999
扫描关注官方微信公众号
官方微信公众号
不容错过