1. join on 与数学原理
  1. pgsql切换数据库
  2.  
  3. 直接输入 \C youdatabasename 即可
  4.  
  5. \d 表名 —— 得到表结构
  6.  
  7. select * from tablename查看表的数据

相信有不少人读一遍两边都不懂,

A集合有n行,x列,B集合有m行,y列   那么笛卡尔之积就是  一个(m*n)行,(x+y)列

把复杂的问题简单化,把深奥的问题通俗化,那就是教育家,哈哈哈请叫我教育家:

  1. create table tbl_course(
  2. course_id bigint not null primary key,
  3. course_name varchar(12) not null
  4. );
  5.  
  6. create table tbl_student(
  7. stu_id bigint not null,
  8. stu_name varchar(12),
  9. constraint pk_tbl_student_stu_id primary key(stu_id)
  10. );
  11.  
  12. create table tbl_student_course(
  13. stu_id bigint not null,
  14. course_id bigint not null,
  15. constraint pk_tbl_student_course_stu_id_course_id primary key(stu_id,course_id),
  16. constraint fk_tbl_student_course_stu_id foreign key(stu_id) references tbl_student(stu_id) ,
  17. constraint fk_tbl_student_course_course_id foreign key(course_id) references tbl_course(course_id)
  18. );
  1. 插入测试数据:
  2. insert into tbl_course values(1,'高等数学'),(2,'大学英语'),(3,'大学物理'),(4,'电影欣赏');
  3.  
  4. insert into tbl_student values(1,'张三'),(2,'李四'),(3,'王五'),(4,'麻子');
  5.  
  6. insert into tbl_student_course values (1,2),(1,4),(2,4),(3,4);
  1. select * from tbl_course ,tbl_student,tbl_student_course;//笛卡尔之积

  1. 没有什么意义,因为只有四条数据,除非加上分组,去重才会有意义
  1. 二.内连接
  2. JOIN连接分为内连接和外连接,而外连接又分为左外连接,右外连接,全外连接。

  1. 内连接只要中间那一部分
  1. 三.左外连接
  2.  
  3. 左外连接其实是一个内连接然后加上左表独有的数据行,结果集中右表的字段自动补充NULL
  4.  
  5. LEFT OUTTER JOIN ,其中OUTER可以省略。



  1. select * from tbl_student left join tbl_student_course using(stu_id) left join tbl_course using(course_id);
    //以左边学生为准,包括未选课的4号学生麻子


  1. 四.右外连接
  2. 右外连接其实是一个内连接然后加上右表独有的数据行,结果集中左表的字段自动补充NULL

  1. RIGHT OUTTER JOIN ,其中OUTER可以省略。
    //以右边的表为准,左边不足的为空,和mysql很相似



  1.  
  1. 五.全外连接
  2. 全外连接其实是一个内连接然后加上左表和右表独有的数据行,左表独有的数据行右表的字段补充NULL,右表独有的数据行左表字段补充NULL





  1. 查询没有选课的学生:

  1.  

  1.  

  1. 查询只在右表中存在的数据
    查找没有被选择的课程



  1.  
  1. 查询没有选课的学生和没有被选的课程

  1. 就是三表联查 选择彼此都没有的那部分

  1.  

