<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FTable_Joins%2FIntroduction</id>
		<title>Oracle PL/SQL Tutorial/Table Joins/Introduction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FTable_Joins%2FIntroduction"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Table_Joins/Introduction&amp;action=history"/>
		<updated>2026-04-04T04:01:35Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Table_Joins/Introduction&amp;diff=2749&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Table_Joins/Introduction&amp;diff=2749&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Table_Joins/Introduction&amp;diff=2750&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Table_Joins/Introduction&amp;diff=2750&amp;oldid=prev"/>
				<updated>2010-05-26T10:03:49Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== autotrace ansi full outer join==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable as&lt;br /&gt;
  2  select  &amp;quot;myTable&amp;quot; as C1&lt;br /&gt;
  3   ,OBJECT_NAME&lt;br /&gt;
  4   ,SUBOBJECT_NAME&lt;br /&gt;
  5   ,OBJECT_ID&lt;br /&gt;
  6   ,DATA_OBJECT_ID&lt;br /&gt;
  7   ,OBJECT_TYPE&lt;br /&gt;
  8   ,CREATED&lt;br /&gt;
  9   ,LAST_DDL_TIME&lt;br /&gt;
 10   ,TIMESTAMP&lt;br /&gt;
 11   ,STATUS&lt;br /&gt;
 12   ,TEMPORARY&lt;br /&gt;
 13   ,GENERATED&lt;br /&gt;
 14   ,SECONDARY&lt;br /&gt;
 15  from dba_objects;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myTable2 as&lt;br /&gt;
  2  select  &amp;quot;myTable2&amp;quot; as C1&lt;br /&gt;
  3   ,OBJECT_NAME  || &amp;quot;myTable2&amp;quot; as object_name&lt;br /&gt;
  4   ,SUBOBJECT_NAME&lt;br /&gt;
  5   ,OBJECT_ID&lt;br /&gt;
  6   ,DATA_OBJECT_ID&lt;br /&gt;
  7   ,OBJECT_TYPE&lt;br /&gt;
  8   ,CREATED&lt;br /&gt;
  9   ,LAST_DDL_TIME&lt;br /&gt;
 10   ,TIMESTAMP&lt;br /&gt;
 11   ,STATUS&lt;br /&gt;
 12   ,TEMPORARY&lt;br /&gt;
 13   ,GENERATED&lt;br /&gt;
 14   ,SECONDARY&lt;br /&gt;
 15  from dba_objects&lt;br /&gt;
 16  where rownum &amp;lt;= 10000;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create index myTable_object_id on myTable (object_id);&lt;br /&gt;
Index created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create index myTable2_object_id on myTable2 (object_id);&lt;br /&gt;
Index created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; analyze table myTable compute statistics;&lt;br /&gt;
Table analyzed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; analyze table myTable2 compute statistics;&lt;br /&gt;
Table analyzed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set autotrace TRACEONLY&lt;br /&gt;
SQL&amp;gt; set timing on&lt;br /&gt;
SQL&amp;gt; select *&lt;br /&gt;
  2  from myTable a, myTable2 b&lt;br /&gt;
  3  where a.object_id = b.object_id(+)&lt;br /&gt;
  4  union&lt;br /&gt;
  5  select *&lt;br /&gt;
  6  from myTable a, myTable2 b&lt;br /&gt;
  7  where a.object_id(+) = b.object_id;&lt;br /&gt;
