mysql中如何系统的学习内连接查询?

无法准确的归纳各类内连接的定义,从而无法得到准确的理解,导致无法正确使用内连接。

首先内连接的语法 

select * from 表1 inner join 表2 on 表1.xx=表2.xx

通俗的将就是提取这两个表对应的id都有的部分,如果某个表中的字段在另一个表中找不到对应的及空,那么将舍弃这条记录,或者说这一行数据,与外连接(左连接对比)左边的表全部数据都有,右边的只能有和左边的表对应的数据,没有对应的数据则舍弃,右链接与左连接刚好相反,这样说你理解了吗

参考一下:https://blog.csdn.net/doujiao_pengpeng/article/details/54565732

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

http://c.biancheng.net/view/2563.html 可以看看这篇文章,或许对你有提升

首先内连接查询我们可以一步步地进行深入学习

_____可以归纳为以下几个步骤

1.交叉连接(笛卡尔积)

2.内连接查询概要

3内连接案例

4.自然连接

一,交叉连接

(1)交叉连接(Cross Join),又称“笛卡尔连接(Cartesian Join)”或“叉乘(Product)”,它是所有内连接中最基础的一部分。

(2)如果把表视为所有的行记录,交叉连接就会返回这两个集合的笛卡尔积,返回到结果集合中的数据行数等于第一张表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。(基本语法:select * from line CROSS JOIN vehicle 等价于:select * from line,vehicle) 注意:语法中前一句并不推荐使用!

二,内连接查询概要(即我们在内连接中需要经常注意的问题)

!基本语法:SELECT fieldlist FROM table1 [INNER] JOIN table2 ON table1.column1=table2.column2 [where condition]

(1)内连接即是连接谓词,它可以使两张表 ( 如A 和 B) 的列组合在一起,产生一个新的结果表。

(2)内连接查询会分别对 A 表的每一行和 B 表的每一行进行比较,并找出可以满足连接谓词的组合。一旦连接谓词可以被满足,A 和 B 中所匹配的行会按列组合(通俗理解为并排组合)成结果集中的一行。

(3)内连接可以分 3 种:交叉连接、相等连接和自然连接。

三,内连接案例(注意:在理论知识的支撑下一定要注意实践学习!)

(1)使用内连接获取所有的线路信息和车辆信息。

分析:车辆表 vehicle 与线路表 line 存在一个连接依据列——lineID。

           连接以上两张表,使用内连接并采用“*”作为字段列表

           select * from line join vehicle on line.lineID=vehicle.lineID

           图中“lineID”和“lineID1”为重复列,它们是连接依据列。

!案例图如下

 

 

 

 

 

 

 

 

四,自然连接

!语法:SELECT fieldlist FROM table1 NATURAL JOIN table2 [where condition]

(1)自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。

(2)在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉, 结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。

(3)部分数据库不支持自然连接, 如 SQL Server 等。

同样自然连接我们也需通过一个案例来巩固,加深理解。

案例:使用自然连接获取所有的线路信息和车辆信息。(即:select * from line natural join vehicle

 

 

 

 

 

 

 

为了巩固知识我们我们所需要学习的永远不止以上,我们自己也要去找相关素材来进行练习,从而到达真正的学以致用,最后希望我的回答能够帮助到你。

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632