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