OJDBC

  • Oracle Java Database Connection
  • JVM의 시스템과 DB 시스템을 연결하고 통신하기 위한 라이브러리
  • 자바 내장 라이브러리가 아님
  • 파일명 뒤에 번호는 PC에 설치된 JDK 버전과 관련 있음

 

DBMS Driver Loading

  • SQL 파일들 동작하기 위한 코어(class 정보 등)를 로딩하는 것
  • JDBC Driver: DBMS와 통신을 담당하는 자바 클래스로 DBMS마다 별도의 JDBC 드라이버가 필요함
  • 사용할 클래스들은 내장 라이브러리이지만 JDBC 드라이버는 외부 라이브러리를 사용해야 함
  • 오라클을 쓰면 Oracle Driver, MySql을 사용하면 MySql Driver를 활성화하는 것임
  • 이 로딩 과정을 통해 DBMS에 맞는 드라이버의 인스턴스를 활성화함

 

Connection

  • DBMS의 계정을 선택하여 연결 시도하는 것
  • DB가 있는 서버의 IP, 특정 계정의 아이디와 패스워드 필요함

 

WorkSheet

  • 쿼리를 작성하고 실행시키기 위한 객체
  • Connection에서 WorkSheet를 제공함
  • 객체(user, table 등)을 조작하는 DDL과 같은 쿼리는 자바 프로그램에서 하지 않음
  • 자바에서 DBMS와 연결하여 실행하는 쿼리는 DML 위주임
  • executeUpdate
    1. 원본 데이터에 변화를 주지 않는 명령문을 실행할 때 사용함
    2. 리턴 값은 Result Set
    3. select 등
  • executeQuery
    1. 원본 데이터에 변화를 주는 명령문을 실행할 때 사용함
    2. 리턴 값은 int
    3. insert, update, delete 등

 

Result Set

  • executeQuery를 통해 쿼리를 실행하여 받은 result set을 담은 객체
  • next
    1. 가지고 올 데이터가 있는지 확인하고 boolean형 반환
    2. 호출될 때마다 레코드를 확인함(한 줄 한 줄)
    3. 확인하고 있는 레코드에 담긴 컬럼별 데이터들을 getInt, getString 등으로 가지고 와서 사용함

PreparedStatement

  • 문자열 조립
    1. insert 할 때 쿼리문에 넣을 변수들의 조립을 도와주는 기능이 있음
    2. 쿼리 작성할 때 변수들을 넣을 위치에 물음표를 넣어 줌
    3. 물음표에 값을 채워 줌
  • 높은 보안성
    1. SQL injection 공격을 막아 줌(값에 포함되어 있는 싱글 쿼터를 없애기 등)
  • 높은 성능

 

Commit

  • 트랜잭션에 담긴 쿼리를 DBMS로 적용시킴

Close

  • 접속 인원에 제한이 있기 때문에 사용 후 sql 연결을 끊어 줘야 함

 

Close() 이슈

  • 예외가 발생하는 즉시 try-catch로 넘어감
  • 그 뒤에 작성한 close()가 실행이 안 됨
  • 연결 인원 꽉 차서 실행 안 됨
  • 해결법
    1. Finally: 예외 발생 여부에 상관없이 실행하는 코드 부분, try-catch 바깥 부분 코드는 해당 X
    2. Try with resource: 소괄호 안에 close() 해야 할 것들을 넣어 줌, 변수에 담는 것까지 포함해서 작성해야 함

 

 

 

TCL(Transaction Control Language)

  • 작업의 원자성을 가지기 위해 씀
  • Transaction
    1. 더 이상 나눌 수 없는 작업의 최소 단위
    2. SQL Developer가 Oracle에게 전달하는 쿼리(명령문)를 중간에서 보관하여 작업 내용을 보여 줌
    3. Transaction에 보관된 쿼리는 아직 실제 DBMS에 반영되지 않음
    4. DML에 대해서만 동작함
  • rollback: Transaction에 보관된 데이터를 취소함
  • commit: Transaction에 보관된 데이터를 DBMS로 적용시킴
  • savepoint
    1. rollback으로 돌아갈 위치를 태그해 놓음
    2. 태그된 위치로 rollback되면 그 후에 설정한 savepoint는 사라짐 -> 다시확인

 

작업의 원자성

  • 여러 작업을 하나의 작업으로 만듦
  • 어떤 작업에 의해서 여러 내용을 처리해야 할 때 하나의 작업으로 만들어 처리함
  • 작업 내용에 하나라도 예외가 난다면 rollback으로 모든 작업 내용을 취소시킴

 

