SQL联合查询(内联、左联、右联、全联)的语法

1.数据环境准备

CREATE TABLE CUST_INFO(CST_ID VARCHAR(40),CST_NM VARCHAR(100),PASSWORD VARCHAR(6));
INSERT INTO CUST_INFO VALUES('1','郭啸天','123456');
INSERT INTO CUST_INFO VALUES('2','杨铁心','123456');

CREATE TABLE CUST_INFO_DETAIL(CST_ID VARCHAR(40),SEX VARCHAR(4),AGE INT);
INSERT INTO CUST_INFO_DETAIL VALUES('1','',34);
INSERT INTO CUST_INFO_DETAIL VALUES('3','',38);

 

1.1 表CUST_INFO

CST_ID

CST_NM

PASSWORD

1

郭啸天

123456

2杨铁心123456

1.2 表CUST_INFO_DETAIL

CST_IDSEXAGE
134
338

 

 

2.各种连接

2.1 内联(inner join)

如果想把用户信息列写出来,那么一般这么写:
SELECT * FROM CUST_INFO T1 ,CUST_INFO_DETAIL T2 WHERE T1.CST_ID=T2.CST_ID

等同于

SELECT * FROM CUST_INFO T1  INNER JOIN  CUST_INFO_DETAIL T2  ON T1.CST_ID=T2.CST_ID

把两个表中都存在CST_ID的行拼成一行(即内联),但后者的效率会比前者高很多,建议用后者(内联)的写法。

运行结果如下:

CST_ID

CST_NM

PASSWORD

CST_ID

SEX

AGE

1

郭啸天

123456

1

34

2.2 左联(left join)

显示左表CUST_INFO中的所有行,并把右表CUST_INFO_DETAIL中符合条件加到左表CUST_INFO中;右表CUST_INFO_DETAIL中不符合条件,就不用加入结果表中,并且NULL表示

SQL:

CST_ID

CST_NM

PASSWORD

CST_ID

SEX

AGE

1

郭啸天

123456

1

34

2杨铁心123456NULLNULLNULL

2.3 右连接(right join)

显示右表CUST_INFO_DETAIL中的所有行,并把左表CUST_INFO中符合条件加到右表CUST_INFO_DETAIL中;左表CUST_INFO中不符合条件,就不用加入结果表中,并且NULL表示。

T_ID

CST_NM

PASSWORD

CST_ID

SEX

AGE

1

郭啸天

123456

1

34

NULLNULLNULL338

2.4 全连接(full join)

显示左表CUST_INFO、右表CUST_INFO_DETAIL两边中的所有行,即把左联结果表+右联结果表组合在一起,然后过滤掉重复的。

ID

CST_NM

PASSWORD

CST_ID

SEX

AGE

1

郭啸天

123456

1

34

NULLNULLNULL338
 杨铁心123456NULLNULLNULL

转载于:https://www.cnblogs.com/OliverQin/p/6694164.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值