결론은 '껐다 켜기'다. JDBC를 통해 DB를 연동하면 자바를 통해 SQL 문을 수행할 수 있다. 이때 PreparedStatement 객체를 만들어 SQL 문을 저장한다. 만약 SQL문이 update, delete, insert 중 하나면 PreparedStatement의 executeUpdate(); 메서드를 통해 SQL 문을 수행한다. DAO 클래스에서 급여(SAL) 칼럼의 값을 주어진 인상률(%) 만큼 높여주는 SQL 문을 수행하려고 시도했으나 좀처럼 말을 듣지 않았다. public void raiseSal(double rate) { Connection con = GetConnection.getConnection(); PreparedStatement pstmt = null; try { pstmt..
자바로 SQL문을 실행하고 데이터베이스를 조작하려면 JDBC를 통해 DBMS와 연결을 시켜줘야 한다. 이때 JDBC의 API인 커넥션(Connection) 객체를 만들고 클라이언트 > 미들웨어 > DBMS > 미들웨어 > 클라이언트로 이어지는 연결 과정이 필요하다. 그런데 이 방법은 클라이언트의 요청이 있을 때마다 커넥션 객체를 생성해야 하기 때문에 비효율적이다. 이러한 문제를 해결하기 위해 커넥션 풀(Connection Pool)을 사용한다. Connection Pool 커넥션 풀은 DBMS로부터 커넥션 해놓은 객체를 풀(pool)에 저장해두고 클라이언트 요청이 오면 커넥션을 빌려주고 작업이 마무리되면 다시 커넥션을 풀에 반납하는 방식으로 작동한다. 클라이언트의 요청이 있을 때마다 DBMS를 찾지 않아..
JDBC(Java Database Connectivity) JDBC는 영문 의미 그대로 자바를 이용해서 데이터베이스에 연결하는 API를 말한다. 자바 언어로 데이터베이스에 있는 데이터를 조작할 수 있다. JDBC가 있기 이전에도 자바를 통한 데이터베이스 접근은 시도됐다. 그러나 각기 다른 구조와 특징을 가지고 있는 DBMS가 여럿이라 문제를 겪었다. 자바는 이런 한계를 극복하고자 모든 DBMS에서 공통적으로 사용할 수 있는 인터페이스와 클래스로 구성된 API를 개발했는데, 그게 JDBC다. JDBC를 기반으로 각 DBMS는 인터페이스와 클래스를 구현한 JDBC 드라이버를 제공한다. 개발자는 자신이 사용하는 DBMS의 벤더로부터 JDBC 드라이버를 다운로드해 자바와 연동할 수 있다. 오라클의 경우 ojdb..
PL/SQL Procedural Language/Structured Query Language의 줄임말이다. 오라클의 SQL 전용 언어라고 보면 된다. 일반 SQL 문으로는 처리하기 어려운 문제들이 있는데, SQL에 변수, 제어, 입출력 등 기능을 추가해서 그런 문제들을 해결할 수 있게 돕는다. PL/SQL는 크게 3가지다. 프로시저 트리거 사용자 지정 함수 프로시저(PROCEDURE) 프로시저는 특정 기능을 수행하는 로직을 만들어 놓고 필요할 때 이를 수동으로 동작시키는 방식으로 사용된다. 코드를 좀더 편하고 효율적으로 사용할 수 있다. 또 시스템 성능에도 도움이 된다고 한다. 프로시저는 오라클 데이터베이스에 스키마 객체로 저장된다. 로직을 처리하기만 하고 결과 값은 반환하지 않는다. 사용법 CREAT..
시퀀스(SEQUENCE) 시퀀스(sequence)는 순서에 따라 나열되는 정수의 목록이라고 정의할 수 있다. 또 유일한 값을 생성해주는 오라클의 객체다. 이게 무슨 말인가 싶지만 핵심을 기억하면 그리 이해하기 어려운 개념은 아니다. 핵심은 시퀀스를 생성함으로써 개발자는 기본키처럼(예: id number) 순차적으로 증가하는 칼럼을 헷갈리지 않고 손쉽게 insert 할수 있게 된다는 것이다. 간단한 예제를 통해 개념을 이해해보자. 사용법은 CREATE SEQUENCE 시퀀스명; 이다. 이제 item_seq라는 이름의 시퀀스를 만든다. CREATE SEQUENCE item_seq; 시퀀스가 생성됐다. NEXTVAL NEXTVAL는 현재 시퀀스의 다음 값을 불러온다. SELECT item_seq.NEXTVAL..
ROWNUM ROWNUM은 오라클 내부적으로 생성되는 가상 컬럼이다. 자료의 일부를 잘라내서 확인하는 용도로 자주 활용된다. SQL 조회 결과의 순번을 기준으로 N번째까지 가져오는 식이다. ROWNUM 함수는 파라미터를 갖지 않는다. 우선 예제를 진행하기 위해서 테이블을 만들고 적당히 값을 넣어주도록 한다. -- customers 테이블 생성 CREATE TABLE customers ( customer_id number(10) NOT NULL, last_name varchar2(50) NOT NULL, first_name varchar2(50) NOT NULL, favorite_website varchar2(50), CONSTRAINT customers_pk PRIMARY KEY (customer_id)..
내장함수 SQL에서는 함수를 사용한다. 오라클 같은 DBMS가 기본적으로 제공하는 함수를 내장함수라고 한다. 반면 사용자가 필요에 따라 직접 만드는 건 사용자 정의 함수라 불린다. 내장함수는 또다시 단일행함수 집계함수 분석함수 로 나뉜다. 단일행 함수는 한 줄의 레코드를 처리해주는 함수로 이해하면 된다. 반면 집계함수와 분석함수는 받아온 레코드를 하나의 그룹으로 인식하고 하나의 결과를 도출한다. 간단한 예로 평균을 내는 집계함수 AVG는 여러 레코드 값을 통해 하나의 값을 도출한다. 단일행 함수는 숫자, 문자, 날짜, 변환, NULL 등으로 또 한번 세분화된다. 그런데 굳이 이런 구분을 할 필요는 못 느끼겠다. 때문에 이 글에서 소개하는 ROUND, ABS, UPPER, SUBSTR은 단일행 함수에 속한..
외부 조인(OUTER JOIN) 내부 조인(INNER JOIN)을 사용할 경우 필연적으로 조인이 안 되는 데이터가 발생할 수 있다. 내부 조인 자체가 특정 컬럼 값이 같은 조건을 찾아 조인하기 때문이다. 외부 조인(OUTER JOIN)은 조인이 안되는 데이터까지 선택적으로 포함시켜 조인할 수 있다. 사용 문법은 이렇다. SELECT 칼럼... FROM 테이블1 (별칭) LEFT/RIGHT/FULL OUTER JOIN 테이블2 (별칭) ON 조인 조건; 여기서 LEFT, RIGHT, FULL을 보면 알 수 있듯 외부 조인은 이 3 가지 방법으로 나뉜다. 의외로 단순하다. 해당 문장을 기준으로 왼쪽 테이블이냐 오른쪽 테이블이냐를 선택한다. LEFT OUTER JOIN을 하면 해당 문장을 기준으로 왼쪽(테이블..
오라클 데이터베이스 SETUP.exe로 최종 설치를 완료하면 오라클을 곧바로 사용할 수 있는 환경이 만들어진다. 설치를 하면 자동으로 path 환경변수에 오라클 exe를 다운받은 bin폴더가 지정된다. 때문에 곧바로 명령 프롬프트(cmd)로 오라클을 사용할 수 있다. cmd창을 열고 sqlplus를 입력, enter를 치면 사용자명을 입력하라는 문구가 나온다. 설치가 무사히 끝난 것이다. 셋업 파일을 다운받을 때 설정한 system 계정의 아이디와 비밀번호를 입력하면 cmd로 데이터베이스를 조작할 수 있다. 오라클은 컴퓨터를 켜면 자동으로 실행되도록 기본값이 설정된다. 자동으로 프로그램이 실행되는 걸 원치 않으면 서비스에서 수정이 가능하다. 제어판 >> 관리도구 >> 서비스 파일명 OracleServic..