数据库的join查询
2024-10-21 15:27:08
假设我们有两张表。
- Table A 是左边的表。
- Table B 是右边的表。
其各有四条记录,其中有两条记录是相同的,如下所示:
id name id name
-- ---- -- ----
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
下面让我们来看看不同的Join会产生什么样的结果。
note: left outer join是左外连接,left outer join也可以写成left join,因为join默认是outer属性的。
SELECT * FROM TableA Inner join |
|
SELECT * FROM TableA Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。 |
|
SELECT * FROM TableA Left outer join 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。 |
|
SELECT * FROM TableA 产生在A表中有而在B表中没有的集合。 |
|
SELECT * FROM TableA 产生A表和B表都没有出现的数据集。 |
还需要注册的是我们还有一个是“交差集” cross join, 这种Join没有办法用文式图表示,因为其就是把表A和表B的数据进行一个N*M的组合,即笛卡尔积。表达式如下:
SELECT * FROM TableA
CROSS JOIN TableB
这个笛卡尔乘积会产生 4 x 4 = 16 条记录,一般来说,我们很少用到这个语法。但是我们得小心,如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。
最新文章
- JavaScript 模板引擎实现原理解析
- C++ ODB 框架(未实践使用)
- Windows 8.1——将网站固定到开始菜单,自定义图标、颜色和Windows推送通知
- 组合逻辑的Glitch与时序逻辑的亚稳态
- 测试post
- gdb之watch命令
- js和jQuery创建元素和把元素插入到文档中所用的方法
- UVA 12647 	Balloon
- C#:实体类中做数据验证
- Python的html和xml解析库Beautiful Soup
- 学习笔记:javascript内置对象:字符串对象
- jquery.imagezoom.js制作鼠标悬停图片放大镜特效、参数和最简教程
- iota
- Grails 第二课
- spring mvc 解决跨域问题
- #PHP# 华为云 API 方式发送短信
- problem during schema drop, statement alter table ACT_RU_VARIABLE
- 11g OCM自动打补丁
- kmplayer加速播放视频(转)
- Ceph的工作原理及流程
热门文章
- 生成JNI的DLL时提示找不到jni.h的解决的方法Cannot open include file: &;#39;jni.h&;#39;: No such file or directory
- 第6章 网页解析器和BeautifulSoup第三方插件
- Lumen开发:lumen源码解读之初始化(4)——服务提供(ServiceProviders)与路由(Routes)
- 设置tableView背景颜色
- Git客户端搭建环境(Windows系统)的使用
- spider_action
- Struts2学习总结(完整版)
- 阿里云修改centos7主机名
- SVN代码merge
- python selenium cookie 登录