13158 rows selected.&lt;br /&gt;
Elapsed: 00:00:00.62&lt;br /&gt;
Execution Plan&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
Plan hash value: 4186416997&lt;br /&gt;
---------------------------------------------------------------------------------------------&lt;br /&gt;
| Id  | Operation                      | Name               | Rows  | Bytes |TempSpc| Cost  |&lt;br /&gt;
---------------------------------------------------------------------------------------------&lt;br /&gt;
|   0 | SELECT STATEMENT               |                    | 23158 |  4296K|       | 47039 |&lt;br /&gt;
|   1 |  SORT UNIQUE                   |                    | 23158 |  4296K|    10M| 47039 |&lt;br /&gt;
|   2 |   UNION-ALL                    |                    |       |       |       |       |&lt;br /&gt;
|   3 |    NESTED LOOPS OUTER          |                    | 13158 |  2441K|       | 26343 |&lt;br /&gt;
|   4 |     TABLE ACCESS FULL          | MYTABLE            | 13158 |  1169K|       |    27 |&lt;br /&gt;
|   5 |     TABLE ACCESS BY INDEX ROWID| MYTABLE2           |     1 |    99 |       |     2 |&lt;br /&gt;
|*  6 |      INDEX RANGE SCAN          | MYTABLE2_OBJECT_ID |     1 |       |       |     1 |&lt;br /&gt;
|   7 |    NESTED LOOPS OUTER          |                    | 10000 |  1855K|       | 20022 |&lt;br /&gt;
|   8 |     TABLE ACCESS FULL          | MYTABLE2           | 10000 |   966K|       |    22 |&lt;br /&gt;
|   9 |     TABLE ACCESS BY INDEX ROWID| MYTABLE            |     1 |    91 |       |     2 |&lt;br /&gt;
|* 10 |      INDEX RANGE SCAN          | MYTABLE_OBJECT_ID  |     1 |       |       |     1 |&lt;br /&gt;
---------------------------------------------------------------------------------------------&lt;br /&gt;
Predicate Information (identified by operation id):&lt;br /&gt;
---------------------------------------------------&lt;br /&gt;
   6 - access(&amp;quot;A&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;=&amp;quot;B&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;(+))&lt;br /&gt;
  10 - access(&amp;quot;A&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;(+)=&amp;quot;B&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;)&lt;br /&gt;
Note&lt;br /&gt;
-----&lt;br /&gt;
   - cpu costing is off (consider enabling it)&lt;br /&gt;
&lt;br /&gt;
Statistics&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
          1  recursive calls&lt;br /&gt;
          0  db block gets&lt;br /&gt;
      43520  consistent gets&lt;br /&gt;
          0  physical reads&lt;br /&gt;
          0  redo size&lt;br /&gt;
    1301014  bytes sent via SQL*Net to client&lt;br /&gt;
      10027  bytes received via SQL*Net from client&lt;br /&gt;
        879  SQL*Net roundtrips to/from client&lt;br /&gt;
          1  sorts (memory)&lt;br /&gt;
          0  sorts (disk)&lt;br /&gt;
      13158  rows processed&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select *&lt;br /&gt;
  2  from myTable a full outer join myTable2 b&lt;br /&gt;
  3  using (object_id);&lt;br /&gt;
13158 rows selected.&lt;br /&gt;
Elapsed: 00:00:00.52&lt;br /&gt;
Execution Plan&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
Plan hash value: 3236823177&lt;br /&gt;
-------------------------------------------------------------------------------------&lt;br /&gt;
| Id  | Operation                      | Name               | Rows  | Bytes | Cost  |&lt;br /&gt;
-------------------------------------------------------------------------------------&lt;br /&gt;
|   0 | SELECT STATEMENT               |                    | 13658 |  4401K| 26365 |&lt;br /&gt;
|   1 |  VIEW                          |                    | 13658 |  4401K| 26365 |&lt;br /&gt;
|   2 |   UNION-ALL                    |                    |       |       |       |&lt;br /&gt;
|   3 |    NESTED LOOPS OUTER          |                    | 13158 |  2441K| 26343 |&lt;br /&gt;
|   4 |     TABLE ACCESS FULL          | MYTABLE            | 13158 |  1169K|    27 |&lt;br /&gt;
|   5 |     TABLE ACCESS BY INDEX ROWID| MYTABLE2           |     1 |    99 |     2 |&lt;br /&gt;
|*  6 |      INDEX RANGE SCAN          | MYTABLE2_OBJECT_ID |     1 |       |     1 |&lt;br /&gt;
|*  7 |    FILTER                      |                    |       |       |       |&lt;br /&gt;
|   8 |     TABLE ACCESS FULL          | MYTABLE2           |   500 | 49500 |    22 |&lt;br /&gt;
|*  9 |     INDEX RANGE SCAN           | MYTABLE_OBJECT_ID  |     1 |    13 |     1 |&lt;br /&gt;
-------------------------------------------------------------------------------------&lt;br /&gt;
Predicate Information (identified by operation id):&lt;br /&gt;
---------------------------------------------------&lt;br /&gt;
   6 - access(&amp;quot;A&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;=&amp;quot;B&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;(+))&lt;br /&gt;
   7 - filter( NOT EXISTS (SELECT /*+ UNNEST */ 0 FROM &amp;quot;MYTABLE&amp;quot; &amp;quot;A&amp;quot; WHERE&lt;br /&gt;
              &amp;quot;A&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;=:B1))&lt;br /&gt;
   9 - access(&amp;quot;A&amp;quot;.&amp;quot;OBJECT_ID&amp;quot;=:B1)&lt;br /&gt;