pgsql基本介绍的更多相关文章

  1. pgsql日期树数值类型指定与介绍

    http://www.postgres.cn/docs/9.3/datatype-net-types.html#DATATYPE-INET  文档有详细的pgsql介绍 使用案例: SELECT to ...

  2. Postgres数据库基本介绍

    最近一直在做一个和PostgreSQL数据库相关的项目,把自己在这个过程中学习的知识记录下来.关于PostgreSQL数据库网上已经有太多的相关介绍了,为了博文的系统性还是先看一下维基百科对Postg ...

  3. 第1 章MySQL 基本介绍

    第 1 章 MySQL 基本介绍   前言: 作为最为流行的开源数据库软件之一,MySQL 数据库软件已经是广为人知了.但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介 ...

  4. API网关系列之Kong的介绍以及安装

    一.API网关产生背景 在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器 ...

  5. .NETCore 新型 ORM 功能介绍

    简介 FreeSql 是一个功能强大的 .NETStandard 库,用于对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.6.1+. 定义 IFre ...

  6. .netcore2.0+pgsql 脚手架

    mystaging介绍 这是一个 .netcore+pgsql 的脚手架,可以一键生成实体对象和业务层接口,让开发人员无需关注底层变动,专注编写业务代码,它可以让你使用 .netcore2.0的新特性 ...

  7. Centos 7 Puppet之foreman介绍安装测试

    一.简介 1.前言(引用一下网上的资料) 随着企业的 Linux 系统数量越来越多,管理问题便成为一个相对麻烦并需要急 迫解决的问题,这里有 2 个 Key Message:1)统一管控体系非常重要, ...

  8. .Net Core应用框架Util介绍(二)

    Util的开源地址 https://github.com/dotnetcore/util Util的开源协议 Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util ...

  9. zabbix监控-基本原理介绍

    一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...

随机推荐

  1. 算法leetcode二分算法

    二分算法通常用于有序序列中查找元素: 有序序列中是否存在满足某条件的元素: 有序序列中第一个满足某条件的元素的位置: 有序序列中最后一个满足某条件的元素的位置. 思路很简单,细节是魔鬼. 一.有序序列 ...

  2. CF833B-线段树优化DP

    CF833B-线段树优化DP 题意 将一个长为\(n\)的序列分成\(k\)段,每段贡献为其中不同数字的个数,求最大贡献和. 思路 此处感谢@gxy001 聚铑的精彩讲解 先考虑暴力DP,可以想到一个 ...

  3. 《Node+MongoDB+React 项目实战开发》已出版

    前言 从深圳回长沙已经快4个月了,除了把车开熟练了外,并没有什么值得一提的,长沙这边要么就是连续下一个月雨,要么就是连续一个月高温暴晒,上班更是没啥子意思,长沙这边的公司和深圳落差挺大的,薪资也是断崖 ...

  4. PDMan使用

    场景: 这几天项目要完结交付,需要补很多文档.此时发现甲方要求提供数据库设计文档,尽管我觉得他们不会看,但是人家要求,还是补一下吧!时间紧迫,要赶出整个项目的数据库设计文档比较麻烦,每个两三天不行.于 ...

  5. SaltStack 任意文件读写漏洞(CVE-2020-11652)

    漏洞影响 SaltStack < 2019.2.4 SaltStack < 3000.2 同CVE-2020-11651 poc git clone https://github.com/ ...

  6. 创建型-单例模式 SingletonPattern

    单例模式 Singleton 保证一个类只有一个实例的实现方法 给其他类提供一个全局的访问点. 由自己创建自己的唯一实例 实现 实现方法分为饿汉式(线程安全).懒汉式(线程不安全).懒汉式(lock+ ...

  7. SQL排序包含数字、字母和中文处理

    --模拟数据 SELECT * INTO #temp FROM ( SELECT 1 AS id, 'C101' AS sort UNION ALL SELECT 2 AS id, 'B101' AS ...

  8. linux下编译常见错误

    1.浮点数例外:除数为0 2.已杀死:空间过大 3.已放弃:时间过长 4.段错误:递归 / 循环出不来

  9. FreeRTOS-04-内核控制函数+时间管理函数

    说明 本文仅作为学习FreeRTOS的记录文档,作为初学者肯定很多理解不对甚至错误的地方,望网友指正. FreeRTOS是一个RTOS(实时操作系统)系统,支持抢占式.合作式和时间片调度.适用于微处理 ...

  10. Java 在Word中创建多级项目符号列表和编号列表

    本文分享通过Java程序代码在Word中创建多级项目符号列表和编号列表的方法.程序运行环境如下: IntelliJ IDEA 2018(JDK 1.8.0) Word 2013 Word Jar包:F ...