1、通过WHERE进行简单连接

SELECT * FROM company3,department  不添加WHERE将会显示所有数据

SELECT * FROM company3,department WHERE company3.no = department.id;  通过WHERE构建匹配逻辑

SELECT company3.name,company3.salary,department.dept

FROM company3,department WHERE company3.no = department.id;  显示指定字段

通过select+where,创建多个表的连接

2、内连接(INNER JOIN)

CREATE TABLE employees(

id int PRIMARY KEY,

name text,

age int CHECK(age > 0),

address text,

salary numeric CHECK(salary > 0)

);

INSERT INTO employees VALUES(1,'王大',25,'beijing',10000),(2,'张三',25,'beijing',10000),

(3,'李四',21,'beijing',15000),(4,'李二',28,'shenzhen',10000),

(5,'王五',24,'shanghai',20000),(6,'杨三',19,'shanghai',15000),

(7,'张四',22,'shenzhen',20000),(8,'杨四',20,'beijing',10000);

创建表格1

CREATE TABLE department(id int,dept text,fac_id int);

INSERT INTO department VALUES(1,'IT', 1);

INSERT INTO department VALUES(2,'Engineering', 2);

INSERT INTO department VALUES(3,'HR', 7);

INSERT INTO department VALUES(10,'Market', 10);

创建表格2

SELECT employees.id,employees.name,department.dept

FROM employees INNER JOIN department

ON employees.id = department.id;

基于两个表格的id字段,连接表格,取交集

3、全连接(FULL OUTER JOIN)

SELECT employees.id,employees.name,department.dept

FROM employees FULL OUTER JOIN department

ON employees.id = department.id;

基于两个表格的id字段,连接表格,取并集,缺失值为NULL

4、左外连接(LEFT OUTER JOIN)

SELECT employees.id,employees.name,department.dept

FROM employees LEFT OUTER JOIN department

ON employees.id = department.id;

连接表格后,保留employees的所有数据条目

5、右外连接(RIGHT OUTER JOIN)

SELECT employees.id,employees.name,department.dept

FROM employees RIGHT OUTER JOIN department

ON employees.id = department.id;

连接表格后,保留department的所有数据条目

6、交叉连接

SELECT employees.id,dept,salary FROM employees CROSS JOIN department;

笛卡尔积:检索出的行的数目为第一个表中的行数乘以第二个表中的行数

当两个表有共同名称的字段(比如id),将会报错,所以这里需要指示,例如employees.id

多个连接条件

SELECT employees.id,employees.name,department.dept

FROM employees INNER JOIN department

ON employees.id = department.id

AND employees.id = department.fac_id;

JOIN连接三个表

CREATE TABLE education(name text,edu text);

INSERT INTO education VALUES('王大','本科'),('张三','本科'),

('李四','硕士'),('李二','本科'),

('王五','PHD'),('杨三','硕士'),

('张四','PHD'),('杨四','本科');

创建表格3

SELECT employees.id,employees.name,employees.age,employees.salary,department.dept

FROM (employees INNER JOIN education ON employees.name = education.name)

FULL OUTER JOIN department ON employees.id = department.id;

注意嵌套写法

