4
   Displaying Data
from Multiple Tables
Objectives

After completing this lesson, you should
be able to do the following:
  • Write SELECT statements to access
    data from more than one table using
    equality and nonequality joins
  • View data that generally does not meet a
    join condition by using outer joins
  • Join a table to itself

4-2
Obtaining Data from Multiple Tables
EMP                           DEPT
 EMPNO   ENAME   ... DEPTNO   DEPTNO   DNAME        LOC
------   -----   ... ------   ------   ----------   --------
  7839   KING    ...     10       10   ACCOUNTING   NEW YORK
  7698   BLAKE   ...     30       20   RESEARCH     DALLAS
   ...                            30   SALES        CHICAGO
  7934   MILLER ...      10       40   OPERATIONS   BOSTON



             EMPNO DEPTNO LOC
             ----- ------- --------
              7839      10 NEW YORK
              7698      30 CHICAGO
              7782      10 NEW YORK
              7566      20 DALLAS
              7654      30 CHICAGO
              7499      30 CHICAGO
             ...
             14 rows selected.

4-3
What Is a Join?
 Use a join to query data from more than
 one table.
      SELECT   table1.column, table2.column
      FROM     table1, table2
      WHERE    table1.column1 = table2.column2;



  • Write the join condition in the WHERE
    clause.
  • Prefix the column name with the table
    name when the same column name
    appears in more than one table.
4-4
Cartesian Product

  • A Cartesian product is formed when:
      – A join condition is omitted
      – A join condition is invalid
      – All rows in the first table are joined to
       all rows in the second table
  • To avoid a Cartesian product, always
    include a valid join condition in a
    WHERE clause.

4-5
Generating a Cartesian Product
EMP (14 rows)                  DEPT (4 rows)
  EMPNO   ENAME   ... DEPTNO   DEPTNO   DNAME        LOC
 ------   -----   ... ------   ------   ----------   --------
   7839   KING    ...     10       10   ACCOUNTING   NEW YORK
   7698   BLAKE   ...     30       20   RESEARCH     DALLAS
    ...                            30   SALES        CHICAGO
   7934   MILLER ...      10       40   OPERATIONS   BOSTON



                    ENAME    DNAME
                    ------   ----------
                    KING     ACCOUNTING
    “Cartesian      BLAKE    ACCOUNTING
      product:      ...
                    KING     RESEARCH
14*4=56 rows”       BLAKE    RESEARCH
                    ...
                    56 rows selected.

 4-6
Types of Joins

Equijoin Non-equijoin Outer join Self join




4-7
What Is an Equijoin?
EMP                        DEPT
 EMPNO ENAME    DEPTNO      DEPTNO   DNAME        LOC
------ ------- -------     -------   ----------   --------
  7839 KING         10          10   ACCOUNTING   NEW YORK
  7698 BLAKE        30          30   SALES        CHICAGO
  7782 CLARK        10          10   ACCOUNTING   NEW YORK
  7566 JONES        20          20   RESEARCH     DALLAS
  7654 MARTIN       30          30   SALES        CHICAGO
  7499 ALLEN        30          30   SALES        CHICAGO
  7844 TURNER       30          30   SALES        CHICAGO
  7900 JAMES        30          30   SALES        CHICAGO
  7521 WARD         30          30   SALES        CHICAGO
  7902 FORD         20          20   RESEARCH     DALLAS
  7369 SMITH        20          20   RESEARCH     DALLAS
...                        ...
14 rows selected.          14 rows   selected.

             Foreign key   Primary key
4-8
Retrieving Records
             with Equijoins
 SQL> SELECT   emp.empno, emp.ename, emp.deptno,
   2           dept.deptno, dept.loc
   3 FROM      emp, dept
   4 WHERE     emp.deptno=dept.deptno;


 EMPNO ENAME DEPTNO DEPTNO LOC
 ----- ------ ------ ------ ---------
  7839 KING        10    10 NEW YORK
  7698 BLAKE       30     30 CHICAGO
  7782 CLARK       10     10 NEW YORK
  7566 JONES       20     20 DALLAS
 ...
 14 rows selected.


