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. 修改mysql的root的密码

    首先用root账号登陆phpmyadmin,然后点击左侧的mysql,然后选择进入mysql数据库,输入以下命令:update user set password=password('123456') ...

  2. Gym - 101147H H. Commandos —— DP

    题目链接:http://codeforces.com/gym/101147/problem/H 题解: 单纯的三维DP.可用递推或记忆化搜索实现. 学习:开始时用记忆化搜索写,dp[]初始化为0,结果 ...

  3. Appium——Error while obtaining UI hierarchy XML file:com.android.ddmlib.SyncException:

    使用uiautomatorviewer查看页面元素时报这个错误,解决办法 cmd: adb root ok  解决

  4. Appium——WebDriverException: Message: A new session could not be created.

    每次启动完一次脚本再次启动的时候会报这个错误,会话没有被创建 查看了下Appium日志: 查看下设备是否准备好,我用的是模拟器,就cmd下查看下设备: 可以看到设备掉线了... 好吧,重启下设备 脚本 ...

  5. 如何刷新本地的DNS缓存?

    为了提高网站的访问速度,系统会在成功访问某网站后将该网站的域名.IP地址信息缓存到本地.下次访问该域名时直接通过IP进行访问.一些网站的域名没有变化,但IP地址发生变化,有可能因本地的DNS缓存没有刷 ...

  6. AtCoder Grand Contest 012 D:Colorful Balls

    题目传送门:https://agc012.contest.atcoder.jp/tasks/agc012_d 题目翻译 给你一排一共\(N\)个球,每个球有一个颜色\(c_i\)和一个重量\(w_i\ ...

  7. bzoj4247挂饰——DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4247 就是01背包: 把挂钩数限制在n以内,因为不需要更多,而这会带来一些问题,就是有很多挂 ...

  8. Azure AD (6) 停止Azure AD Connect Sync同步,并删除自定义域名

    <Windows Azure Platform 系列文章目录> 如果你已经了解了我之前写的文章:Azure AD (5) 在单一目录下,使用Azure AD单点登录 应该对使用Azure ...

  9. HDU3466(01背包变种)

    Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  10. webpack 小demo

    1 安装node.js 2 安装cnpm 3 安装webpack cnpm install --save-dev webpack 对于大多数项目,我们建议本地安装.这可以使我们在引入破坏式变更的依赖时 ...