-
데이터베이스를 이클립스에서 출력하는 예제1기타/Oracle 2020. 11. 26. 16:08
작성한 예제를 파헤쳐보자.
package madang.common; import java.sql.*; public class TestMain { public static void main(String[] args) { try { Connection conn = ConnectionFactory.create(); String sql = "SELECT Customer.NAME, SUM(Orders.SALEPRICE) " + "FROM Customer, Orders " + "WHERE Customer.custid =Orders.custid " + "GROUP BY Customer.NAME " + "ORDER BY Customer.NAME"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { System.out.printf("%s\t %d\t \n", rs.getString(1), rs.getInt(2)); } System.out.println("===================="); //고객들이 주문한 도서 총액, 평균, 최소값, 최대값 String sql2 = "SELECT Customer.NAME, SUM(Orders.SALEPRICE), AVG(Orders.SALEPRICE), MIN(Orders.SALEPRICE), MAX(Orders.SALEPRICE) " + "FROM Customer, Orders " + "WHERE Customer.custid =Orders.custid " + "GROUP BY Customer.NAME " + "ORDER BY Customer.NAME"; PreparedStatement pstmt2 = conn.prepareStatement(sql2); ResultSet rs2 = pstmt2.executeQuery(); while(rs2.next()) { System.out.printf("%s\t %d\t %d\t %d\t %d\t \n", rs2.getString(1), rs2.getInt(2), rs2.getInt(3), rs2.getInt(4), rs2.getInt(5)); } conn.close(); rs.close(); rs2.close(); } catch (SQLException e) { e.printStackTrace(); } } }
현재 madang이란 데이터 베이스 안에는 Book, Customer, Orders 라는 테이블이 존재한다.
MAIN 클래스에서 값을 출력할때는 try/catch 하거나 throws SQLException로 예외처리를 해준다.
sql (질의를 이용할때) 반드시 인터페이스를 이용할 필요는 없다.
다음은 고객이 구매한 책의 총 금액을 구하는 질문이다 (고객이름 : 구매한 책의 총액)
Connection conn = ConnectionFactory.create(); String sql = "SELECT Customer.NAME, SUM(Orders.SALEPRICE) " + "FROM Customer, Orders " + "WHERE Customer.custid =Orders.custid " + "GROUP BY Customer.NAME " + "ORDER BY Customer.NAME"; PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { System.out.printf("%s\t %d\t \n", rs.getString(1), rs.getInt(2)); }
가장 먼저 질문을 작성한다.
구해야하는 값은 고객이름(Customer.NAME)과 총액(SUM(Orders.SALEPRICE)) 이다.
이전까지는 한 테이블에서만 값을 뽑으면 됐지만 지금은 2개의 테이블이다.
이럴때 사용하는 것이 join 이다.
join도 아무 테이블이나 연결 할 수 없다
반드시 공통으로 가지는 key값이 있어야
"WHERE Customer.custid =Orders.custid "
이처럼 연결해서 각각 테이블 값을 가져와 조합할 수 있다.
출력은 SELECT 뒤에 값을 등록한 순서대로 나온다.
그렇기 때문에 출력시에도 순서와 모양을 맞춰줘야한다.
Customer.NAME = getString
SUM(Orders.SALEPRICE) = getInt
순서를 맞춰주지 않으면 에러가 난다.
'기타 > Oracle' 카테고리의 다른 글
Oracle veiw, index 생성 (0) 2020.11.27 데이터베이스를 이클립스에서 출력하는 예제2 (0) 2020.11.26 검색 데이터 조작어 (SELECT) (0) 2020.11.25 JDBC를 이용해 테이블에 입력, 삭제, 수정, 선택을 해보자. (0) 2020.11.23 DAO 이해하기 (0) 2020.11.23