MySQL——连接查询(特殊的多表查询)

连接查询(将具有管理关系的多个表连接起来进行查询操作)

1. 内连接

语法格式:
· SELECT 字段名列表 FROM 表1 INNER JOIN 表2 ON 连接条件;
· SELECT 字段名列表 FROM 表1 INNER JOIN 表2 ON 连接条件 INNER JOIN 表2 ON 连接条件 ...;(多次内联)

案例:省、市、县 三个表中查询信息,县中的father_id对应市的id,市中的father_id对应省中的province_id
(普通多表查询中有案例表可参考)

查出所有的省市信息
SELECT provincelist.province_name,citylist.city_name FROM provincelist
INNER JOIN citylist
ON provincelist.privince_id=citylist.father_id;

查询出所有省市县信息
SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist
INNER JOIN citylist
ON provincelist.privince_id=citylist.father_id
INNER JOIN countrylist
ON citylist.city_id=countrylist.father_id;
2. 外连接(与其他区别:匹配不成功的记录会显示为NULL,普通多表查询与内连接查询不显示匹配失败的记录)

左连接(以左表为主,显示查询结果)
拿左表为基准,去右表寻找与左表相匹配的记录,有值则记录,无值则置NULL
语法格式:
· SELECT 字段名列表 FROM 表1 LEFT JOIN 表2 ON 连接条件;
· SELECT 字段名列表 FROM 表1 LEFT JOIN 表2 ON 连接条件 LEFT JOIN 表3 ON 连接条件...;
右连接
语法格式:
· SELECT 字段名列表 FROM 表1 RIGHT JOIN 表2 ON 连接条件;
· SELECT 字段名列表 FROM 表1 RIGHT JOIN 表2 ON 连接条件 RIGHT JOIN 表3 ON 连接条件...;

案例:

查询出所有省市县信息(以左表参数为基准)
SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist
LEFT JOIN citylist
ON provincelist.privince_id=citylist.father_id
LEFT JOIN countrylist
ON citylist.city_id=countrylist.father_id;

查询出所有省市县信息(以右表参数为基准)
SELECT provincelist.province_name,citylist.city_name,countrylist.country_name FROM provincelist
RIGHT JOIN citylist
ON provincelist.privince_id=citylist.father_id
RIGHT JOIN countrylist
ON citylist.city_id=countrylist.father_id;

你可能感兴趣的:(MySQL——连接查询(特殊的多表查询))