- 浏览: 236193 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1405Usually we need to check the ta ... -
Oracle - An Managing Lob examples
2011-10-30 17:28 1382I met a request: I need to read ... -
PL/SQL Studing Notes
2011-10-20 21:48 1326As an extension of native ... -
一组Linux命令
2011-09-29 13:09 1426今天做测试发现Oracle服务器磁盘使用率达到100%导致Or ... -
Thinking in JDBC
2011-09-22 20:56 1817This blog will beas on a series ... -
Oracle Reference Exception Gallery
2011-07-05 22:28 1587The Following Exception is real ... -
Windows批处理脚步实例-创建Oracle数据库用户并向该用户添加数据
2010-12-11 09:25 3396Windows批处理使用方便、 ... -
Oracle starting up 5: Oracle 10g在WINDOWS服务中有5个Oracle服务项及解决与服务项相关的几个问题
2010-10-10 17:25 2292在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 4261在家装了台服务器,因为家里电脑不行,所以服务器和客 ... -
Oracle Start Up 3:Oracle数据库基础
2010-10-05 20:17 21281. 创建TableSpace、用户及给用户分派权限 ... -
Oracle Start Up 2 Oracle 框架构件、启动、解决一个问题
2010-10-02 14:07 34663Warming Up: 本文 ... -
Oracle Start Up 1: 几个概念和Oracle数据库的物理结构和逻辑结构
2010-09-29 23:31 1983Oracle 基本概念 数据库(Database) ... -
Oracle 连接错误;ORA-27101: shared memory realm does not exist
2010-09-28 14:27 26274XP下安装Oracle10g 昨天下午刚安装完可以连接(Sq ... -
SQL Server 2005 dev 学习(1)
2010-09-26 15:14 1938关键字:SqlServer2005Dev版本安装 SQL Se ... -
Cassandra Dev 3:Cassandra 应用之CassandraAppender
2010-08-13 13:59 2034本文的目的是展示 ... -
Cassandra Dev 2: Cassandra入门(续) - Cassandra Cluster
2010-08-09 13:56 57235. Cassandra CLI 一般数据库服务器都会提供一 ... -
Cassandra Dev 1: Cassandra 入门
2010-08-06 17:55 4563最近, Cassandra 绝对是一个比较前端的话题 ...
相关推荐
嵌入式系统开发的入门教材Studying-Embedded-Linux-Using-MiniGUI.rar
Adomian Decomposition Algorithm for Studying Incommensurate Fractional-Order Memristor-Based Chua’s System
好好学习 Haskell 哇耶!
项目重点: 该项目旨在学习如何扩展Websocket应用程序。...运行项目的说明: 克隆项目基于.env.example文件创建文件.env 。 执行命令: docker-compose build && docker-compose up -d 执行完上面的命令后,应用程序将...
quartus_ii_常见的19个错误、28个警告_Studying……-CSDN博客.html
学习地图过滤器减少JS 学习地图过滤器减少JS
自述文件该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...
matlab代码中向量的点乘 该存储库用于存储我在Andrew NG的本机器学习课程中对python编程作业的答案。 原始配饰可以在这里找到: Python编程作业-指导(来自原始存储库) 该存储库包含Andrew Ng教授教的编程作业的...
应用程序研究社会媒体上的组织行为这段代码实现了我在《社会学方法与研究》中的文章“对大数据进行描述”中描述的技术:
matlab流量代码程序 答四史题目脚本 made by wql v1.2.5 免责声明:代码内容不得用于商业用途,仅做学习交流。 同时,本代码为自动刷分的脚本,请不要滥用该技术。由此产生的任何形式的个人损失,本人不负任何责任。...
语言:English 日本JLPT学习卡 日语JLPT学习记忆卡/英文版此扩展程序将在网页右下方显示一个小闪存卡,并在您的学习中显示日语(JLPT N5-N1),发音和英语含义。 希望您喜欢学习日语。 ***捐赠***我已计划升级此扩展...
学习HTML和CSS 在平台上HTML和CSS入门课程中开发的简单网站。 基本HTML ; 基本CSS ;
使用Google协作进行有关Covid-19的大数据挖掘。 我使用python,pandas和spark来完成此项目。
(Exam 70-448) Microsoft SQL Server 2008, Business Intelligence Development and Maintenance. This is the Microsoft official book for studying the exam 70-448.
本人看视频记的笔记,有截图和文字。是UVM的基础知识,可以对UVM有个初步了解。希望对初学UVM基础的人有帮助。建议可以和张强的《UVM实战》一起学习。 内容: 1构建一个简单的UVM平台 2 UVM平台组件 ...
java学习资料ppt,包括程序设计基础及一些程序设计
介绍意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在
11.A)She is studying at the American Language Institute. B)She is taking three classes at the university. C)She is a part-time student. D)She is surprised.
studying-java