1달간의 Java SE 기초 수업을 마치고 오늘부터 Database 수업에 들어갔습니다.

DB 첫 수업이기 때문에 초기 세팅에 중점을 두었고 Database server 설치와 java app에서의 연동, 그리고 간단한 SQL 문법을 다루었습니다.

그렇지만 이번 글에서는 설치와 세팅 과정은 생략하고 앞으로 배울 Database에 대해 살펴보도록 하겠습니다.

sun cloud

Database란?

Database는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합을 의미합니다.

그렇다면 이를 관리하는 시스템도 필요할텐데 이 시스템을 데이터베이스관리시스템(Database Management System)이라고 합니다. 예를 들면 오라클 DBMS, MSSQL, DB2 등이 여기에 속합니다.

또 함께 자주 듣게 되는 용어로 관계형 데이터베이스(Relational Database)가 있는데, 데이터들을 여러 항목(컬럼)의 집합으로 표현하는 테이블 형태로 데이터를 관리하는 방식을 말합니다. 수업에서는 이클립스로 Oracle을 사용해 진행할 예정입니다. DB는 회사별로 Oracle, MySQL, MSSQL, DB2 등의 제품군이 있습니다.

sun cloud

테이블

DB의 기본적인 저장 단위인 테이블을 먼저 살펴보겠습니다.

databaseTable0831

TABLE: 데이터를 저장하는 공간으로 시스템 내에서 독립적으로 사용되길 원하는 엔티티( 여기서 엔티티란 유용한 정보를 저장하고 관리하기 위한 집합적인 것 또는 개체라고 볼 수 있습니다 )를 표현합니다.

ROW: 레코드(record) 또는 튜플(tuple)이라고 불리며 단일 구조 데이터 항목, 즉 일련의 관련 자료를 말합니다. 각 행에 나타냅니다.

COLUMN: 속성(attribute) 또는 필드(field)라 불리며 튜플의 이름 요소를 말합니다. 각 열에 나타냅니다.( 참고:필드와 필드값은 한 열이나 한 칼럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이라고 합니다. )

sun cloud

테이블을 생성할 때에는 아래와 같은 조건을 사용할 수 있습니다.

CONSTRAINT: 제약 조건

제약조건 설명
PRIMARY KEY(PK) 유일한 값으로 테이블의 각행을 식별합니다(UNIQUE와 NOT NULL조건을 모두 만족해야 합니다) ex) PRIMARY KEY(PK) -> UNIQUE + NOT NULL
UNIQUE KEY(UK) 테이블의 모든 행을 유일하게 하는 값을 가진 열을 말합니다(NULL을 허용합니다)
NOT NULL(NN) 열은 NULL값을 포함할 수 없습니다
CHECK(CK) 참이어야 하는 조건을 지정함(대부분 업무 규칙을 설정)
FOREIGN KEY(FK) 열과 참조된 열 사이의 외래키 관계를 적용하고 설정합니다


데이터 타입

테이블에서 사용할 데이터들의 타입은 아래와 같이 나뉩니다. 아래의 데이터 타입 외에도 다양한 종류의 타입들이 있지만 수업에서는 VARCHAR2(n)와 숫자형 NUMBER를 주로 사용할 예정입니다.

Data Type 설 명
VARCHAR2(n) 가변 길이 문자 데이터(1~4000byte)(n: 문자열 최대 개수)
CHAR(n) 고정 길이 문자 데이터(1~2000byte)
NUMBER(p,s) 전체 p자리 중 소수점 이하 s자리(p:1~38, s:-84~127)
DATE 7Byte(BC 4712년 1월 1일부터 AD 9999년 12월 31일)
LONG 가변 길이 문자 데이터(1~2Gbyte)
CLOB 가변 길이 문자 데이터(1~4Gbyte)


DDL, DML, DCL

테이블을 생성했다면 이를 제어해야 할텐데 DB를 제어하는 언어로는 SQL(Structure Query Language), CQL 등이 있습니다.

저희는 SQL(흔히 SQL을 씨퀄이라고 읽기도 합니다)을 사용할 예정이며 SQL을 통해 DB를 정의, 조작, 제어할 수 있습니다.

그리고 SQL은 DDL, DML, DCL과 같은 범주로 나눌 수 있습니다.

종류 내용
DDL(Data Definition Language: 데이터 정의어 CREATE 생성, DROP 삭제, ALTER 수정
DML(Data Manipulation Language: 데이터 조작어) INSERT 삽입, SELECT 조회, UPDATE 수정, DELETE 삭제(CRUD, Create Read Update Delete)
DCL(Data Control Language: 데이터 제어어) COMMIT 실제 DB에 반영, ROLLBACK 작업 취소하고 원상태로 되돌림, GRANT 권한부여, REVOKE 권한취소



예제 코드

코드들을 살펴보겠습니다.

1
DROP TABLE typetest;

첫번째 코드입니다. DDL의 DROP을 사용해서 테이블을 삭제할 수 있습니다.


1
2
3
4
CREATE TABLE altertest(
    id VARCHAR2(100) PRIMARY KEY,
    hit NUMBER DEFAULT 0
)

두번째 코드입니다. DDL의 ALTER 기능으로 테이블의 정보(TABLE명, COLUMN명, 제약조건, 타입)를 변경할 수 있습니다.


DEFAULT 제약조건: 별도로 INSERT하지 않으면 명시한 초기값으로 설정됩니다.

1
2
INSERT INTO altertest(id) VALUES('java');
SELECT id, hit FROM altertest;

세번째 코드는 idjava로 할당한 뒤 id값과 hit 값을 검색하는 예제인데 이 경우 hit에는 값을 지정하지 않았기 때문에 DEFAULT인 0이 저장됩니다.


1
2
ALTER TABLE altertest2 RENAME COLUMN hit TO count;
SELECT * FROM altertest2;

마지막 코드는 DDL의 ALTER기능을 사용해 컬럼명을 hit에서 count로 변경하는 코드입니다.


(참고) sql 실행 단축키: 영역 지정 후 ALT + X

다음 글에서는 테이블을 생성하고 조작하는 코드 예제를 살펴보겠습니다.

Database 카테고리 내 다른 글 보러가기

댓글남기기