命令记不住

登陆

SQL 语句多表连接和子查询

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 join

4.多表连接查询的必要条件

多表之间有直接或间接的关联条件

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 join
A  left join  B
on 
and teacher.tname='oldguo'

2.子查询

说明:查询里嵌入查询,先执行子查询,再执行外部查询

1.子查询的应用位置

  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';