1.理解SQL的连接
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,而全连接则是结合左连接和右连接的结果。
时间: 2024-11-10 03:17:06