* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2007.02.02

Å×À̺í Á¶ÀÎ(Join)

Á¶ÀÎ ¿¹Á¦¸¦ À§Çؼ­ °ø±ÞÀÚ Å×À̺íÀ» ¸¸µì´Ï´Ù.
´ÙÀ½¿¡ °ø±ÞÀÚ Å×À̺í°ú Ä¿ÇÇ Å×À̺íÀ» Á¶ÀÎÇÏ¿© °ø±ÞÀÚ¸íÀÌ "Acme, Inc" °¡ °ø±ÞÇÏ´Â Ä¿ÇǸ¦ fetch ÇØ¿À´Â SQL Select ¹®À» ½ÇÇàÇÕ´Ï´Ù. ¸ÕÀú °ø±ÞÀÚ Å×À̺íÀ» ¸¸µé±â ÆÄÀÏ MakeSuppliers.javaÀ» JDBC ÇÁ·Î±×·¡¹Ö ¼ø¼­·Î ÄÚµùÇÕ´Ï´Ù.

  1. JDBC µå¶óÀ̹ö ·Îµù
  2. Connection ¸Î±â
  3. SQL ½ÇÇà
  4. [SQL¹®ÀÌ select¹®À̾ú´Ù¸é ResultSetÀ» ÀÌ¿ëÇÑ Ã³¸®]
  5. ÀÚ¿ø ¹Ýȯ

MakeSuppliers.java

import java.sql.*;

public class MakeSuppliers {
  public static void main( String[] args ) {
    Connection con;
    Statement stmt;
    String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    
    try {
      // 1. JDBC µå¶óÀ̹ö ·Îµù
      Class.forName( "oracle.jdbc.driver.OracleDriver" );
    } catch( java.lang.ClassNotFoundException e ) {
      System.err.print( "ClassNotFoundException : " );
      System.err.println( e.getMessage() );
    }
    
    try {
      // 2. Connection ¸Î±â
      con = DriverManager.getConnection( url, "scott", "tiger" );
      // 3. SQL ½ÇÇà
      stmt = con.createStatement();
      
      String createSUPPLIERS = "CREATE TABLE suppliers " +
        "(sup_id INTEGER, sup_name VARCHAR(40), " +
        "street VARCHAR(40), city VARCHAR(20), " +
        "state CHAR(2), zip CHAR(5), " + 
        "primary key ( sup_id ) )";
      
      stmt.executeUpdate( createSUPPLIERS );
      
      stmt.executeUpdate( "INSERT INTO suppliers VALUES (101, " + 
        "'Acme, Inc.', '99 Market Street', 'Groundsville', " +
        "'CA', '95199')");
         
      stmt.executeUpdate( "INSERT INTO suppliers VALUES (49," +
        "'Superior Coffee', '1 Party Place', 'Mendocino', 'CA', " +
        "'95460')");
        
      stmt.executeUpdate( "INSERT INTO suppliers VALUES (150, " +
        "'The High Ground', '100 Coffee Lane', 'Meadows', 'CA', " +
        "'93966')");
        
      // 4. ResultSet ÀÌ¿ë °á°ú°ª ó¸®
      ResultSet rs = stmt.executeQuery( "SELECT * FROM suppliers" );
      
      while( rs.next() ) {
        int a = rs.getInt("sup_id");
        String b = rs.getString("sup_name");
        String c = rs.getString("street");
        String d = rs.getString("city");
        String e = rs.getString("state");
        String f = rs.getString("zip");
        System.out.println( a + " " + b + " " + c + " " + d + " " + e + " " + f );
      }
      
      // 5. ÀÚ¿ø¹Ýȯ
      rs.close();
      stmt.close();
      con.close();
    } catch( SQLException ex ) {
      System.out.println( "SQLException : "+ex.getMessage() );
    } 
  }
}

JoinTable.java

import java.sql.*;
  
public class JoinTable {
  public static void main( String[] args ) {
    Connection con;
    Statement stmt;
    String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    
    try {
      // 1. JDBC µå¶óÀ̹ö ·Îµù
      Class.forName( "oracle.jdbc.driver.OracleDriver" );
    } catch( java.lang.ClassNotFoundException e ) {
      System.err.print( "ClassNotFoundException :" );
      System.err.println( e.getMessage() );
    }
    
    try {
      // 2. Connection ¸Î±â
      con = DriverManager.getConnection( url, "scott", "tiger" );
      // 3. SQL ½ÇÇà
      stmt = con.createStatement();
      
      String query = "SELECT coffees.cof_name " +
        "FROM coffees, suppliers " +
        "WHERE suppliers.sup_name LIKE 'Acme, Inc.' " +
        "AND suppliers.sup_id = coffees.sup_id";

      // 4. ResultSet ÀÌ¿ë °á°ú°ª ó¸®
      ResultSet rs = stmt.executeQuery( query );
      System.out.println( "Coffees bought from Acme, Inc.: " );
      
      while ( rs.next() ) {
        String coffeeName = rs.getString( "cof_name" );
        System.out.println(" " + coffeeName);
      }
      
      // 5. ÀÚ¿ø¹Ýȯ
      rs.close();
      stmt.close();
      con.close();
    } catch( SQLException ex ) {
      System.out.println( "SQLException :" + ex.getMessage() );
    }
  }
}

MakeSuppliers.java ¿Í JoinTable.java ¸¦ ½ÇÇàÇÏ¸é °á°ú´Â ¾Æ·¡¿Í °°½À´Ï´Ù.

D:\>javac MakeSuppliers.java

D:\>java MakeSuppliers
101 Acme, Inc. 99 Market Street Groundsville CA 95199
49 Superior Coffee 1 Party Place Mendocino CA 95460
150 The High Ground 100 Coffee Lane Meadows CA 93966

D:\>javac JoinTable.java

D:\>java JoinTable
Coffees bought from Acme, Inc.:
 Colombian_Decaf
 Colombian

D:\>