4-9
Qualifying Ambiguous
           Column Names
  • Use table prefixes to qualify column
    names that are in multiple tables.
  • Improve performance by using table
    prefixes.
  • Distinguish columns that have identical
    names but reside in different tables by
    using column aliases.



4-10
Additional Search Conditions
         Using the AND Operator
EMP                       DEPT
  EMPNO ENAME    DEPTNO   DEPTNO DNAME        LOC
 ------ ------- -------   ------ ---------    --------
   7839 KING         10       10 ACCOUNTING   NEW YORK
   7698 BLAKE        30       30 SALES        CHICAGO
   7782 CLARK        10       10 ACCOUNTING   NEW YORK
   7566 JONES        20       20 RESEARCH     DALLAS
   7654 MARTIN       30       30 SALES        CHICAGO
   7499 ALLEN        30       30 SALES        CHICAGO
   7844 TURNER       30       30 SALES        CHICAGO
   7900 JAMES        30       30 SALES        CHICAGO
   7521 WARD         30       30 SALES        CHICAGO
   7902 FORD         20       20 RESEARCH     DALLAS
   7369 SMITH        20       20 RESEARCH     DALLAS
 ...                      ...
 14 rows selected.        14 rows selected.

4-11
Using Table Aliases
 Simplify queries by using table aliases.
SQL> SELECT emp.empno, emp.ename, emp.deptno,
  2         dept.deptno, dept.loc
  3 FROM    emp, dept
  4 WHERE emp.deptno=dept.deptno;


SQL> SELECT e.empno, e.ename, e.deptno,
  2         d.deptno, d.loc
  3 FROM    emp e, dept d
  4 WHERE e.deptno=d.deptno;




4-12
Joining More Than Two Tables
CUSTOMER                  ORD
 NAME           CUSTID     CUSTID   ORDID
 -----------    ------    ------- -------
 JOCKSPORTS        100        101     610
 TKB SPORT SHOP     101       102     611
 VOLLYRITE          102       104     612
 JUST TENNIS        103       106     601
 K+T SPORTS        105        102     602        ITEM
 SHAPE UP           106       106     604
                                    ORDID ITEMID
 WOMENS SPORTS     107        106     605
                                   ------ -------
 ...            ...       ...
                                      610       3
 9 rows selected.         21 rows selected.
                                      611       1
                                      612       1
                                      601       1
                                      602       1
                                   ...
                                   64 rows selected.

4-13
Non-Equijoins
       EMP                     SALGRADE
        EMPNO ENAME      SAL   GRADE LOSAL HISAL
       ------ ------- ------   ----- ----- ------
         7839 KING      5000   1       700   1200
         7698 BLAKE     2850   2      1201   1400
         7782 CLARK     2450   3      1401   2000
         7566 JONES     2975   4      2001   3000
         7654 MARTIN    1250   5      3001   9999
         7499 ALLEN     1600
         7844 TURNER    1500
         7900 JAMES      950
       ...                     “salary in the EMP
       14 rows selected.       table is between
                               low salary and high
                               salary in the SALGRADE
                               table”

4-14
Retrieving Records
           with Non-Equijoins
SQL>   SELECT    e.ename, e.sal, s.grade
   2   FROM      emp e, salgrade s
   3   WHERE     e.sal
   4   BETWEEN   s.losal AND s.hisal;


 ENAME            SAL     GRADE
 ---------- --------- ---------
 JAMES            950         1
 SMITH            800         1
 ADAMS           1100         1
 ...
 14 rows selected.


4-15
Outer Joins
       EMP              DEPT
       ENAME   DEPTNO   DEPTNO   DNAME
       -----   ------   ------   ----------
       KING    10       10       ACCOUNTING
       BLAKE   30       30       SALES
       CLARK   10       10       ACCOUNTING
       JONES   20       20       RESEARCH
       ...              ...
                        40       OPERATIONS



                No employee in the
                OPERATIONS department



4-16
Outer Joins
  • You use an outer join to also see rows
    that do not usually meet the join
    condition.
  • Outer join operator is the plus sign (+).
 SELECT table1.column, table2.column
 FROM   table1, table2
 WHERE table1.column(+) = table2.column;


 SELECT table1.column, table2.column
 FROM   table1, table2
 WHERE table1.column = table2.column(+);



