数据库---多表查询、关联查询、不同情况下数据库表设计
程序员文章站
2022-03-09 08:41:06
...
本篇博客知识点
1.三种简单的关联方式:左关联、右关联、内联
2.实例演示多表查询和关联查询
3.1对1数据库表设计、1对多数据库表设计、多对多数据库表设计
三种关联方式:左关联、右关联、内联
左关联(left join):以左表为主(左表保持完整,将右表中和左表有依赖关系的记录添加进来形成新的表)
右关联(right join):以右表为主(右表保持完整,将左表中和右表有依赖关系的记录添加进来形成新的表)
内联(inner join):将两个表中有联系的记录分别抽取出来形成新的表
示意图
左关联:
右关联:
内联
以实际表 不同的车主有多辆车 为例
左关联生成的虚拟表如下
右关联生成的虚拟表如下
内联生成的虚拟表如下
实例演示多表查询和关联查询
现在有两个表。 车主信息表和车辆信息表,car里的pid是外键
person表
car表
需求1:查询 车辆数目大于等于二的车主编号
SELECT pid FROM car GROUP BY pid HAVING COUNT(pid)>=2;
查询哪些人有两辆及以上车的车主信息
方式一普通查询
SELECT person.pname,car.cname,car.cid,car.price FROM person,car WHERE person.pid IN( SELECT pid FROM car GROUP BY pid HAVING COUNT(pid)>=2) AND person.pid=car.pid;
方式二-关联查询
SELECT person.pname,car.cname,car.cid,car.price FROM person INNER JOIN car ON person.pid IN( SELECT pid FROM car GROUP BY pid HAVING COUNT(pid)>=2) AND person.pid=car.pid;
SELECT person.pname,car.cname, car.cid,car.price FROM person INNER JOIN car ON person.pid= car.pid WHERE person.pid IN( SELECT pid FROM car GROUP BY pid HAVING COUNT(pid)>=2);
推荐阅读