数据库表连接基础实例演示

对于开发人员来说,数据是很重要的。刚入门的程序员更要注重基础知识,所以菜鸟我也在数据库的学习方面做了点点功课。以下是个人对表连接的一些认识,写了个demo,有纰漏还请见谅、斧正。

表连接,就是将两个表,三个表等多个表拼接在一起。拼接,当然还要拼接的条件,这也就涉及到表之间的关系。一般情况下,表连接分为:普通表连接(笛卡尔积连接)、左外连接、右外连接、全外连接、内连接、自连接。

对于各种表连接的定义,在这篇博客里就不赘述。有些知识还是要自己踏实去看的,Google一下,百度一下,参考书(推荐Oracle11g java开发员手册)。

建表:

/*外联接测试表A*/
create table t_joina(
  userid number primary key,
  username varchar2(40),
  password varchar2(40),
  deptid number
);
--数据插入
insert into t_joina
values(1001,'UserA','psw',10);
insert into t_joina
values(1002,'UserB','psw',10);
<pre name="code" class="sql">insert into t_joina
values(2001,'UserB','psw',20);

 
insert into t_joina
values(3001,'UserC','psw',30);
insert into t_joina
values(4001,'UserD','psw',40);
insert into t_joina
values(6001,'UserE','psw',60);

/*外联接测试表B*/
create table t_joinb(
  deptid number primary key, 
  deptname varchar2(40),
  deptlocal varchar2(80),
  deptstaff number
);
<pre name="code" class="sql">--数据插入
 
insert into t_joinb
values(10,'Development','China',100);
insert into t_joinb
values(20,'Sale','U.S.',200);
insert into t_joinb
values(30,'Manage','U.K',10);
insert into t_joinb
values(40,'Market','Canada',150);
insert into t_joinb
values(50,'Test','Rusia',100);


                                        t_joina                                                                                         t_joinb


/*查询测试*/
--笛卡尔积连接
select * 
from t_joina a, t_joinb b



--全外连接
select * 
from t_joina a full outer join t_joinb b
on a.deptid = b.deptid;

--两表的所有记录都查询出来,并且都需要对方表对自己的记录进行匹配,无匹配项则设置为null。



--左连接
select * 
from t_joina a left outer join t_joinb b
on a.deptid = b.deptid;
--左外连接,就是以左边的表为基准表,所有记录都需右表来匹配,无匹配项则设置为null。




--右连接
select * 
from t_joina a right outer join t_joinb b
on a.deptid = b.deptid;

--右外连接,就是以右边的表为基准表,所有记录都需要左表来匹配,无匹配项则设置为null。




--内连接
select * 
from t_joina a inner join t_joinb b
on a.deptid = b.deptid;

--左右两表都需要条件匹配,所以查询出来的内容是两表都匹配的内容,没有某个表的记录全为空的情况。

对照全外连接可以看出区别。




--自连接

--就是连接表本身,一般用在菜单等有父子关系的字段中,或者说上下级关系。


以上就是一个关于表连接的实际例子。以后的工作中会再深入地学习。


共勉。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值