我们经常用到2个表的联合查询,有时候用到内连接,全连接,以及左右连接,是不是很复杂呢?下面给演示一下他们的区别
首先有以下2个表:
CREATE TABLE weather
(
city character varying(80) NOT NULL,
temp_lo integer NOT NULL,
temp_hi integer NOT NULL,
prcp real,
date date
)
WITH (
OIDS=FALSE
);
ALTER TABLE weather OWNER TO postgres;
-----------------------------------------------------------
REATE TABLE cities
(
"name" character varying(80) NOT NULL,
"location" point
)
WITH (
OIDS=FALSE
);
ALTER TABLE cities OWNER TO postgres;
让我们想看看里面的数据吧
下面就开始内连接了。不用太多的说明,看图片就知道怎么回事了
看到了吗,inner 和 select * from weather,cities where city =name 输出一样的,都是一一对应的输出。这个我喜欢!
下面在看看全连接,左右连接的图片
可以看得出来,全连接呢,就是2个表的所有数据都被列举出来,如果他表中没有对于的数据呢,就补空。
左右连接为全连接的子集(我是这么认为的)左连接以前表为基准,后表没有的数据补控
右连接已后表为基准,前表没有的就补空。