4-17
Using Outer Joins
 SQL>   SELECT     e.ename, d.deptno, d.dname
   2    FROM       emp e, dept d
   3    WHERE      e.deptno(+) = d.deptno
   4    ORDER BY   e.deptno;


 ENAME         DEPTNO DNAME
 ---------- --------- -------------
 KING              10 ACCOUNTING
 CLARK             10 ACCOUNTING
 ...
                   40 OPERATIONS
 15 rows selected.




4-18
Self Joins
        EMP (WORKER)             EMP (MANAGER)
         EMPNO   ENAME     MGR    EMPNO ENAME
         -----   ------   ----    ----- --------
          7839   KING
          7698   BLAKE    7839     7839   KING
          7782   CLARK    7839     7839   KING
          7566   JONES    7839     7839   KING
          7654   MARTIN   7698     7698   BLAKE
          7499   ALLEN    7698     7698   BLAKE




       “MGR in the WORKER table is equal to EMPNO in the
                      MANAGER table”


4-19
Joining a Table to Itself
SQL> SELECT worker.ename||' works for '||manager.ename
  2 FROM    emp worker, emp manager
  3 WHERE worker.mgr = manager.empno;


WORKER.ENAME||'WORKSFOR'||MANAG
-------------------------------
BLAKE works for KING
CLARK works for KING
JONES works for KING
MARTIN works for BLAKE
...
13 rows selected.




4-20
Summary

   SELECT   table1.column, table2.column
   FROM     table1, table2
   WHERE    table1.column1 = table2.column2;



Equijoin Non-equijoin Outer join Self join




4-21

More Related Content

PPT
SQL WORKSHOP::Lecture 4
PPTX
Get your moneys worth out of your database
PDF
ANSI vs Oracle language
PDF
UKOUG 2019 - SQL features
PDF
Sangam 19 - Analytic SQL
PPTX
Les04 Displaying Data From Multiple Table
PPTX
SQL techniques for faster applications
DOC
Practice 1
SQL WORKSHOP::Lecture 4
Get your moneys worth out of your database
ANSI vs Oracle language
UKOUG 2019 - SQL features
Sangam 19 - Analytic SQL
Les04 Displaying Data From Multiple Table
SQL techniques for faster applications
Practice 1

Viewers also liked (14)

PDF
OracleXE & SQLDeveloper Install
PDF
Lesson02 - Network Design & LAN
PDF
Making Connections
PDF
Errors, Error Detection, and Error Control
PDF
Lesson 01 - Network Assessment
PDF
Conducted and Wireless Media
PDF
Lesson - 02 Network Design and Management
PDF
Making Connections Efficient: Multiplexing and Compression
PDF
Lesson 01 - Introduction to SQL
PPTX
SQL Developer installation-guide
PDF
Fundamentals of Data and Signals
PDF
Errors, Error Detection, and Error Control
PPTX
Wired and wireless technologies
PPT
OSI Model
OracleXE & SQLDeveloper Install
Lesson02 - Network Design & LAN
Making Connections
Errors, Error Detection, and Error Control
Lesson 01 - Network Assessment
Conducted and Wireless Media
Lesson - 02 Network Design and Management
Making Connections Efficient: Multiplexing and Compression
Lesson 01 - Introduction to SQL
SQL Developer installation-guide
Fundamentals of Data and Signals
Errors, Error Detection, and Error Control
Wired and wireless technologies
OSI Model
Ad

Similar to COIS 420 - Practice04 (20)

