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。





查询没有选课的学生:



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




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

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


最新文章

  1. ASP.NET Web API Model-ValueProvider
  2. Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
  3. apache httpclient cache 实现可缓存的http客户端
  4. javascript之小积累-.-添加form表单查询的enter键支持
  5. WPF TextBox自动滚动到最户一行
  6. HDU 4651 Partition(整数拆分)
  7. SAP MRP的计算步骤
  8. Zend Server更新至6.2版本——虚拟主机全方位管理
  9. CLR执行模型与常见的几个概念
  10. [转]python执行bash指令,如果指令返回错误,如何优雅的结束python程序
  11. iframe兄弟间和iframe父子间的值传递问题
  12. Shiro的认识
  13. angular1时间控件之时间比较大小,比如入住日期和离店日期,入住不能晚于离店时间
  14. python3 HTTP Error 403:Forbidden
  15. git 快照及分支
  16. servlet、servlet容器和web应用程序的关系
  17. D14——C语言基础学PYTHON
  18. [android] 帧动画和补间动画
  19. Java 如何实现在线预览文档及修改(Office文件)
  20. Azure 中快速搭建 FTPS 服务

热门文章

  1. springboot+mybatis+mysql 利用mybatis自动生成sql语句
  2. C++五十一篇 -- VS2017开发人员新闻无法联网
  3. Tree Widget -- 基本方法
  4. Django关闭html转义
  5. synchronized 优化手段之锁膨胀机制!
  6. Maven-内部多个项目依赖自动升级版本的部署
  7. window.location.href下载文件,文件名中文乱码处理
  8. PLSQL编程及存储过程的创建
  9. Golang语言系列-07-函数
  10. Python语言系列-03-文件操作和函数