上次新霸哥和大家讲解了一些关于oracle的知识发现大家对oracle还是比较感兴趣的,下面新霸哥就大家比较关系的oracle中常用的查询有哪几种?做个和oracle相关的开发的朋友可能会知道答案,但是刚接触过oracle的朋友可能还不知道是怎么回事。今天,新霸哥将在此给大家做一个详细的介绍。
多表连接查询
连接多表
1. 笛卡尔积
在没有任何过滤条件的情况下,左表的任意一行记录 与 右表的任意记录进行连接
2. 使用连接查询
下面新霸哥简单的介绍一下语法1:select columnList from table1, table2 where table1.column1 operator table2.column2(连接条件) and 过滤条件,在where子句中指定连接条件,连接n个表时,连接条件要有n-1个,几个表中的同名字段 引用时要加前缀给表起别名:from tablename n
这是语法2:select columnList from table1 join table2 on table1.column1 operator table2.column2 join table3 on ... where 过滤条件
非等值连接
连接两个或多个表时,在条件中不使用等号,而是用比如<,>,>=,<=,!=,between m and n,in等运算符
自然连接
根据两个表的同名列来执行连接操作只有当表中有同名列且数据类型也相同时才能在使用NATURAL JOIN。
看看新霸哥给的语法:select columnList from table1 natural join table2;
使用Using子句连接表
如果两个表有同名列,在连接语句里使用Using子句来指定连接的列
select columnList from table1 join table2 using (columnName)
交叉连接
使用关键字Cross包含多个表的连接,连接的结果为一个笛卡尔乘积
语法:select columnList from table1 cross join table2;
外连接
当两个表执行连接操作时,表中不满足连接条件的行是会被显示的
语法:select columnListfrom table1 [left|right|full] outer join table2 on ...
三种类型的外连接:
1. Left outer join 左外连接
返回第一个表的所有行 和 第二个表中满足连接条件的行
2. Right outer join 右外连接
返回第二个表的所有行 和 第一个表中满足连接条件的行
3. Full outer join 满外连接
返回两个表的所有行,分为两个部分:
1) 返回第一个表的所有行,即便第二表中没有匹配行
2) 返回第二个表的所有行,即便第一表中没有匹配行
4. 内连接 self join
用于连接在同一个表的数据。
子查询 Sub Query
在一条select语句内定义另外一条select语句。
注意点:
1. 子查询在主查询执行前执行
2. 主查询使用子查询的结果
3. 所有子查询必须用括号括起来
4. 为了增强可读性,子查询应置于比较条件的右方
5. 除非使用top-n分析,否则子查询中不使用order by
子查询的嵌套
包含一个或多个子查询的查询
单行子查询:子查询结果为一行
多行子查询:子查询结果为多行
Top-N查询
语法:select columnList from table where rownum <= n rownum只对当前select有效
新霸哥通过开发中遇到的一些问题总结了查询中一些常见问题:
1. 获取单表所有记录 select * from table;
2. 获取单表某字段不重复记录 select distinct column from table;
3. 查询结果字段取别名 select column otherName from table;
4. 查询过滤条件 select columnList from table where where_condition;
5. 查询结果排序 select columnList from table order by column [asc|desc];
6. 分组查询 select columnList from table group by column1, column2;
7. 过滤多行函数结果 select columnList from table group by column1, column2 having having_condition;
8. 多表查询,内连接,外连接(左外连接、右外连接、满外连接)
select columnList from table1 [left|right|full] join table2 on table1.column1 = table2.column2;
9. 子查询
10. 嵌套子查询
好了,今天的关于软件开发中oracle查询常用方法总结就写到这里了,更多的关于oracle方面的问题欢迎和新霸哥交流。