PPTX
Lecture03.._Joining_Spring2023-2024.pptx
PPT
PPTX
Analytic SQL Sep 2013
PPT
SQL WORKSHOP::Lecture 2
PDF
COIS 420 - Practice02
PPT
Les02[1]Restricting and Sorting Data
PPT
11 things about 11gr2
PPTX
Using SQL to process hierarchies
DOC
80 different SQL Queries with output
PPT
PPTX
Les02.pptx
PPT
Analytics ioug 2011
PPT
SQL WORKSHOP::Lecture 12
PPT
Restricting and sorting data
PPT
chap2 (3).ppt
PDF
Structure query language - Data Query language for beginners.pdf
PDF
Connor McDonald 11g for developers
DOC
ORACLE NOTES
Lecture03.._Joining_Spring2023-2024.pptx
Analytic SQL Sep 2013
SQL WORKSHOP::Lecture 2
COIS 420 - Practice02
Les02[1]Restricting and Sorting Data
11 things about 11gr2
Using SQL to process hierarchies
80 different SQL Queries with output
Les02.pptx
Analytics ioug 2011
SQL WORKSHOP::Lecture 12
Restricting and sorting data
chap2 (3).ppt
Structure query language - Data Query language for beginners.pdf
Connor McDonald 11g for developers
ORACLE NOTES
Ad

More from Angel G Diaz (6)

PPT
GNS3 Simulator Installation
PDF
WAMP & Joomla! Installation
PDF
COIS 420 - Practice 03
PDF
COIS 420 - Practice01
PDF
Introduction to Computer Networks and Data Communications
PDF
Cois240 lesson01
GNS3 Simulator Installation
WAMP & Joomla! Installation
COIS 420 - Practice 03
COIS 420 - Practice01
Introduction to Computer Networks and Data Communications
Cois240 lesson01

Recently uploaded (20)

PPTX
Key-Features-of-the-SHS-Program-v4-Slides (3) PPT2.pptx
PPTX
Unit 1 aayurveda and nutrition presentation
PPTX
Designing Adaptive Learning Paths in Virtual Learning Environments
PDF
Chevening Scholarship Application and Interview Preparation Guide
PDF
WHAT NURSES SAY_ COMMUNICATION BEHAVIORS ASSOCIATED WITH THE COMP.pdf
PPTX
pharmaceutics-1unit-1-221214121936-550b56aa.pptx
PDF
Lecture on Viruses: Structure, Classification, Replication, Effects on Cells,...
PPTX
Q2 Week 1.pptx Lesson on Kahalagahan ng Pamilya sa Edukasyon
PDF
Disorder of Endocrine system (1).pdfyyhyyyy
PPTX
Theoretical for class.pptxgshdhddhdhdhgd
PDF
CHALLENGES FACED BY TEACHERS WHEN TEACHING LEARNERS WITH DEVELOPMENTAL DISABI...
PDF
faiz-khans about Radiotherapy Physics-02.pdf
PDF
Review of Related Literature & Studies.pdf
PPTX
Cite It Right: A Compact Illustration of APA 7th Edition.pptx
PPTX
MMW-CHAPTER-1-final.pptx major Elementary Education
PDF
Everyday Spelling and Grammar by Kathi Wyldeck
PDF
The TKT Course. Modules 1, 2, 3.for self study
PDF
Hospital Case Study .architecture design
PPTX
Diploma pharmaceutics notes..helps diploma students
PDF
fundamentals-of-heat-and-mass-transfer-6th-edition_incropera.pdf
Key-Features-of-the-SHS-Program-v4-Slides (3) PPT2.pptx
Unit 1 aayurveda and nutrition presentation
Designing Adaptive Learning Paths in Virtual Learning Environments
Chevening Scholarship Application and Interview Preparation Guide
WHAT NURSES SAY_ COMMUNICATION BEHAVIORS ASSOCIATED WITH THE COMP.pdf
pharmaceutics-1unit-1-221214121936-550b56aa.pptx
Lecture on Viruses: Structure, Classification, Replication, Effects on Cells,...
Q2 Week 1.pptx Lesson on Kahalagahan ng Pamilya sa Edukasyon
Disorder of Endocrine system (1).pdfyyhyyyy
Theoretical for class.pptxgshdhddhdhdhgd
CHALLENGES FACED BY TEACHERS WHEN TEACHING LEARNERS WITH DEVELOPMENTAL DISABI...
faiz-khans about Radiotherapy Physics-02.pdf
Review of Related Literature & Studies.pdf
Cite It Right: A Compact Illustration of APA 7th Edition.pptx
MMW-CHAPTER-1-final.pptx major Elementary Education
Everyday Spelling and Grammar by Kathi Wyldeck
The TKT Course. Modules 1, 2, 3.for self study
Hospital Case Study .architecture design
Diploma pharmaceutics notes..helps diploma students
fundamentals-of-heat-and-mass-transfer-6th-edition_incropera.pdf

