sql的连表方式

        连表方式有三大种,分别是外连接(OUTER JOIN)、内连接(INNER JOIN)和交叉连接(CROSS JOIN),其中外连接又包括三种,分别是左外连接、右外连接、全外连接。
表的数据如下:

 

表A

(TABLEA)

id

name

 

 

    表B

(TABLEB)

id

job

parent_id

1

张三

 

1

学生

1

2

李四

 

2

经理

2

3

王五

 

3

工程师

4

注意:TABLEA.id同TABLEB.parent_id存在关系   

一、左、右外连接

左、右外连接都会以一种表为基表(左连接以连接的左表为基表,右连接以连接的右表为基表),另外一个表的外表,其中基表的所有行、列都会显示,外表如果和条件不匹配则所有的外表列值都为NULL。sql关键字LEFT/RIGHTOUTER JOIN,通常我们省略OUTER写成LEFT/RIGHTJOIN

例子:

左连接:select* from TABLEA a LEFT JOIN TABLEB b on a.ID=b.PARENT_ID;

结果是:

id

name

id

job

parent_id

1

张三

1

学生

1

2

李四

2

经理

2

3

王五

 

 

 

右连接:select* from TABLEA a RIGHT JOIN TABLEB b on a.ID=b.PARENT_ID;

结果是:

id

name

id

job

parent_id

1

张三

1

学生

1

2

李四

2

经理

2

 

 

3

工程师

4

 二、全外连接

全外连接中所有表的行、列都会显示,条件不匹配的值皆为NULL。sql关键字FULL OUTER JOIN,通常我们省略OUTER写成FULL JOIN

例子:

selecta.*,b.* from  TABLEA a FULL JOIN TABLEB bon a.id=b.parent_id ;

结果是:

id

name

id

job

parent_id

1

张三

1

学生

1

2

李四

2

经理

2

 

 

3

工程师

4

3

王五

 

 

 

三、内连接

内连接是用比较运算符比较要连接的列的值的连接,不匹配的行不会被显示。sql关键字JOIN 或者INNERJOIN,通常我们写成JOIN

例子:

  select a.*,b.* from  TABLEA a JOINTABLEB b on a.id=b.parent_id ;

结果是:

id

name

id

job

parent_id

1

张三

1

学生

1

2

李四

2

经理

2

 四、交叉连接

没有where条件的交叉连接将产生连接表所涉及的笛卡尔积。即TableA的行数*TableB的行数的结果集。(TableA 3行*TableB 3行=9行)

例子:

   select * from TableA cross join TableB

结果是:

id

name

id

job

parent_id

1

张三

1

学生

1

2

李四

1

学生

1

3

王五

1

学生

1

1

张三

2

经理

2

2

李四

2

经理

2

3

王五

2

经理

2

1

张三

3

工程师

4

2

李四

3

工程师

4

3

王五

3

工程师

4

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值