Postgresql join
2016-04-26 00:00
190 查看
摘要: Postgresql join
Postgresql join 操作
1. 建表&插入数据
2. inner join
3. full outer join
4. left outer join
5. 参考
1. 建表&插入数据
创建表 test_a, test_b
2. inner join
内联合(inner join)只生成同时匹配表A和表B的记录集。
3. full outer join
全外联合(full outer join)生成表A和表B里的记录全集,包括两边都匹配的记录。如果有一边没有匹配的,缺失的这一边为null。
4. left outer join
左外联合(left outer join)生成表A的所有记录,包括在表B里匹配的记录。如果没有匹配的,右边将是null。
5. 参考
http://francs3.blog.163.com/blog/static/405767272012101011193243/
http://www.yiibai.com/html/postgresql/2013/080569.html
http://blog.jobbole.com/40443/
Postgresql join 操作
1. 建表&插入数据
2. inner join
3. full outer join
4. left outer join
5. 参考
1. 建表&插入数据
创建表 test_a, test_b
shop_5> CREATE TABLE test_a(id serial, name VARCHAR(32)); CREATE TABLE Time: 0.019s shop_5> \d test_a; +----------+-----------------------+------------------------------------------------------+ | Column | Type | Modifiers | |----------+-----------------------+------------------------------------------------------| | id | integer | not null default nextval('test_a_id_seq'::regclass) | | name | character varying(32) | | +----------+-----------------------+------------------------------------------------------+ Time: 0.006s shop_5> INSERT INTO test_a(name) VALUES ('a'),('b'),('c'),('d'); INSERT 0 4 Time: 0.011s shop_5> SELECT * from test_a; +------+--------+ | id | name | |------+--------| | 1 | a | | 2 | b | | 3 | c | | 4 | d | +------+--------+ SELECT 4 Time: 0.001s shop_5> CREATE TABLE test_b(id serial, name VARCHAR(32)); CREATE TABLE Time: 0.012s shop_5> \d test_b; +----------+-----------------------+------------------------------------------------------+ | Column | Type | Modifiers | |----------+-----------------------+------------------------------------------------------| | id | integer | not null default nextval('test_b_id_seq'::regclass) | | name | character varying(32) | | +----------+-----------------------+------------------------------------------------------+ Time: 0.003s shop_5> INSERT INTO test_b(name) VALUES ('c'),('d'),('e'),('f'); INSERT 0 4 Time: 0.009s shop_5> SELECT * from test_b; +------+--------+ | id | name | |------+--------| | 1 | c | | 2 | d | | 3 | e | | 4 | f | +------+--------+ SELECT 4 Time: 0.002s
2. inner join
内联合(inner join)只生成同时匹配表A和表B的记录集。
shop_5> SELECT * from test_a a INNER JOIN test_b b on a.name = b.name; +------+--------+------+--------+ | id | name | id | name | |------+--------+------+--------| | 3 | c | 1 | c | | 4 | d | 2 | d | +------+--------+------+--------+ SELECT 2 Time: 0.001s
3. full outer join
全外联合(full outer join)生成表A和表B里的记录全集,包括两边都匹配的记录。如果有一边没有匹配的,缺失的这一边为null。
shop_5> SELECT * from test_a a FULL OUTER JOIN test_b b on a.name = b.name; +--------+--------+--------+--------+ | id | name | id | name | |--------+--------+--------+--------| | 1 | a | <null> | <null> | | 2 | b | <null> | <null> | | 3 | c | 1 | c | | 4 | d | 2 | d | | <null> | <null> | 3 | e | | <null> | <null> | 4 | f | +--------+--------+--------+--------+ SELECT 6 Time: 0.001s
4. left outer join
左外联合(left outer join)生成表A的所有记录,包括在表B里匹配的记录。如果没有匹配的,右边将是null。
shop_5> SELECT * from test_a a LEFT OUTER JOIN test_b b on a.name = b.name; +------+--------+--------+--------+ | id | name | id | name | |------+--------+--------+--------| | 1 | a | <null> | <null> | | 2 | b | <null> | <null> | | 3 | c | 1 | c | | 4 | d | 2 | d | +------+--------+--------+--------+ SELECT 4 Time: 0.003s
5. 参考
http://francs3.blog.163.com/blog/static/405767272012101011193243/
http://www.yiibai.com/html/postgresql/2013/080569.html
http://blog.jobbole.com/40443/
相关文章推荐
- PostgreSQL新手入门教程
- PostgreSQL教程(十):性能提升技巧
- PostgreSQL教程(二):模式Schema详解
- PostgreSQL教程(十三):数据库管理详解
- 深入解读PostgreSQL中的序列及其相关函数的用法
- PostgreSQL教程(八):索引详解
- PostgreSQL教程(三):表的继承和分区表详解
- 简单介绍Ruby on Rails对PostgreSQL数组类型的支持
- PostgreSQL教程(十九):SQL语言函数
- PostgreSQL教程(四):数据类型详解
- PostgreSql新手必学入门命令小结
- 用一整天的时间安装postgreSQL NTFS权限
- FREEBSD安装POSTGRESQL笔记
- PostgreSQL8.3.3安装方法第1/2页
- 深入理解PostgreSQL的MVCC并发处理方式
- PostgreSQL教程(一):数据表详解
- PostgreSQL教程(十二):角色和权限管理介绍
- PostgreSQL教程(五):函数和操作符详解(1)
- 15个postgresql数据库实用命令分享