개요
데이터베이스의 기본개념을 익히고 기본적인 SQL문을 알아보겠다.
JSP를 사용하는 이유중 하나인 자바와 SQL을 연동하는 JDBC에 대해서도 알아보겠다.
DB
DB는 관리할 수 있는 형태로 정리된 자료를 말하며 DBMS는 DB를 만들고 사용하기 위한 도구를 지칭한다.
DB는 모두 관계형 데이터베이스에 기본을 두고 있으며 SQL이라는 표준 데이터베이스 관리 언어를 지원한다.
서로 관련된 정보를 모아서 레코드를 만들고 다시 서로 관련된 레코드들을 모아서 데이터 파일을 만든다.
DB의 장점
- 데이터 중복을 최소화할 수 있다.
- 데이터 불일치 문제를 해결할 수 있다.
- 데이터를 쉽게 공유할 수 있다.
- 정보 표준화를 이룰 수 있다.
- 데이터에 대한 보안성을 제공한다.
- 데이터의 무결성이 유지된다.
- 대량의 데이터를 좀더 빠르게 검색할 수 있다.
- 텍스트 이외의 다양한 데이터를 관리할 수 있다.
- 어플리케이션 개발에 도움이 된다.
관계형 데이터베이스
데이터를 효율적으로 관리하려고 데이터에 관계 개념을 사용한 것이다.
데이터의 기본 관리 단위는 테이블이고 칼럼과 로우로 이루어져있다.
관계라는 의미는 테이블 간의 연관관계를 말하는 것으로 관계형 데이터베이스에서는 주 키와 외래 키등을 통해 테이블 간의 관계를 구조화한다.
DB의 테이블
테이블이란 데이터를 공통 속성으로 묶고 분류하여 기록한 형태로 데이터베이스 관리의 기본이다.
칼럼은 데이터를 구별하기 위한 속성이다. 필드라고도 한다.
로우 한줄 단위의 데이터의 집합이다. 레코드라고도 한다.
DB의 키
만약 중복된 데이터가 있다고 했을 때 데이터의 업데이트의 요청을 어떤것에 반영해야하는지 모호할 때가 있다.
이를 해결하기 위해 키를 사용한다.
키
데이터베이스에서는 데이터를 다른 데이터와 구분할 수 있는 고유 정보가 필요한데, 이를 키라고 한다.
키는 관계형 데이터베이스의 대표적인 특징 중 하나이다.
주 키
Primary key.
테이블 하나에서 키 여러개를 가질 수 있지만, 그중 절대적으로 우선시되는 키를 주 키라고 한다.
테이블 하나에서 주 키는 오직 하나이며 로우를 구분해주는 값이다. 중복되는 데이터는 없어야한다.
외래 키
테이블 간의 관계를 나타내고, 데이터의 일관성을 유지하기 위해 사용한다.
SQL
데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 구조적 데이터 쿼리 언어를 의미한다.
SQL은 크게 DML과 DDL로 나누어진다.
DDL
Data Definition Language의 약자이다.
CREATE TABLE
테이블을 생성할 때 사용하는 명령어이다.
자료가 들어있는 테이블의 구조를 변경하는 것은 쉽지 않기에 처음 만들 때 잘만들어야한다.
ALTER TABLE
테이블 구조를 변경할 때 사용하는 명령어이다.
그러나 변경할 때 제약사항이 있다.
테이블에 자료가 없는 경우
- 칼럼의 데이터 자료형을 변경할 수 있다.
- 칼럼의 폭을 줄이거나 늘릴 수 있다.
- NULL이나 NOT NULL 속성을 갖는 칼럼을 추가시킬 수 있다.
테이블에 자료가 있는 경우
- 칼럼의 데이터 자료형을 변경할 수 없다.
- 폭을 줄일 수는 없지만, 늘릴 수는 있다.
- NOT NULL 필드는 추가할 수 있으나 NULL은 추가할 수 없다.
DROP TABLE
테이블을 완전 삭제할 때 사용하는 명령어이다.
DML
Data Manipulation Language의 약자이다.
INSERT
테이블에 새로운 데이터를 추가할 때 사용한다.
SELECT
테이블에서 데이터를 조회하는 데 사용하는 구문이다.
UPDATE
데이터의 내용을 업데이트 시킬 때 사용한다.
DELETE
데이터를 삭제할 때 사용하는 명령이다.
JDBC
Java DataBase Connectivity의 약자로 자바 프로그램에서 다른 기종간의 DB를 접속할 수 있도록 만든 API 규격이다.
JDBC의 프로그래밍 단계
- JDBC 드라이버 로드
- DB 연결
- Statement 생성
- SQL문 전송
- 결과 받기
- 연결 해제
JDBC 드라이버 로드
데이터베이스에 접속하려면 해당 데이터베이스의 JDBC 드라이버를 로드해야한다.
JDK에 있는 JDBC는 구현 내용없이 규격만 포함되어 있다.
System.setProperty()와 Class.forName()클래스를 사용해서 로드한다.
DB 연결
데이터베이스와 연결하려면 Connection 클래스의 인스턴스가 필요하며 DriverManager.getConnection() 메서드를 이용해서 연결할 수 있다.
Statement 생성
Statement는 데이터베이스 연결로부터 SQL문을 수행할 수 있도록 해주는 클래스이다.
executeQuery()를 이용해서 SELECT문을 executeUpdate()를 사용하여 UPDATE, DELETE를 수행한다.
SQL문 전송
SQL문 전송
결과 받기
결과 받기
연결 해제
연결해제