Note&lt;br /&gt;
-----&lt;br /&gt;
   - cpu costing is off (consider enabling it)&lt;br /&gt;
&lt;br /&gt;
Statistics&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
          1  recursive calls&lt;br /&gt;
          0  db block gets&lt;br /&gt;
      45912  consistent gets&lt;br /&gt;
          0  physical reads&lt;br /&gt;
          0  redo size&lt;br /&gt;
     956084  bytes sent via SQL*Net to client&lt;br /&gt;
      10027  bytes received via SQL*Net from client&lt;br /&gt;
        879  SQL*Net roundtrips to/from client&lt;br /&gt;
          0  sorts (memory)&lt;br /&gt;
          0  sorts (disk)&lt;br /&gt;
      13158  rows processed&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; set timing off&lt;br /&gt;
SQL&amp;gt; set autotrace off&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable2;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Convert subqueries to JOINs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emps (&lt;br /&gt;
  2    emp varchar(30)&lt;br /&gt;
  3   ,title    varchar(30)&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emps VALUES (&amp;quot;Tom&amp;quot;,&amp;quot;Programmer&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emps VALUES (&amp;quot;Jack&amp;quot;,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO emps VALUES (&amp;quot;Mary&amp;quot;,&amp;quot;Technician&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE JobLevel (&lt;br /&gt;
  2    title     varchar(30)&lt;br /&gt;
  3   ,rank    varchar(30)&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO JobLevel VALUES (&amp;quot;Programmer&amp;quot;,&amp;quot;Level1&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO JobLevel VALUES (&amp;quot;Tester&amp;quot;,&amp;quot;Level2&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO JobLevel VALUES (&amp;quot;Technician&amp;quot;,&amp;quot;Level3&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE salary (&lt;br /&gt;
  2    rank     varchar(30)&lt;br /&gt;
  3   ,payment  DECIMAL(10,2)&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO salary VALUES (&amp;quot;Level1&amp;quot;,2000.00);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO salary VALUES (&amp;quot;Level2&amp;quot;,3000.00);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO salary VALUES (&amp;quot;Level3&amp;quot;,5000.00);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO salary VALUES (&amp;quot;Level4&amp;quot;,6000.00);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from emps;&lt;br /&gt;
&lt;br /&gt;
EMP&lt;br /&gt;
------------------------------&lt;br /&gt;
TITLE&lt;br /&gt;
------------------------------&lt;br /&gt;
Tom&lt;br /&gt;
Programmer&lt;br /&gt;
Jack&lt;br /&gt;
Tester&lt;br /&gt;
Mary&lt;br /&gt;
Technician&lt;br /&gt;
3 rows selected.&lt;br /&gt;
SQL&amp;gt; select * from JobLevel;&lt;br /&gt;
&lt;br /&gt;
TITLE&lt;br /&gt;
------------------------------&lt;br /&gt;
RANK&lt;br /&gt;
------------------------------&lt;br /&gt;
Programmer&lt;br /&gt;
Level1&lt;br /&gt;
Tester&lt;br /&gt;
Level2&lt;br /&gt;
Technician&lt;br /&gt;
Level3&lt;br /&gt;
&lt;br /&gt;
3 rows selected.&lt;br /&gt;
SQL&amp;gt; select * from salary;&lt;br /&gt;
&lt;br /&gt;
RANK                               PAYMENT&lt;br /&gt;
------------------------------  ----------&lt;br /&gt;
Level1                                2000&lt;br /&gt;
Level2                                3000&lt;br /&gt;
Level3                                5000&lt;br /&gt;
Level4                                6000&lt;br /&gt;
&lt;br /&gt;
4 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT payment FROM salary WHERE rank =&lt;br /&gt;
  2    (SELECT rank FROM JobLevel WHERE title =&lt;br /&gt;
  3      (SELECT title FROM emps WHERE emp = &amp;quot;Jack&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
   PAYMENT&lt;br /&gt;
----------&lt;br /&gt;
      3000&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DROP TABLE emps;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; DROP TABLE JobLevel;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; DROP TABLE salary;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Example simple join.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO&lt;br /&gt;
---------- ---------- --------- ---------- --------- ---------- ---------- ----------&lt;br /&gt;
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20&lt;br /&gt;
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30&lt;br /&gt;
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30&lt;br /&gt;
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20&lt;br /&gt;
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30&lt;br /&gt;
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30&lt;br /&gt;
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10&lt;br /&gt;
      7788 SCOTT      ANALYST         7566 09-DEC-82       3000                    20&lt;br /&gt;
      7839 KING       PRESIDENT            17-NOV-81       5000                    10&lt;br /&gt;
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30&lt;br /&gt;
      7876 ADAMS      CLERK           7788 12-JAN-83       1100                    20&lt;br /&gt;
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30&lt;br /&gt;
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20&lt;br /&gt;
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt; select * from dept;&lt;br /&gt;
    DEPTNO DNAME          LOC&lt;br /&gt;
---------- -------------- -------------&lt;br /&gt;
        10 ACCOUNTING     NEW YORK&lt;br /&gt;
        20 RESEARCH       DALLAS&lt;br /&gt;
        30 SALES          CHICAGO&lt;br /&gt;
        40 OPERATIONS     BOSTON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select d.deptno, d.dname, e.empno, e.sal, e.rum&lt;br /&gt;
  2  from   dept d, emp e&lt;br /&gt;
  3  where  d.deptno=e.deptno;&lt;br /&gt;
    DEPTNO DNAME               EMPNO        SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- ----------&lt;br /&gt;
        20 RESEARCH             7369        800&lt;br /&gt;
        30 SALES                7499       1600        300&lt;br /&gt;
        30 SALES                7521       1250        500&lt;br /&gt;
        20 RESEARCH             7566       2975&lt;br /&gt;
        30 SALES                7654       1250       1400&lt;br /&gt;
        30 SALES                7698       2850&lt;br /&gt;
        10 ACCOUNTING           7782       2450&lt;br /&gt;
        20 RESEARCH             7788       3000&lt;br /&gt;
        10 ACCOUNTING           7839       5000&lt;br /&gt;
        30 SALES                7844       1500          0&lt;br /&gt;
        20 RESEARCH             7876       1100&lt;br /&gt;
        30 SALES                7900        950&lt;br /&gt;
        20 RESEARCH             7902       3000&lt;br /&gt;
        10 ACCOUNTING           7934       1300&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table dept;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Performing SELECT Statements that Use More than Two Tables==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Joins can be used to connect any number of tables.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The number of joins you will need in your WHERE clause is total_number_of_tables - 1&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;There are two types of join conditions, which are based on the operator.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Equijoins - You use the equality operator (=) in the join.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Non-equijoins - You use an operator other than equals in the join, such as &amp;lt;, &amp;gt;, BETWEEN, and so on.&amp;lt;/p&amp;gt;&lt;br /&gt;
7. 1. Introduction&lt;br /&gt;
7. 1. 1. &lt;br /&gt;
Performing SELECT Statements that Use More than Two Tables&lt;br /&gt;
7. 1. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Threedifferenttypesofjoins.htm&amp;quot;&amp;gt;Three different types of joins:&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 3. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/UnderstandingNonequijoins.htm&amp;quot;&amp;gt;Understanding Non-equijoins&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/PerformingSELECTStatementsthatUseTwoTables.htm&amp;quot;&amp;gt;Performing SELECT Statements that Use Two Tables&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Examplesimplejoin.htm&amp;quot;&amp;gt;Example simple join.&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Usetablealiasintablejoin.htm&amp;quot;&amp;gt;Use table alias in table join&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 7. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/ConvertsubqueriestoJOINs.htm&amp;quot;&amp;gt;Convert subqueries to JOINs&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 8. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/autotraceansifullouterjoin.htm&amp;quot;&amp;gt;autotrace ansi full outer join&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performing SELECT Statements that Use Two Tables==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To join two tables means that you specify both the tables in the query&amp;quot;s FROM clause.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;And Use related columns from each table.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The related columns could be a foreign key from one table and the primary key from another table.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You use an operator, such as the equality operator (=), in the query&amp;quot;s WHERE clause.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    EMPNO         NUMBER(3),&lt;br /&gt;
  3    ENAME         VARCHAR2(15 BYTE),&lt;br /&gt;
  4    HIREDATE      DATE,&lt;br /&gt;
  5    ORIG_SALARY   NUMBER(6),&lt;br /&gt;
  6    CURR_SALARY   NUMBER(6),&lt;br /&gt;
  7    REGION        VARCHAR2(1 BYTE)&lt;br /&gt;
  8  )&lt;br /&gt;
  9  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table job (&lt;br /&gt;
  2    EMPNO         NUMBER(3),&lt;br /&gt;
  3    jobtitle      VARCHAR2(20 BYTE)&lt;br /&gt;
  4  )&lt;br /&gt;
  5  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (1,&amp;quot;Tester&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (2,&amp;quot;Accountant&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (3,&amp;quot;Developer&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (4,&amp;quot;COder&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (5,&amp;quot;Director&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (6,&amp;quot;Mediator&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (7,&amp;quot;Proffessor&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (8,&amp;quot;Programmer&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into job (EMPNO, Jobtitle) values (9,&amp;quot;Developer&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (1,      &amp;quot;Jason&amp;quot;, to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234,              8767,         &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (2,      &amp;quot;John&amp;quot;,  to_date(&amp;quot;19970715&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2341,              3456,         &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (3,      &amp;quot;Joe&amp;quot;,   to_date(&amp;quot;19860125&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4321,              5654,         &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (4,      &amp;quot;Tom&amp;quot;,   to_date(&amp;quot;20060913&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2413,              6787,         &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (5,      &amp;quot;Jane&amp;quot;,  to_date(&amp;quot;20050417&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7654,              4345,         &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (6,      &amp;quot;James&amp;quot;, to_date(&amp;quot;20040718&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 5679,              6546,         &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (7,      &amp;quot;Jodd&amp;quot;,  to_date(&amp;quot;20030720&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 5438,              7658,         &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (8,      &amp;quot;Joke&amp;quot;,  to_date(&amp;quot;20020101&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 8765,              4543,         &amp;quot;W&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(EMPNO,  EName,   HIREDATE,                       ORIG_SALARY,       CURR_SALARY,  REGION)&lt;br /&gt;
  2               values (9,      &amp;quot;Jack&amp;quot;,  to_date(&amp;quot;20010829&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7896,              1232,         &amp;quot;E&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
     EMPNO ENAME           HIREDATE  ORIG_SALARY CURR_SALARY R&lt;br /&gt;
---------- --------------- --------- ----------- ----------- -&lt;br /&gt;
         1 Jason           25-JUL-96        1234        8767 E&lt;br /&gt;
         2 John            15-JUL-97        2341        3456 W&lt;br /&gt;
         3 Joe             25-JAN-86        4321        5654 E&lt;br /&gt;
         4 Tom             13-SEP-06        2413        6787 W&lt;br /&gt;
         5 Jane            17-APR-05        7654        4345 E&lt;br /&gt;
         6 James           18-JUL-04        5679        6546 W&lt;br /&gt;
         7 Jodd            20-JUL-03        5438        7658 E&lt;br /&gt;
         8 Joke            01-JAN-02        8765        4543 W&lt;br /&gt;
         9 Jack            29-AUG-01        7896        1232 E&lt;br /&gt;
9 rows selected.&lt;br /&gt;
SQL&amp;gt; select * from job&lt;br /&gt;
  2  /&lt;br /&gt;
     EMPNO JOBTITLE&lt;br /&gt;
---------- --------------------&lt;br /&gt;
         1 Tester&lt;br /&gt;
         2 Accountant&lt;br /&gt;
         3 Developer&lt;br /&gt;
         4 COder&lt;br /&gt;
         5 Director&lt;br /&gt;
         6 Mediator&lt;br /&gt;
         7 Proffessor&lt;br /&gt;
         8 Programmer&lt;br /&gt;
         9 Developer&lt;br /&gt;
9 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT employee.ename, job.jobtitle&lt;br /&gt;
  2  FROM employee, job&lt;br /&gt;
  3  WHERE employee.empno = job.empno;&lt;br /&gt;
ENAME           JOBTITLE&lt;br /&gt;
--------------- --------------------&lt;br /&gt;
Jason           Tester&lt;br /&gt;
John            Accountant&lt;br /&gt;
Joe             Developer&lt;br /&gt;
Tom             COder&lt;br /&gt;
Jane            Director&lt;br /&gt;
James           Mediator&lt;br /&gt;
Jodd            Proffessor&lt;br /&gt;
Joke            Programmer&lt;br /&gt;
Jack            Developer&lt;br /&gt;
9 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table job&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Three different types of joins:==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Inner joins - Return a row only when the columns in the join contain values that satisfy the join condition.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This means that if a row has a null value in one of the columns in the join condition, that row isn&amp;quot;t returned.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Outer joins - Can return a row even when one of the columns in the join condition contains a null value.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Self joins - Return rows joined on the same table.&amp;lt;/p&amp;gt;&lt;br /&gt;
7. 1. Introduction&lt;br /&gt;
7. 1. 1. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/PerformingSELECTStatementsthatUseMorethanTwoTables.htm&amp;quot;&amp;gt;Performing SELECT Statements that Use More than Two Tables&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 2. &lt;br /&gt;
Three different types of joins:&lt;br /&gt;
7. 1. 3. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/UnderstandingNonequijoins.htm&amp;quot;&amp;gt;Understanding Non-equijoins&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/PerformingSELECTStatementsthatUseTwoTables.htm&amp;quot;&amp;gt;Performing SELECT Statements that Use Two Tables&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Examplesimplejoin.htm&amp;quot;&amp;gt;Example simple join.&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Usetablealiasintablejoin.htm&amp;quot;&amp;gt;Use table alias in table join&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 7. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/ConvertsubqueriestoJOINs.htm&amp;quot;&amp;gt;Convert subqueries to JOINs&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 8. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/autotraceansifullouterjoin.htm&amp;quot;&amp;gt;autotrace ansi full outer join&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding Non-equijoins==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A non-equijoin uses an operator other than the equality operator in the join.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Examples of non-equality operators are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;OL&amp;gt;&amp;lt;LI&amp;gt;not-equal (&amp;lt;&amp;gt;),&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;less than (&amp;lt;),&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;greater than (&amp;gt;),&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;less than or equal to (&amp;lt;=),&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;greater than or equal to (&amp;gt;=),&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;LIKE,&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;IN, and&amp;lt;/LI&amp;gt;&amp;lt;LI&amp;gt;BETWEEN.&amp;lt;/LI&amp;gt;&amp;lt;/OL&amp;gt;&lt;br /&gt;
7. 1. Introduction&lt;br /&gt;
7. 1. 1. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/PerformingSELECTStatementsthatUseMorethanTwoTables.htm&amp;quot;&amp;gt;Performing SELECT Statements that Use More than Two Tables&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 2. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Threedifferenttypesofjoins.htm&amp;quot;&amp;gt;Three different types of joins:&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 3. &lt;br /&gt;
Understanding Non-equijoins&lt;br /&gt;
7. 1. 4. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/PerformingSELECTStatementsthatUseTwoTables.htm&amp;quot;&amp;gt;Performing SELECT Statements that Use Two Tables&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 5. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Examplesimplejoin.htm&amp;quot;&amp;gt;Example simple join.&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 6. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/Usetablealiasintablejoin.htm&amp;quot;&amp;gt;Use table alias in table join&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 7. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/ConvertsubqueriestoJOINs.htm&amp;quot;&amp;gt;Convert subqueries to JOINs&amp;lt;/a&amp;gt;&lt;br /&gt;
7. 1. 8. &lt;br /&gt;
&amp;lt;A href=&amp;quot;/Tutorial/Oracle/0140__Table-Joins/autotraceansifullouterjoin.htm&amp;quot;&amp;gt;autotrace ansi full outer join&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use table alias in table join==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee (&lt;br /&gt;
  2  id           number,&lt;br /&gt;
  3  name         varchar(100),&lt;br /&gt;
  4  birth_date   date,&lt;br /&gt;
  5  gender       varchar2(30) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee_evaluation (&lt;br /&gt;
  2  id           number,&lt;br /&gt;
  3  title        varchar2(100),&lt;br /&gt;
  4  written_date date );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT a.id,&lt;br /&gt;
  2         a.name,&lt;br /&gt;
  3         p.title,&lt;br /&gt;
  4         p.written_date&lt;br /&gt;
  5  FROM   employee a,&lt;br /&gt;
  6         employee_evaluation p&lt;br /&gt;
  7  WHERE  a.id = p.id&lt;br /&gt;
  8  ORDER BY a.name,&lt;br /&gt;
  9         p.written_date,&lt;br /&gt;
 10         p.title;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee_evaluation;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>