DCL(Data Control Language)

  • 권한
  • role
    1. 여러 권한을 하나로 묶은 것
    2. resource, connect 등

 

view

  • 하나 이상의 테이블에서 일부 데이터를 선택하여 가상의 테이블을 생성한 객체
  • 특정 컬럼들로 view를 만듦
  • 특정 컬럼들로 테이블을 따로 만드는 방법을 쓰면, 복사된 테이블이 물리적으로 메모리에 저장하게 됨
  • 원본 테이블을 수정하면 복사된 테이블은 수정되지 않음
  • view는 복사본이 아닌 순간적으로 만들어지는 가상의 테이블이기 때문에 실시간으로 원본 데이터의 수정 사항이 적용됨

 

 

 

 

 

 

 

 

 

sequence

  • 값의 순서를 기억해 주는 객체
  • create 할 때 sequence에 대해서 설정해 줌
  • start with: 시작 숫자 설정
  • increment by: 얼마큼 증가할 건지 설정
  • nomaxvalue, maxvalue: 한계 숫자를 정하지 않거나 정함
  • nocache, cache: 오라클 시스템이 시퀀스 값을 마음대로 설정할 수 있는지 여부 설정
  • 시퀀스 값을 사용자가 임의로 건드릴 수 없음
    1. 시퀀스를 삭제하고 값을 넣는 방법
    2. alter 사용하여 increment by를 수정하는 방법

 

delete

  • DML 명령어로서 테이블의 데이터를 삭제함
  • 횡 단위로 지움, 즉, 레코드를 하나를 지움
  • delete from 테이블명; 테이블 안에 있는 모든 레코드를 삭제함
  • delete from 테이블명 where 조건; 조건에 맞는 특정 레코드를 삭제함

 

update

  • DML 명령어로서 테이블의 데이터를 수정함
  • update set 수정할 내용;: 테이블 안에 있는 모든 레코드를 수정함
  • update 테이블명 set 수정할 내용 where 조건: 조건에 맞는 특정 레코드의 컬럼값을 수정함

 

 

set operator

  • 집합 연산자
    1. 연산하는 테이블들의 컬럼 개수가 같아야 함
    2. 연산하는 컬럼들의 자료형이 같아야 함
  • union
    1. 테이블을 세로로 합침
    2. 중복된 데이터를 제거하고 합침
  • union all: 중복 제거 없이 모두 합침
  • intersect: 두 테이블의 중복되는 데이터 출력함

 

 

 

join

  • 여러 개의 테이블을 묶어서 하나의 데이터로 만듦
  • 하나의 문법에 여러 개의 테이블을 같이 동작시킴

 

natural join

  • cartesian 곱
  • 테이터 간의 모든 조합을 출력시킴

 

inner join

  • where절에 있는 조건을 충족시키는 데이터들의 집합
  • 조건을 충족시키는 데이터들을 하나의 결과로 출력해 주는 join문

 

outer join

  • 조건을 충족시키지 않지만 모두 출력해 주는 join문
  • left outer join
  • right outer join
  • full outer join은 지원하지 않음

 

self join

  • 하나의 테이블을 여러 개의 테이블처럼 만들 수 있음

 

ANSI 표준 문법

  • 표준 SQL문이므로 모든 DBMS에서 인식함
  • full outer join 가능

 

 

 

 

 

group by

  • 같은 값끼리 그룹화
  • 그룹화시킨 대상 컬럼만 출력됨
  • 즉, group by 뒤에 오는 컬럼이나 그룹 함수만 select 할 수 있음
  • 그룹 함수를 쓰면 그룹별로(그룹화된 데이터들끼리) 출력됨

 

having

  • 그룹 함수는 where에서 사용할 수 없음
  • where 대신 그룹화된 데이터에 조건을 명시할 때 쓰임
  • 그룹화된 데이터라도 그룹 함수에 명시하지 않았으면 where절에서 써야 함

 

rollup

  • 그룹화된 데이터들의 집계를 출력해 줌
  • 데이터베이스 내에서 데이터를 확인하는 용도로 쓰임
  • 인자값에 여러 개 입력 가능

cube

  • rollup 함수의 업그레이드 버전

 

grouping

  • null 값을 조사하는 함수
  • null이 어떤 이유에 의해서 발생했는지 알려 줌
  • 원래 있는 null이면 0을 리턴
  • 집계 함수에 의해서 발생한 null이면 1을 리턴

 

 

 

+ Recent posts