join on 与数学原理
pgsql切换数据库

直接输入 \C  youdatabasename  即可

\d 表名 —— 得到表结构

select * from tablename查看表的数据

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

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

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

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

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

内连接只要中间那一部分
三.左外连接

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

LEFT OUTTER JOIN ,其中OUTER可以省略。



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


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

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




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





查询没有选课的学生:



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




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

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


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. ecshop二次开发笔记--订单表结构ecs_order_info说明

    -- 表的结构 `ecs_order_info`  CREATE TABLE IF NOT EXISTS `ecs_order_info` (  `order_id` mediumint(8) uns ...

  2. 医疗器械软件产品经理必读的法规及标准-YY/T0664(一)

    医疗器械软件产品经理必读的法规及标准-YY/T0664(一) 医疗器械软件的产品经理,需要熟读医药行业标准,在软件设计开发的整个生存周期过程中,我们需要根据<YY/T 0664 医疗器械软件 软 ...

  3. 《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  4. XIN队算法

    XIN队算法 注:名称由莫队算法改编而来 从luogu搬过来了... \(newly\;upd:2021.7.8\) \(newly\;upd:2021.6.6\) OI至高算法,只要XIN队算法打满 ...

  5. xhell、xftp、putty使用教程

    作为远程登陆工具,上传代码登陆服务器工具 1.XSHELL Xshell是远程连接Linux服务器的工具,基于SSH协议,使用它可以更加方便的操作Linux操作系统,在刚使用时可能需要提前简单的设置下 ...

  6. Python基础之获取路径与切换路径

    一直以为我写了关于路径有关的博客,看了一圈才发现没写,那么现在就来整理下. 一.获取当前路径 os.getcwd() 二.获取当前文件路径:(__file__是当前执行文件) os.path.absp ...

  7. Table类

    Interpreter类, class Interpreter: public CC_INTERP_ONLY(CppInterpreter) NOT_CC_INTERP(TemplateInterpr ...

  8. 解决 Flask 项目无法用 .env 文件中解析的参数设置环境变量的错误

    在 Windows 上启动 Flask 项目时,工作目录有 UTF-8 编码的 .env 文件,里面配置的环境变量在 Python2 中识别为 Unicode 类型,导致下述错误: * Serving ...

  9. 电脑软件安装过程文档.BA

    MD 01-打印并阅读-电脑软件安装过程文档.BAT-即此批处理脚本文档MD 02-阅读-电脑软件安装经验教训文档.DOCX-MD 03-制作-杏雨梨云USB维护系统2019中秋版之国庆更新-可启动U ...

  10. ERROR: database "db" is being accessed by other users

    执行DROP DATABASE testdb;的时候提示: ERROR: database "testdb" is being accessed by other users DE ...