- 浏览: 240054 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
akka_li:
学习了!但是为什么后续的没有了?!
EJB4:RMI和RMI-IIOP -
springaop_springmvc:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene学习笔记(一)Lucene入门实例 -
qepipnu:
求solr 客户端 jar包
Solr学习笔记(三)Solr客户端开发实例 -
zhangbc:
是这问题,赞!
Oracle Start Up 2 Oracle 框架构件、启动、解决一个问题 -
feilian09:
查询 select hibernate jdbc 那个效率快
Hibernate,JDBC性能探讨
SQL Join
SQL Join are used very frequently to query data from 2 or more tables, base on the relationship between certain columns in these tables.
Tables in a certain database are offen related to each other with keys.
A primary key is a column(or a combination of columns) with a unique value for each row, each primary key value must be unique within the table. The purpose is to bind data together, across tables, without repeating all of the data in every table.
Here are 2 demo tables: HEADER and ORDERHEADER
HID | STATUS | STATUSCHANGED | ORDERHEADER_HID |
1 | Submitted | 02-7 -11 09.28.42.812000 | 1 |
2 | Cancel | 02-7 -11 09.28.42.812000 | 2 |
3 | Complete | 02-7 -11 09.28.42.812000 | 3 |
Note that the "HID" column is primary key in the "HEADER" table. This means that NO two rows can have the same HID, THE HID dintinguishes two HEADER even if they have the same STATUS or STATUSCHANGED. ORDERHEADER_HID which is the column refer to ORDERHEADER table
Next, we have the ORDERHEADER table:
HID | CUSTOMERREF | ORDERREF |
1 | Customer1 | order0 |
2 | Customer2 | order1 |
3 | Customer3 | order2 |
Note that the HID column is the primary key in the "ORDERHEADER" table either. and CUSTOMERREF and ORDERREF is ORDERHEADER's attributes.
Notice That: the relation between 2 tables above is the column "ORDERHEADER_HID"
Different SQL Joins
Before we starting our sql examples, we will list the types of Join you can use, and the fifference between them.
INNER JOIN: Return rows when there is at least one matchs in both tables.
LEFT JOIN: Return all rows from the left table, even if there are no matches in the right table.
RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table.
FULL JOIN: Return rows when there is a match in one of the tables.
SQL INNER JOIN
The SQL INNER JOIN keyword return rows when there is at least on matchs in both tables.
The SQL INNER JOIN Syntax:
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
The SQL INNER JOIN examples(base on above HEADER and ORDERHEADER tables):
SELECT ORDERHEADER.CUSTOMERREF, ORDERHEADER.ORDERREF, HEADER.STATUS HEADER_STATUS, HEADER.HID HEADER_HID FROM ORDERHEADER INNER JOIN HEADER ON ORDERHEADER.HID = HEADER.ORDERHEADER_HID;
The Results:
CUSTOMERREF | ORDERREF | HEADER_STATUS | HEADER_HID |
Customer1 | order1 | Submitted | 1 |
Customer2 | order2 | Cancel | 2 |
Customer3 | order3 | Complete | 3 |
The SQL INNER JOIN keyword return rows when there is at least on matchs in both tables, if there are rows in ORDERHEADER table that do not have natchs in 'HEADER', those rows do not listed.
SQL LEFT JOIN
The SQL LEFT JOIN keyword return all rows from left table(table_name1), even if there are no matches in the right table(table_name2).
The SQL LEFT JOIN Syntax:
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
The SQL LEFT JOIN Examples:
SELECT ORDERHEADER.CUSTOMERREF, ORDERHEADER.ORDERREF, HEADER.STATUS HEADER_STATUS, HEADER.HID HEADER_HID FROM ORDERHEADER LEFT JOIN HEADER ON ORDERHEADER.HID = HEADER.ORDERHEADER_HID ORDER BY HEADER_HID DESC;
The Results:
CUSTOMERREF | ORDERREF | HEADER_STATUS | HEADER_HID |
Customer3 | order3 | Complete | 3 |
Customer2 | order2 | Cancel | 2 |
Customer1 | order3 | Submitted | 1 |
The SQL LEFT JOIN keyword return all rows from left table(ORDERHEADER), even if there are no matches in the right table(HEADER).
SQL RIGHT JOIN
The SQL RIGHT JOIN keyword return rows from the right table(table_name2), even if there are no matches in the left table(table_name1).
SQL RIGHT JOIN Syntax:
SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
The SQL RIGHT JOIN example;
SELECT ORDERHEADER.CUSTOMERREF, ORDERHEADER.ORDERREF, HEADER.STATUS HEADER_STATUS, HEADER.HID HEADER_HID FROM ORDERHEADER RIGHT JOIN HEADER ON ORDERHEADER.HID = HEADER.ORDERHEADER_HID ORDER BY HEADER_HID DESC;
The Results:
CUSTOMERREF | ORDERREF | HEADER_STATUS | HEADER_HID |
Customer3 | order3 | Complete | 3 |
Customer2 | order2 | Cancel | 2 |
Customer1 | order3 | Submitted | 1 |
The SQL RIGHT JOIN keyword return rows from the right table(HEADER), even if there are no matches in the left table(ORDERHEADER).
SQL FULL JOIN
The SQL FULL JOIN Keyword return all rows when there is a match in one of the tables
The SQL FULL JOIN Syntax:
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
The SQL FULL JOIN Example:
SELECT ORDERHEADER.CUSTOMERREF, ORDERHEADER.ORDERREF, HEADER.STATUS HEADER_STATUS, HEADER.HID HEADER_HID FROM ORDERHEADER FULL JOIN HEADER ON ORDERHEADER.HID = HEADER.ORDERHEADER_HID ORDER BY HEADER_HID DESC;
The Results:
CUSTOMERREF | ORDERREF | HEADER_STATUS | HEADER_HID |
Customer3 | order3 | Complete | 3 |
Customer2 | order2 | Cancel | 2 |
Customer1 | order3 | Submitted | 1 |
The FULL JOIN keyword returns all the rows from the left table (ORDERHEADER), and all the rows from the right table (HEADER). If there are rows in "ORDERHEADER" that do not have matches in "HEADER", or if there are rows in "HEADER" that do not have matches in "ORDERHEADER", those rows will be listed as well.
END: A More Complex SQL Query Example:
Base on the above HEADER and ORDERHEADER tables, Search the all ORDERHEADER's Orderrefs Which ORDERHEADER Orderref's value start with order0, or ORDERHEADER Orderref's value equal order1 or order2, and HEADER's STATUS's value is one of Submitted,Cancel,Complete, and HEADER's STATUSCHANGED before '2011-12-14 07:31:00'?
The Answer:
SELECT ORDERHEADER.ORDERREF FROM ORDERHEADER INNER JOIN HEADER ON ORDERHEADER.HID = HEADER.ORDERHEADER_HID WHERE (ORDERHEADER.ORDERREF = 'order1' OR ORDERHEADER.ORDERREF LIKE 'order0%' OR ORDERHEADER.ORDERREF = 'order2') AND (HEADER.STATUS = 'Cancel' OR HEADER.STATUS = 'Submitted' OR HEADER.STATUS = 'Complete') AND (HEADER.STATUSCHANGED < to_date('2011-12-14 07:31:00', 'yyyy-mm-dd hh24:mi:ss'));
发表评论
-
Oracle - Add Exist Validation Before Create Table
2011-11-07 13:49 1455Usually we need to check the ta ... -
Oracle - An Managing Lob examples
2011-10-30 17:28 1444I met a request: I need to read ... -
PL/SQL Studing Notes
2011-10-20 21:48 1384As an extension of native ... -
一组Linux命令
2011-09-29 13:09 1476今天做测试发现Oracle服务器磁盘使用率达到100%导致Or ... -
Thinking in JDBC
2011-09-22 20:56 1876This blog will beas on a series ... -
Oracle Reference Exception Gallery
2011-07-05 22:28 1638The Following Exception is real ... -
Windows批处理脚步实例-创建Oracle数据库用户并向该用户添加数据
2010-12-11 09:25 3446Windows批处理使用方便、 ... -
Oracle starting up 5: Oracle 10g在WINDOWS服务中有5个Oracle服务项及解决与服务项相关的几个问题
2010-10-10 17:25 2342在Windows下安装Oracle 10g,安装完后在WIND ... -
Oracle starting up 5: Oracle数据库基础(续)
2010-10-07 14:15 0通用函数; 通用函数用于任何类型数据(包括空值) ... -
Oracle starting up 4: Oracle 10g 客户端 enterprise manager console 消失问题
2010-10-06 15:20 4319在家装了台服务器,因为家里电脑不行,所以服务器和客 ... -
Oracle Start Up 3:Oracle数据库基础
2010-10-05 20:17 22091. 创建TableSpace、用户及给用户分派权限 ... -
Oracle Start Up 2 Oracle 框架构件、启动、解决一个问题
2010-10-02 14:07 34862Warming Up: 本文 ... -
Oracle Start Up 1: 几个概念和Oracle数据库的物理结构和逻辑结构
2010-09-29 23:31 2050Oracle 基本概念 数据库(Database) ... -
Oracle 连接错误;ORA-27101: shared memory realm does not exist
2010-09-28 14:27 26358XP下安装Oracle10g 昨天下午刚安装完可以连接(Sq ... -
SQL Server 2005 dev 学习(1)
2010-09-26 15:14 1985关键字:SqlServer2005Dev版本安装 SQL Se ... -
Cassandra Dev 3:Cassandra 应用之CassandraAppender
2010-08-13 13:59 2095本文的目的是展示 ... -
Cassandra Dev 2: Cassandra入门(续) - Cassandra Cluster
2010-08-09 13:56 57945. Cassandra CLI 一般数据库服务器都会提供一 ... -
Cassandra Dev 1: Cassandra 入门
2010-08-06 17:55 4613最近, Cassandra 绝对是一个比较前端的话题 ...
相关推荐
本书的配套文件《Studying-Embedded-Linux-Using-MiniGUI.pdf》很可能是详细的教程或指南,涵盖了理论知识和实践案例。而《www.pudn.com.txt》可能是一个链接或者参考资源,提供了更多的学习材料或下载地址。 在...
在"Studying-Haskell-for-a-great-good"的学习资源中,你将深入理解这种高级编程语言的核心概念,开启一段提升编程思维的旅程。 1. **纯函数式编程**:Haskell 的核心特性是它的纯函数式编程模型。这意味着函数不...
在这个“studying-html-css”项目中,我们将深入研究如何有效地使用这两种语言。 首先,HTML是用于创建网页结构的语言,它定义了网页上的各个元素,如标题、段落、链接、图像等。基本HTML的构成通常包括以下部分: ...
这个名为“App-for-Studying-Organizational-Behavior-on-Social-Media”的项目,正是为了利用大数据的力量来探索和理解组织在社交媒体上的行为模式。这个应用的创建者在《社会学方法与研究》的文章“对大数据进行...
在这个名为“Studying-Covid-19.-大数据挖掘”的项目中,研究者采用了一种综合的方法,利用大数据工具来分析和理解Covid-19(新冠病毒)的传播模式、影响以及相关趋势。项目的核心是使用Google合作平台,这可能指的...
项目重点: 该项目旨在学习如何扩展Websocket应用程序。...运行项目的说明: 克隆项目基于.env.example文件创建文件.env 。 执行命令: docker-compose build && docker-compose up -d 执行完上面的命令后,应用程序将...
在JavaScript编程语言中,"地图"(Map)、"过滤器"(Filter)和"减少"(Reduce)是三种非常重要的数组方法。它们是函数式编程的核心概念,用于处理和转换数组数据,使得代码更加简洁、易读且可维护。...
自述文件该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...
matlab代码中向量的点乘 该存储库用于存储我在Andrew NG的本机器学习课程中对python编程作业的答案。 原始配饰可以在这里找到: Python编程作业-指导(来自原始存储库) 该存储库包含Andrew Ng教授教的编程作业的...
matlab流量代码程序 答四史题目脚本 made by wql v1.2.5 免责声明:代码内容不得用于商业用途,仅做学习交流。 同时,本代码为自动刷分的脚本,请不要滥用该技术。由此产生的任何形式的个人损失,本人不负任何责任。...
语言:English 日本JLPT学习卡 日语JLPT学习记忆卡/英文版此扩展程序将在网页右下方显示一个小闪存卡,并在您的学习中显示日语(JLPT N5-N1),发音和英语含义。 希望您喜欢学习日语。 ***捐赠***我已计划升级此扩展...
### Adomian Decomposition Algorithm在非齐次分数阶忆阻器基Chua系统的应用 #### 概述 本文探讨了Adomian分解算法在非齐次分数阶忆阻器基Chua系统中的应用。该研究关注于利用Adomian分解算法求解这类系统的数值...
总之,这份"java-studying-material.rar"压缩包是一个全面的Java学习资源库,涵盖了从基础到高级的众多主题,对于渴望在Java编程道路上不断进步的人来说,是一份宝贵的资料。通过系统地学习和实践,可以有效地提升...
UVM(Universal Verification Methodology,通用验证方法论)是一种基于SystemVerilog的验证框架,用于设计和验证硬件系统。在本笔记中,我们将探讨UVM的基础知识,包括如何构建一个简单的UVM平台以及其核心组件的...
介绍意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在
在深入探讨C++编程语言的知识点之前,先要理解标题"studying-cpp:回购我的C++学习"的含义。这可能表示一个个人的学习过程,其中"回购"可能指的是回顾和巩固已经学习过的C++知识。描述中提到的"进步"和"我已经学到的...
5个基本的Annotation如下:@Override用来指定子类必须覆盖父类的方法class Apple extends Fruit{编译上面的程序,可能丝毫