oracle之连接实战
2016-02-21 13:07
453 查看
1.多表连接
语法:
select t1.字段1,t1.字段2......,t2.字段1,t2.字段2......from table1 t1,table2 t2 where t1.column = t2.column(建立两者连接的column)
说明:
两个表通过关联字段关联,分别在select中分别表的别名查询出目标字段
实例:
2.连接类型
(1)等值连接
where子句可以通过and增加多个连接条件,用表的别名简化查询,
(2)非等值连接
使用不等号等建立连接关系
(3)自然连接(natural join)
基于两个表的同名列建立连接
同名列前不能有前缀,如上id为两个表的同名列,前面不能有前缀,显示两个同名列相同的数据行。
(4)Using
对于natural join连接时,是自动去匹配同名列,我们可以使用using指定两个表之间的连接桥梁,
参照列名id不能带前缀。
(5)on
非同名列建立连接,通过on建立两个表之间的等值连接或任意不同名之间的关联。
(6)外链接
左外连接:以左边的表为主,返回左右能关联的数据,同时返回左边不能关联的数据,右边不能关联的不显示。
右外连接:以右边的表为主,返回左右能关联的数据,同时返回右边不能关联的数据,左边不能关联的不显示。
全外连接:
(7)交叉连接
(8)内连接
查询所有满足连接条件的数据。
语法:
select t1.字段1,t1.字段2......,t2.字段1,t2.字段2......from table1 t1,table2 t2 where t1.column = t2.column(建立两者连接的column)
说明:
两个表通过关联字段关联,分别在select中分别表的别名查询出目标字段
实例:
create table mytest( id number(11) primary key, name varchar2(10), age number(3) ) insert into mytest values(1,'one',18); insert into mytest values(2,'two',18); insert into mytest values(3,'three',22); commit; create table myline( id number(11) primary key, mytest_id number(11), any_comment varchar(225) ) insert into myline values(1,1,'第一'); insert into myline values(2,2,'第二'); insert into myline values(3,3,'第三'); commit; select mt.id,mt.name,mt.age,me.any_comment from mytest mt,myline me where mt.id = me.mytest_id;
2.连接类型
(1)等值连接
where子句可以通过and增加多个连接条件,用表的别名简化查询,
select mt.id,mt.name,mt.age,me.any_comment from mytest mt,myline me where mt.id = me.mytest_id;
(2)非等值连接
使用不等号等建立连接关系
(3)自然连接(natural join)
基于两个表的同名列建立连接
select id,mt.name,mt.age,me.any_comment from mytest mt natural join myline memytest表的id与myline表的id同名,根据两者建立两个表的关联关系。
同名列前不能有前缀,如上id为两个表的同名列,前面不能有前缀,显示两个同名列相同的数据行。
(4)Using
对于natural join连接时,是自动去匹配同名列,我们可以使用using指定两个表之间的连接桥梁,
参照列名id不能带前缀。
select id,mt.name,mt.age,me.any_comment from mytest mt join myline me using(id)
(5)on
非同名列建立连接,通过on建立两个表之间的等值连接或任意不同名之间的关联。
select mt.id,mt.name,mt.age,me.any_comment from mytest mt left outer join myline me on mt.id = me.mytest_id
(6)外链接
左外连接:以左边的表为主,返回左右能关联的数据,同时返回左边不能关联的数据,右边不能关联的不显示。
select mt.id,mt.name,mt.age,me.any_comment from mytest mt,myline me where mt.id(+) = me.mytest_id; select mt.id,mt.name,mt.age,me.any_comment from mytest mt left outer join myline me on mt.id = me.mytest_id
右外连接:以右边的表为主,返回左右能关联的数据,同时返回右边不能关联的数据,左边不能关联的不显示。
select mt.id,mt.name,mt.age,me.any_comment from mytest mt,myline me where mt.id = me.mytest_id(+); select mt.id,mt.name,mt.age,me.any_comment from mytest mt right outer join myline me on mt.id = me.mytest_id
全外连接:
(7)交叉连接
select mt.id,mt.name,mt.age,me.any_comment from mytest mt cross join myline me
(8)内连接
查询所有满足连接条件的数据。
select mt.id,mt.name,mt.age,me.any_comment from mytest mt inner join myline me on mt.id = me.mytest_id
相关文章推荐
- Toad 的功能亮点.
- oracle之子句使用
- oracle分区表
- oracle数据库中日期函数的用法
- oracle 表类型变量的使用
- oracle之函数使用大全
- Oracle中的NULL、’’(空字符串)以及’_’(空格)
- Oracle_我的一些使用规定/技巧/约定
- 中文linux安装oracle界面乱码解决方案
- ORACLE impdp / expdp 导入导出数据
- Oracle查询隐式类型转换不走索引
- Oracle 集群心跳及其參数misscount/disktimeout/reboottime
- Jmeter之JDBC Request使用方法(oracle)
- Linux Is Not Matrix——oracle监听设置
- oracle中split的使用
- oracle数据库学习 (上)
- Hadoop学习笔记——1.java读取Oracle中表的数据,创建新文件写入Hdfs
- Failed to upgrade Oracle Cluster Registry configuration(root.sh)
- Oracle12c中分区(Partition)新特性之TRUNCATEPARTITION和EXCHANGE PARTITION级联功能
- Oracle 11G R2 DataGuard日常维护及故障处理