Oracle数据库的知识点总结

xiaoxiao2021-02-27  244

1、ANSI 美国国家标准局

select e.empno, e.ename, d.loc from emp e, dept d where e.deptno = d.deptno and substr(e.ename, 1, 1) = ‘S’; 等价于 select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’;

2、关于排序:

1)ASC 和 DESC ASC是升序排列 DESC是降序排列 NULL作为最大值存在,如果在降序排列中,NULL排列在第一个,然后依次往下降; 如果在升序排列中,NULL则在最后一个。 没写ASC或者DESC 则默认是升序排列 2)多列排序 当以多列作为排序标准时,首先第一列进行排序,如果第一列数据相同,则以第二列排序,依次类推。 注意:多列排序中,不管是正序还是倒叙,每个列需要单独设置排序方式。 SELECT ename,deptno,sal from emp order by deptno ASC,sal DESC;

3、聚合函数(分组函数、多行函数、集合函数)

在表中不能直接查询得到结果,而需要将现有的数据经过计算得到结果, 这种多行数据参与运算返回一行结果的计算方式就是聚合函数。 AVG和SUM等聚合函数的计算忽略表中的NULL值。 其他数据和NULL计算结果为NULL

4、count

select count(*) total_number from emp; select count(job) total_job from emp;

5、分组

group by having having必须跟在group by的后面才能出现,having不能单独存在。

6、查询语句执行顺序

1.from 从后到前 从右到左。数据量较少的表尽量放在后面 | 2.where 从右到左 将能过滤最大记录的条件写在where子句的最右边 | 3.group by 从左往右分组 在group by之前用where将不需要分组的记录过滤掉。 | 4.having子句 消耗资源 尽量避免使用,having会在检索出所有记录之后才对结果集进行过滤,需要排序等操作 | 5.select 少用* 尽量取字段名,oracle在执行号时,会将转换成所有的列名,消耗时间 | 6.order by 执行顺序为从左到右 消耗资源

7、关联查询

1)内连接 内连接返回所有满足条件的记录 2)外连接 1>左外连接 在两表中关联字段中,将左表中的该字段中对应的每一条数据的信息显示出来,可包含重复的 2>右外连接 在两表中关联字段中,将右表中的该字段中对应的每一条数据的信息显示出来,可包含重复的 3>全外连接 在两表中关联字段中,两表中对应的字段都要显示出数据,每个关联都要有数据。 4>自连接

8、分页查询

ROWNUM 伪列 截取结果集中的部分数据 select from (select rownum rn,e* from emp e) where rn between 8 and 10;

9、排序:

ROW_NUMBER ROW_NUMBER() over(PARTITION BY col1 ORDER BY col2) 根据col1分组后根据col2排序,ROW_NUMBER()函数计算的值是结果集中每组内部数据排序编号,组内连续且唯一 rownum是伪列,而row_number是可以直接从结果集中查询出的。 跳跃排序 pank 组内如果有相同的排序编号为2 则下一位排序编号为4 连续排序 dense_pank 组内如果有相同的排序编号为2 则下一位排序编号为3

10、mysql和oracle中的行列换置

mysql: select name,sum(case when course='java' then grade end) java, sum(case when course='web' then grade end) web from user oracle: decode函数decode(expr,search,result[,search,result...][default]) 用于比较字段数据中与查询条件符合的数据,返回result。

11、需要查询那个字段的信息条数 就用count(字段名)

如果需要查询的是特定小组的某个字段信息条数,就在最后加 group by(分组字段名) 即可
转载请注明原文地址: https://www.6miu.com/read-11206.html

最新回复(0)