
SQL语句多表连接和子查询
1.多表连接查询
作用:将来要查询的数据,是来自于多张表时,可以用多表连接
1.多表连接公式:
1.数据来自多张表,优先想到多表连接join ON 2.关联表写join两端 3.on条件写两表的关联列 4.所有查询条件select后,注意表名和别名 5.where过滤条件写最后2.多表连接查询方式:
2.1内连接(用的最多的)(1) JOIN ON 连接 ***** (2) 传统where条件连接 **** (3) 自连接 (4) JOIN USING 连接3.外链接
left join right join4.多表连接查询的必要条件
多表之间有直接或间接的关联条件
5.多表连接练习
1.查询一下世界上人口小于100人的城市,所在的国家信息(国家名,国土面积,所在大洲)
SELECT NAME,countrycode,population FROM city WHERE population<100;SELECT NAME , continent, SurfaceArea FROM country WHERE CODE='CHN'方法一: 传统 where 连接方法
SELECT city.NAME,city.countrycode,city.population , country.NAME , country.continent, country.SurfaceArea FROM city,country WHERE city.Population<100 AND city.CountryCode=country.code;方法二: join on 的连接方法
SELECT city.NAME,city.countrycode,city.population , country.NAME , country.continent, country.SurfaceArea FROM city JOIN country ON city.CountryCode=country.code WHERE city.Population<100;6.外链接
left join right joinA left join B on and teacher.tname='oldguo'
2.子查询
说明:查询里嵌入查询,先执行子查询,再执行外部查询
1.子查询的应用位置
- 查询一下世界上人口小于100人的城市,所在的国家信息(国家名,国土面积,所在大洲)
SELECT NAME,countrycode,population FROM city WHERE population<100;SELECT NAME , continent, SurfaceArea FROM country WHERE CODE in (SELECT countrycode FROM city WHERE population<100); SELECT NAME , continent, SurfaceArea FROM country WHERE CODE IN (SELECT countrycode FROM city WHERE population<100);
3.UNION [ALL] 使用:
将两个结果集并成一个结果接,连接两条select语句结果.
1.例子: 查询中国和美国的城市信息
SELECT * FROM city WHERE countrycode IN ('CHN','USA');改写例子:
SELECT * FROM city WHERE countrycode = 'CHN' UNION ALL SELECT * FROM city WHERE countrycode = 'USA';