先建两张表
INNER JOIN
select * from bookCategory
inner join book on bookCategory.id=book.category_id_FK;
/*
现在实际中比较少用外键,在表中定义一个属性(比如:category_id_FK用categoryid替代),但不把其置位外键
select k.* from bookCategory b left join book k on b.id=k.categoryid where b.id=1;
*/
查询结果:
+----+------------+-------------------+-------------------------+
| id | name | name | author |
+----+------------+-------------------+-------------------------+
| 4 | Go书籍 | Go语言编程 | 许式伟 |
| 2 | java书籍 | java编程 | 布鲁斯埃克尔 |
| 1 | iOS数据 | Objective-C编程 | [美] Aaron Hillegass |
+----+------------+-------------------+-------------------------+
LEFT JOIN
LEFT JOIN产生表1的完全集,而2表中匹配的则有值,没有匹配的则以null值取代
select * from book left join bookCategory
on book.category_id_FK=bookCategory.id;
RIGHT JOIN
right join产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代
select * from book right join bookCategory on book.category_id_FK=bookCategory.id;
ps:大神们说少用外键,
外键不好维护
有时候数据有异常你需要删数据或者重建数据,但是有外键就没办法直接删了,
特么的还要吧其他表的引用给先删了,
如果这个表还有另外的外键还得再先删上一个表,这样会吧人搞死