数据查询语言DQL是SQL中的重点和难点。 因此,这部分需要强化学习,我也会尽可能介绍的详细一些。 在上面的语句中,* 表示查询所有列,如果要查询具体的列,则列出具体列的字段名即可。WHERE 后跟过滤条件。 在查询列的后面是可以添加别名的。 有=、>、<、>=、<=、!=、<> AND表示同时满足多个条件,与Java中的&&一样 AND的优先级高于OR,可以用括号提高OR的优先级 LIKE用于模糊匹配字符串,支持两个通配符: 判断在列表中/判断不在列表中 通常用于子查询中 判断在一个区间范围内 注意:BETWEEN后面跟小的,AND后面跟大的 ANY/ALL不能单独使用,需要配合单行比较操作符>,<,>=,<=一起用。 通常用于子查询 对结果集中指定的字段重复的记录进行去重, 根据指定字段进行数据排序,不写或ASC为升序,DESC为降序 表示查询年龄补位空的信息,以年龄的降序排列。即年龄大的在上面。 可以按照多个字段排序 当排序的字段中有NULL值时,NULL被认作为最大值 聚合函数又被称为多行函数,分组函数 聚合函数都是忽略NULL的 指定字段的最大值和最小值 指定字段的平均值和总和 统计给定字段补位NULL的记录数 表示查出A表中的记录总数 GROUP BY 可以将结果集按照指定的字段值相同的记录看作一组,然后配合聚合函数进行更细分的统计工作。 GROUP BY 可以根据多个字段进行分组 WHERE 中不能使用聚合函数,因为过滤时机不对。 从多张表中查询对应记录的信息。 当两张表有同名字段时,SELECT子句中必须明确指定该字段来自哪张表,在关联查询中,表名也可以添加别名。 关联查询时要添加查询条件,否在会出现笛卡儿积 JOIN … ON … 外连接除了会把满足连接条件的记录查出来外,还可以把不满足连接条件的查出来。 自连接是一种特殊的连接查询,数据的来源是一个表,即关联关系来自于单张表的多个列 子查询是一条SELECT语句,但它是嵌套在其他SQL中,为的是给该SQL提供数据以支持其执行操作。 此处是说的其他SQL,而不是查询语句中,子查询是可以嵌套在其它各种SQL的,比如DDL,就可以通过子查询创建一张查询出来数据的表。 子查询可分为单行子查询、多行子查询及多列子查询。 EXISTS后面跟一个子查询,当该子查询可以查询出一条记录时,则EXISTS表达式成立并返回true。 是将查询表中数据时分段查询,而不是一次性将所有数据查询出来,有时查询的数据量非常庞大,这会导致系统资源消耗大,相应速度长,数据冗余严重。 数据库基本都支持分页,但是不同数据库语法不同 Oracle中的分页是基于伪列rownum实现的 计算区间公式: star:(page-1)pageSize+1 decode(a,b,c[,d,e……],m) decode在group by分组中的应用可以将字段值不同的记录看作一组 case a when b then c 排序函数允许对结果集按照指定的字段分组,再在组内按照指定的字段排序,最终生成组内编号。 生成组内连续且唯一的数字,PARTITION BY 按什么分组,ORDER BY 按什么排序 生成组内不连续也不唯一的数字,组内排序字段值一样的,生成的数字也一样。 生成组内连续,但不唯一的数字 并集/全并集 交集:两个结果集共有的记录 差集:前面的结果集有,后面的结果集没有的记录 ROLLUP CUBE GROUPING SETS是GROUP BY子句的扩展,可以生成与使用UNION ALL来组合单个分组查询时相同的结果集,用来简化和高效的实现统计查询。每一个高级分组函数都有一套分组策略。 GROUP BY ROLLUP(a,b,c) GROUP BY CUBE(a,b,c):每种组合分一次组 GROUP BY GROUPING SETS((a),(b))Oracle查询知识点
数据查询语言DQL
1.大部分的面试都会涉及。
2.非常常用,必定涉及查询语句
3.部门内容挺复杂的语句
SELECT * FROM A WHERE id=1
别名
1.如果查询项是表达式或函数,那么查询的结果集就是以表达式或函数作为字段的名字,可读性很差。
2.别名可以根据自己的想法设置,没有限制。除了不能是Oracle的关键字
3.别名本身不区分大小写,也不能含有括号,如果需要区分大小写或者有空格,需在别名4.上加上双引号。
4.有些时候必须使用别名。符号
其中Oracle中的赋值用=
!=和<>都表示不等于AND/OR关键字
OR表示多个条件只需要满足一个,与Java中的||一样LIKE关键字
_:单一的一个字符
%:任意个字符IN/NOT IN
WHERE NAME IN (‘zs’,‘ls’)
WHERE NAME NOT IN (‘zs’,‘ls’)BETWEEN…AND…
示例:SELECT * FROM sal BETWEEN 5000 AND 10000
不仅可以判断数字,也可以比较其他,比如日期。ANY/ALL
‘>ANY’ 大于最小
‘<ANY’ 小于最大
’>ALL‘ 大于最大
‘<ALL’ 小于最小DISTINCT
也可以对多个字段去重,是多个字段的组合没有重复的
DISTINCT 修饰的字段必须在第一个,否时会报错SELECT DISTINCT age FROM A
ORDER BY
ORDER BY 子句必须在SQL的最后
示例:SELECT * FROM A WHERE age is not null ORDER BY age DESC
此时有优先级
先按照第一个字段排序,第一个字段有重复时,按照第二个字段排序聚合函数
是对结果集某些字段的值进行统计
可以配合NVL使用MAX/MIN
AVG/SUM
COUNT
SELECT COUNT(*) FROM A
分组函数
一旦查询字段项中有聚合函数出现,就不能有其他字段,如果非要有,就必须将这些字段项放入GROUP BY 中
是将这几个字段都相同的看作一组HAVING
聚合函数最为过滤条件必须要在HAVING子句中,并且HAVING必须跟在GROUP BY 子句后,
HAVING 用来过滤分组函数查询语句执行顺序
关联查询
关联查询的重点在于这些表中的记录的对应关系,这个关系也称为连接条件
笛卡尔积通常是一个毫无意义的结果集,他的记录数是所有参与查询的表的记录数乘积的结果。
要避免出现。数据量大时极易出现内存溢出等现象。
N张表关联查询要有至少N-1个查询条件。
不满足连接条件的记录是不会在关联查询中被查询出来的内连接
内连接也是用来关联查询的外连接
外连接分为左外连接、右外连接和全外连接。
左外连接 LEFT OUTER JOIN:以JOIN左侧表作为驱动表(所有记录都会查出来),那么当该表中某条记录不满足链接条件时,来自右侧表中的字段全部填NULL.
右外连接 RIGHT OUTER JOIN:以JOIN右侧表作为驱动表(所有记录都会查出来),那么当该表中某条记录不满足链接条件时,来自左侧表中的字段全部填NULL.
全外连接 FULL OUTER JOIN:就是左右表不满足的都会查出来。自连接
自连接是为了解决同类型数据但又存在上下级关系的树状结构数据时使用。子查询
单行单列子查询:常用于过滤条件,可以配合>、=、<、>=、<=使用
多行单列子查询:常用于过滤条件,判断=时用in,判断>、>=等时用ANY、ALL
多行多列子查询:常当作一张表看待EXISTS关键字
分页查询
ROWNUM
rownum不存在与任何一张表中,但是所有表都可以查该字段,该字段的值是随着查询自动生成的,方式是:每当可以从表中查询出一条记录时,该字段的值即为该条记录的行号,从1开始逐次递增。
在使用rownum对结果集进行编号的查询过程中不能使用rownum做>1以上的数字判断,否在将查询不出任何数据。
pageSize:每页显示的条数
page:页数
end:pageSizepageDECODE函数
如果a=b,返回c
如果d=e,返回e
……
都不匹配则返回m(因为编辑器键位冲突,上面的表达式没有表达清楚,m可以写也可以不写,不写如果没有匹配上就返回null)CASE函数
when d then e
else f end排序函数
ROW_NUMBER()
ROW_NUMBER() OVER(
PARTITION BY a,
ORDER BY b
)RANK()
RANK() OVER(
PARTITION BY a,
ORDER BY b
)
除了函数名不一样 其他都一样DENSE_RANK()
DENSE_RANK() OVER(
PARTITION BY a,
ORDER BY b
)高级分组函数
UNION 、UNION ALL
并集:两个结果集的总记录,去除重复记录
全并集:两个结果集的总记录,包括重复记录INTERSECT
MINUS
分组原则:参数逐次递减,一直到所有参数都不要,每一种分组都统计一次结果并且并在一个结果集中。
分组次数:2的参数个数次方
每一个参数是一种分组方式,然后将这些分组统计后并在一个结果集显示
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算