SQL查询--内连接、外连接、自连接查询

本文详细解析了SQL中的连接类型,包括内连接、左连接、右连接及全连接的使用方法和示例。通过具体示例展示了如何在不同场景下选择合适的连接方式,以提高数据查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先创建2个表:学生表和教师表

 

1.内连接:

在每个表中找出符合条件的共有记录。[x inner join y on...] 
第一种写法:只用where
SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t,student s WHERE t.ID=s.TEACHER_ID
第二种写法:使用
join..on.. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t JOIN student s ON t.ID=s.TEACHER_ID
第三种写法:使用inner
join .. on.. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t INNER JOIN student s ON t.ID=s.TEACHER_ID

 

2.外连接:外连接有三种方式:左连接,右连接和全连接

(1)左连接:根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示 [x left [outer] join y on...]

第一种写法:left join .. on ..
SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t LEFT JOIN student s ON t.ID=s.TEACHER_ID
第二种写法:
left outer join .. on .. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t LEFT OUTER JOIN student s ON t.ID=s.TEACHER_ID

 

(2)右连接:根据右表的记录,在被连接的左表中找出符合条件的记录与之匹配,如果找不到匹配的,用null填充 [x right [outer] join y on...]

第一种写法:right join .. on ..
SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t RIGHT JOIN student s ON t.ID=s.TEACHER_ID
第二种写法:
right outer join .. on .. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t RIGHT OUTER JOIN student s ON t.ID=s.TEACHER_ID

 

(3)全连接:返回符合条件的所有表的记录,没有与之匹配的,用null表示(结果是左连接和右连接的并集)

第一种写法:(full join .. on ..)
select t.teacher_name, s.student_name from teacher t full join student s on t.id = s.teacher_id;
第二种写法:(
full outer join .. onselect t.teacher_name, s.student_name from teacher t full outer join student s on t.id = s.teacher_id;

 注意:Oracle数据库支持full join,mysql是不支持full join的


如果直接查询2张表,将得到一个笛卡尔积,两个表的乘积 select * from teacher,student;

关于笛卡尔积的说明,请参考博客:https://blog.youkuaiyun.com/csdn_hklm/article/details/78394412

 

转载于:https://www.cnblogs.com/hanmk/p/11426747.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值