PostgreSQL-7-数据连接的更多相关文章

  1. PostgreSQL查询数据(连接查询和子查询)

    原料 --用户表 create table "SysUser"( "UserId" serial, --用户Id,自增 "UserName" ...

  2. Tapdata Cloud 2.1.4 来啦:数据连接又上新,PolarDB MySQL、轻流开始接入,可自动标记不支持的字段类型

      需求持续更新,优化一刻不停--Tapdata Cloud 2.1.4 来啦!   最新发布的版本中,在新增数据连接之余,默认标记不支持同步的字段类型,避免因此影响任务的正常运行. 更新速览 ① 数 ...

  3. 帆软报表FineReport中数据连接之Weblogic配置JNDI连接

    1. 制作报表的原理 在帆软报表FineReport设计器中先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成J ...

  4. 帆软报表FineReport中数据连接之Jboss配置JNDI连接

    使用sqlsever 2000数据库数据源来做实例讲解,帆软报表FineReport数据连接中Jboss配置JNDI大概的过程和WEBSPHERE以及WEBLOGIC基本相同,用JDBC连接数据库制作 ...

  5. 帆软报表FineReport中数据连接之Websphere配置JNDI连接

    以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带, ...

  6. 帆软报表FineReport中数据连接之Tomcat配置JNDI连接

    1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: ...

  7. 帆软报表FineReport中数据连接的JDBC连接池属性问题

    连接池原理 在帆软报表FineReport中,连接池主要由三部分组成:连接池的建立.连接池中连接使用的治理.连接池的关闭.下面就着重讨论这三部分及连接池的配置问题. 1. 连接池原理 连接池技术的核心 ...

  8. Netbeans 中创建数据连接池和数据源步骤(及解决无法ping通问题)

    1.启动glassfish服务器, 在浏览器的地址栏中输入 http://localhost:4848 2.首先建立JDBC Connection Pools: 3.new 一个Connectio P ...

  9. htc M8 无法自动恢复数据连接(4g)的问题解决

    情况如下:htc m8 tdd-lte的双待手机,4g.2g同时在线. 本月出现,在短时间没有信号的情况后,无法恢复数据连接,哪怕是edge,更不论4g了. 尝试各种方法无解.最后咨询10086解决此 ...

  10. Ajax之数据连接信息捕获

      connDB.properties: DB_CLASS_NAME=com.mysql.jdbc.Driver DB_URL=jdbc:mysql://127.0.0.1:3306/db_datab ...

随机推荐

  1. 【 spring配置文件详解】

    转自: http://book.51cto.com/art/201004/193743.htm Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的 ...

  2. poj3461 Oulipo —— KMP

    题目链接:http://poj.org/problem?id=3461 代码如下: #include<cstdio>//poj 3461 kmp #include<cstring&g ...

  3. Java 使用POI操作EXCEL及测试框架搭建、测试开发的一些想法

    无论是UI自动化测试还是接口自动化测试都需要进行数据驱动,一般很常见的一种方式就是用excel来管理数据,那么就涉及到一些代码对EXCEL的操作,之前我们介绍过用CSV来处理EXCEL,但是它的功能还 ...

  4. Spring MVC 注解开发详解

    @Controller控制器定义 1.Controller是单利模式,被多个线程请求共享,因此设计成无序状态. 2.通过@controller标注即可将class定义为一个controller类.为使 ...

  5. PIL数据和numpy数据的相互转换

    在做图像处理的时候,自己常用的是将PIL的图片对象转换成为numpy的数组,同时也将numpy中的数组转换成为对应的图片对象. 这里考虑使用PIL来进行图像的一般处理. from PIL import ...

  6. 51nod1934:受限制的排列 (分治+组合数)

    对于一个  11 到  nn 的排列  p1,p2,⋯,pnp1,p2,⋯,pn ,我们可以轻松地对于任意的  1≤i≤n1≤i≤n 计算出  (li,ri)(li,ri) ,使得对于任意的  1≤L ...

  7. POJ 3764 The xor-longest( 树上异或前缀和&字典树求最大异或)

    In an edge-weighted tree, the xor-length of a path p is defined as the xor sum of the weights of edg ...

  8. 基于WinDbg的内存泄漏分析

    在前面C++中基于Crt的内存泄漏检测一文中提到的方法已经可以解决我们的大部分内存泄露问题了,但是该方法是有前提的,那就是一定要有源代码,而且还只能是Debug版本调试模式下.实际上很多时候我们的程序 ...

  9. bzoj 4559 [JLoi2016]成绩比较 —— DP+拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4559 看了看拉格朗日插值:http://www.cnblogs.com/ECJTUACM-8 ...

  10. 洛谷P4009汽车加油行驶问题——网络流24题(最短路)

    题目:https://www.luogu.org/problemnew/show/P4009 网络流24题中不是网络流的最短路题: 把每个点拆成各个油量上的点,根据要求连边即可: 注意:点数最大为10 ...