KDT/TIL

2022-08-03 (Wed)

imname1am 2022. 8. 3. 19:10
반응형

 CHAR VS VARCHAR2

그림 내가 그려서 수정하기

 

 DUAL 테이블

사용자가 계산/사용자 함수 등 실행하고자 할 경우 유용
(= dummy 테이블)
COMMENT ON COLUMN EMP.HIREDATE IS '입사일자';
-- 문제점 : deptABLE의 ROW 갯수만큼 나옴
SELECT sysdate FROM dept; -- 현재 일자 돌려주는

-- 해결   : DUAL 사용
SELECT sysdate FROM DUAL;

Before & After

 

[ Database ] Dual 테이블이란?

@Overwrite '[Oracle] Dual 테이블이란?', 갓대희의 작은 공간, https://goddaehee.tistory.com/92 [Oracle] Dual 테이블이란? [Oracle] Dual 테이블이란? 안녕하세요. 갓대희 입니다. 이번 포스팅은 [Oracle Dua..

dadmi97.tistory.com

 

 ★ SQL 연산자 

연산자 의미
BETWEEN a AND b a 이상 b 이하의 값
IN(a, b, c, ... ,n) a,b,c,...,n 중 하나와 일치하면 참
LIKE 문자 패턴과 부분적으로 일치 (%, _)하면 참
IS NULL NULL 이면 참

 BETWEEN →  AND 대신 보기 편하게

 IN               →  OR 대신 보기 편하게

 

 PK(Primary Key) 특징

  1. UNIQUE
  2. NOT NULL
  3. 최소성

 

 NULL

NVL NULL인 경우만 지정된 값으로 대치
NVL(NULL 판단 대상, NULL일 때 대체값)
NVL2 NULL 여부에 따라 지정한 값으로 대치
→  NVL(NULL 판단 대상, NOT NULL일 때 대체값, NOT NULL일 때 대체값)

 

 UNION

-- UNION COLUMN이 다를 때 : 오류 발생!
(SELECT studno, name, userid FROM stud_heavy)
UNION
(SELECT studno, name FROM stud_101);

-- UNION : 중복 제거
(SELECT studno, name FROM stud_heavy)
UNION
(SELECT studno, name FROM stud_101);

-- UNION ALL : 중복 포함
(SELECT studno, name FROM stud_heavy)
UNION ALL
(SELECT studno, name FROM stud_101);

 

 

18. JDBC

 

 

 ★ JDBC 프로그래밍 단계 및 클래스 

 executeQuery()    →  select문에 사용

 executeUpdate()   →  insert, delete 문에 사용

 

 

 코드 ! → SELECT문, INSERT문, DELETE문

같다고 합니다

OradDr.java

→ 자바 - 오라클 연결