COIS 420 - Practice04

  • 1. 4 Displaying Data from Multiple Tables
  • 2. Objectives After completing this lesson, you should be able to do the following: • Write SELECT statements to access data from more than one table using equality and nonequality joins • View data that generally does not meet a join condition by using outer joins • Join a table to itself 4-2
  • 3. Obtaining Data from Multiple Tables EMP DEPT EMPNO ENAME ... DEPTNO DEPTNO DNAME LOC ------ ----- ... ------ ------ ---------- -------- 7839 KING ... 10 10 ACCOUNTING NEW YORK 7698 BLAKE ... 30 20 RESEARCH DALLAS ... 30 SALES CHICAGO 7934 MILLER ... 10 40 OPERATIONS BOSTON EMPNO DEPTNO LOC ----- ------- -------- 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO ... 14 rows selected. 4-3
  • 4. What Is a Join? Use a join to query data from more than one table. SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2; • Write the join condition in the WHERE clause. • Prefix the column name with the table name when the same column name appears in more than one table. 4-4
  • 5. Cartesian Product • A Cartesian product is formed when: – A join condition is omitted – A join condition is invalid – All rows in the first table are joined to all rows in the second table • To avoid a Cartesian product, always include a valid join condition in a WHERE clause. 4-5
  • 6. Generating a Cartesian Product EMP (14 rows) DEPT (4 rows) EMPNO ENAME ... DEPTNO DEPTNO DNAME LOC ------ ----- ... ------ ------ ---------- -------- 7839 KING ... 10 10 ACCOUNTING NEW YORK 7698 BLAKE ... 30 20 RESEARCH DALLAS ... 30 SALES CHICAGO 7934 MILLER ... 10 40 OPERATIONS BOSTON ENAME DNAME ------ ---------- KING ACCOUNTING “Cartesian BLAKE ACCOUNTING product: ... KING RESEARCH 14*4=56 rows” BLAKE RESEARCH ... 56 rows selected. 4-6
  • 7. Types of Joins Equijoin Non-equijoin Outer join Self join 4-7
  • 8. What Is an Equijoin? EMP DEPT EMPNO ENAME DEPTNO DEPTNO DNAME LOC ------ ------- ------- ------- ---------- -------- 7839 KING 10 10 ACCOUNTING NEW YORK 7698 BLAKE 30 30 SALES CHICAGO 7782 CLARK 10 10 ACCOUNTING NEW YORK 7566 JONES 20 20 RESEARCH DALLAS 7654 MARTIN 30 30 SALES CHICAGO 7499 ALLEN 30 30 SALES CHICAGO 7844 TURNER 30 30 SALES CHICAGO 7900 JAMES 30 30 SALES CHICAGO 7521 WARD 30 30 SALES CHICAGO 7902 FORD 20 20 RESEARCH DALLAS 7369 SMITH 20 20 RESEARCH DALLAS ... ... 14 rows selected. 14 rows selected. Foreign key Primary key 4-8
  • 9. Retrieving Records with Equijoins SQL> SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno; EMPNO ENAME DEPTNO DEPTNO LOC ----- ------ ------ ------ --------- 7839 KING 10 10 NEW YORK 7698 BLAKE 30 30 CHICAGO 7782 CLARK 10 10 NEW YORK 7566 JONES 20 20 DALLAS ... 14 rows selected. 4-9
  • 10. Qualifying Ambiguous Column Names • Use table prefixes to qualify column names that are in multiple tables. • Improve performance by using table prefixes. • Distinguish columns that have identical names but reside in different tables by using column aliases. 4-10
  • 11. Additional Search Conditions Using the AND Operator EMP DEPT EMPNO ENAME DEPTNO DEPTNO DNAME LOC ------ ------- ------- ------ --------- -------- 7839 KING 10 10 ACCOUNTING NEW YORK 7698 BLAKE 30 30 SALES CHICAGO 7782 CLARK 10 10 ACCOUNTING NEW YORK 7566 JONES 20 20 RESEARCH DALLAS 7654 MARTIN 30 30 SALES CHICAGO 7499 ALLEN 30 30 SALES CHICAGO 7844 TURNER 30 30 SALES CHICAGO 7900 JAMES 30 30 SALES CHICAGO 7521 WARD 30 30 SALES CHICAGO 7902 FORD 20 20 RESEARCH DALLAS 7369 SMITH 20 20 RESEARCH DALLAS ... ... 14 rows selected. 14 rows selected. 4-11
  • 12. Using Table Aliases Simplify queries by using table aliases. SQL> SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno; SQL> SELECT e.empno, e.ename, e.deptno, 2 d.deptno, d.loc 3 FROM emp e, dept d 4 WHERE e.deptno=d.deptno; 4-12
  • 13. Joining More Than Two Tables CUSTOMER ORD NAME CUSTID CUSTID ORDID ----------- ------ ------- ------- JOCKSPORTS 100 101 610 TKB SPORT SHOP 101 102 611 VOLLYRITE 102 104 612 JUST TENNIS 103 106 601 K+T SPORTS 105 102 602 ITEM SHAPE UP 106 106 604 ORDID ITEMID WOMENS SPORTS 107 106 605 ------ ------- ... ... ... 610 3 9 rows selected. 21 rows selected. 611 1 612 1 601 1 602 1 ... 64 rows selected. 4-13
  • 14. Non-Equijoins EMP SALGRADE EMPNO ENAME SAL GRADE LOSAL HISAL ------ ------- ------ ----- ----- ------ 7839 KING 5000 1 700 1200 7698 BLAKE 2850 2 1201 1400 7782 CLARK 2450 3 1401 2000 7566 JONES 2975 4 2001 3000 7654 MARTIN 1250 5 3001 9999 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 ... “salary in the EMP 14 rows selected. table is between low salary and high salary in the SALGRADE table” 4-14
  • 15. Retrieving Records with Non-Equijoins SQL> SELECT e.ename, e.sal, s.grade 2 FROM emp e, salgrade s 3 WHERE e.sal 4 BETWEEN s.losal AND s.hisal; ENAME SAL GRADE ---------- --------- --------- JAMES 950 1 SMITH 800 1 ADAMS 1100 1 ... 14 rows selected. 4-15
  • 16. Outer Joins EMP DEPT ENAME DEPTNO DEPTNO DNAME ----- ------ ------ ---------- KING 10 10 ACCOUNTING BLAKE 30 30 SALES CLARK 10 10 ACCOUNTING JONES 20 20 RESEARCH ... ... 40 OPERATIONS No employee in the OPERATIONS department 4-16
  • 17. Outer Joins • You use an outer join to also see rows that do not usually meet the join condition. • Outer join operator is the plus sign (+). SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column(+) = table2.column; SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column = table2.column(+); 4-17
  • 18. Using Outer Joins SQL> SELECT e.ename, d.deptno, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno(+) = d.deptno 4 ORDER BY e.deptno; ENAME DEPTNO DNAME ---------- --------- ------------- KING 10 ACCOUNTING CLARK 10 ACCOUNTING ... 40 OPERATIONS 15 rows selected. 4-18
  • 19. Self Joins EMP (WORKER) EMP (MANAGER) EMPNO ENAME MGR EMPNO ENAME ----- ------ ---- ----- -------- 7839 KING 7698 BLAKE 7839 7839 KING 7782 CLARK 7839 7839 KING 7566 JONES 7839 7839 KING 7654 MARTIN 7698 7698 BLAKE 7499 ALLEN 7698 7698 BLAKE “MGR in the WORKER table is equal to EMPNO in the MANAGER table” 4-19
  • 20. Joining a Table to Itself SQL> SELECT worker.ename||' works for '||manager.ename 2 FROM emp worker, emp manager 3 WHERE worker.mgr = manager.empno; WORKER.ENAME||'WORKSFOR'||MANAG ------------------------------- BLAKE works for KING CLARK works for KING JONES works for KING MARTIN works for BLAKE ... 13 rows selected. 4-20
  • 21. Summary SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2; Equijoin Non-equijoin Outer join Self join 4-21