当前位置:Gxlcms > 数据库问题 > 掌握SQL的连接

掌握SQL的连接

时间:2021-07-01 10:21:17 帮助过:1人阅读

  SQL里的join用于将多个表的行连接在一起,下面是2张数据表,其中mybook表里的userID是外键,myuser表里面的userId是主键。

技术分享

技术分享

首先来看一句简单的内连接的sql,结果如下图所示。

select mybook.bookName,myuser.userName,myuser.userAge from myuser inner join mybook on mybook.userID=myuser.userId;

技术分享

  inner join是SQL里的默认连接,也就是说它和join是一样的效果。inner join关键字在表中存在至少一个匹配时返回行,如果mybook表的userID在myuser表里没有匹配到,则结果将会是什么都没有。其实所谓的连接就是根据2个表中的某列为条件使2张表合起来,其实这就像一个视图,然后再从视图里得到要显示的列。

2.外连接

  外连接分为左连接、右连接和全连接。我们可以一起执行这3条sql语句来查看它们的结果。

select mybook.bookName,myuser.userName,myuser.userAge from myuser inner join mybook on mybook.userID=myuser.userId;
select mybook.bookName,myuser.userName,myuser.userAge from myuser left join mybook on mybook.userID=myuser.userId;
select mybook.bookName,myuser.userName,myuser.userAge from myuser right join mybook on mybook.userID=myuser.userId;
select mybook.bookName,myuser.userName,myuser.userAge from myuser full join mybook on mybook.userID=myuser.userId;

技术分享

  从结果可以很明显的观察出这些连接之间的区别,首先无论什么连接都会创建出类似于一个视图的表。对于左连接,如果有匹配不成功的行,则仍然会返回这一行且右表显示NULL。右连接则和左连接刚好相反,即时左边没有匹配也会返回这一行的数据只不过左边的列显示NULL,而全连接则是结合左连接和右连接的结果。

 

掌握SQL的连接

标签:

人气教程排行