package ch18;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class OraDr {

	public static void main(String[] args) throws SQLException {
		
		String driver = "oracle.jdbc.driver.OracleDriver";
		// 				         IP   Port Service ID
		String url    = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		
		try {
			// 1. JDBC 드라이버 로드 - 드라이버 클래스 로딩
			Class.forName(driver);	
			
			// 2. DB 연결 - Connection 객체 생성
			// scott tiger 계정으로 접근할거야
			Connection conn = DriverManager.getConnection(url, "scott", "tiger");
			System.out.println("Start");
			
			if(conn != null) { // 객체가 제대로 생성됐으면
				System.out.println("Success 연결 성공");
			} else {
				System.out.println("Fail");
			}
			
			// 연결 해제
			conn.close();
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

 

OraSelect.java

→ 자바 - 오라클 연결해서 Select문 DB에 반영 (executeQuery())

package ch18;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class OraSelect1 {

	public static void main(String[] args) throws SQLException {
		Scanner sc = new Scanner(System.in);

		System.out.println("부서코드를 입력하세요");
		int deptno = sc.nextInt();
		
		// url 한 번 검증되면 갖고 다님
		String driver = "oracle.jdbc.driver.OracleDriver";
		// Localhost -> 127.0.0.1; , Port 번호 : 1521, xe(orcl) -> Service ID(SID)
		String url    = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		
        	// DB에서 수행할 SQL문 (SELECT문)
		String sql    = "Select dname, loc From Dept Where deptno=" + deptno;
		
		// 약속
		Connection conn = null;	// DB
		Statement  stmt = null;	// SQL
		ResultSet  rs   = null;
		
		try {
			Class.forName(driver);	// Driver
			conn    = DriverManager.getConnection(url, "scott", "tiger");
			stmt    = conn.createStatement();	// stmt	; statement 생성
			rs      = stmt.executeQuery(sql);	// SQL  ; SQL문 전송
			
			// rs Row
			if(rs.next()) {
				String dname  = rs.getString("dname");	// rs.getString(1) <-- dname
				String loc    = rs.getString(2);	// rs.getString(2) <-- loc
				
				System.out.println("부서번호 : " + deptno);
				System.out.println("부서명  : " + dname);
				System.out.println("위치   : " + loc);
			}
			else {
				System.out.println("자료가 없습니다.");
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		} finally {
			if(rs != null)   rs.close();
			if(stmt != null) stmt.close();
			if(conn != null) conn.close();
		}
		sc.close();
	}
}

 

OraInsert.java

→ 자바 - 오라클 연결해서Insert문 DB에 반영 (executeUpdate())

package ch18;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class OraInsert {
	public static void main(String[] args) throws SQLException {
		
		Scanner sc = new Scanner(System.in);

		System.out.println("부서번호 입력?");
		String deptno = sc.nextLine();
		System.out.println("부서명 입력?");
		String dname = sc.nextLine();
		System.out.println("위치 입력?");
		String loc = sc.nextLine();
		
		// 약속
		Connection conn = null;	// DB
		Statement  stmt = null;	// SQL
		String driver = "oracle.jdbc.driver.OracleDriver";
		// Localhost -> 127.0.0.1; , Port 번호 : 1521, xe(orcl) -> Service ID(SID)
		String url    = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		
		// 수행할 SQL문 (INSERT문)
		// String sql    = "Insert Into dept values("+ deptno +",'" + dname + "','" + loc + "')";
		String sql = String.format("Insert Into dept values(%s, '%s', '%s')",  deptno, dname, loc);
		
		System.out.println("sql ->" + sql);
		
		try {
			Class.forName(driver); // Driver
			conn	= DriverManager.getConnection(url, "scott", "tiger");
			stmt	= conn.createStatement();
			
			// result Set
			int result		= stmt.executeUpdate(sql);
			if(result > 0) System.out.println("입력 성공^^");
			else		   System.out.println("입력 실패 T.T");
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
		} finally {
			if(stmt != null) stmt.close();
			if(conn != null) conn.close();
		}
		sc.close();
	}
}

 

OraDelete.java

→ 자바 - 오라클 연결해서 Delete문 DB에 반영 (executeUpdate())

package ch18;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class OraDelete {
	public static void main(String[] args) throws SQLException {
		
		Scanner sc = new Scanner(System.in);

		System.out.println("부서번호 입력?");
		int deptno = sc.nextInt();
		
		// 약속
		Connection conn = null;	// DB
		Statement  stmt = null;	// SQL
		String driver = "oracle.jdbc.driver.OracleDriver";
		// Localhost -> 127.0.0.1; , Port 번호 : 1521, xe(orcl) -> Service ID(SID)
		String url    = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		
		
		// DB에서 수행할 SQL문 (DELETE문)
		String sql = "DELETE FROM DEPT WHERE DEPTNO=" + deptno;
		
		System.out.println("sql -> " + sql);
		
		try {
			Class.forName(driver); // Driver
			conn	= DriverManager.getConnection(url, "scott", "tiger");
			stmt	= conn.createStatement();
			
			// result Set
			int result		= stmt.executeUpdate(sql);
			if(result <= 0) System.out.println("삭제 성공^^");
			
		} catch (Exception e) {
			System.out.println(e.getMessage());
		} finally {
			if(stmt != null) stmt.close();
			if(conn != null) conn.close();
		}
		sc.close();
	}
}

 

반응형