欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库---多表查询、关联查询、不同情况下数据库表设计

程序员文章站 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);
相关标签: 数据库 设计