본문 바로가기
Java & Kotlin/Backend

3. TABLE (테이블생성, 테이블 컬럼관리, 자료형)

by heekng 2021. 1. 19.
반응형
 

TABLE이란 행과 열로 구성된 데이터들의 집합입니다.

행(row, record)은 각각의 레코드를 뜻하고, 열(column, field)는 각각의 항목을 뜻합니다.


1. 데이터베이스에서의 자료형

데이터베이스에서 자료형은 다음과 같습니다.

NUMBER

정수와 실수 모두 표현가능

NUMBER(p)

최대 p자리수까지 표현하는 수 (1자리수부터 38자리수까지 표현가능)

CHAR(n)

문자열 (n: 바이트수, 최대 2000byte)

VARCHAR2(n)

가변문자열 (n: 바이트 수, 최대 4000byte), 데이터 크기만큼만 할당

DATE

날짜 형식 문자열


2. 테이블(TABLE)

1) 테이블 생성: CREATE TABLE [테이블명] ([항목명1][자료형], [항목명2][자료형],...);

예) CREATE TABLE ex_table (ex_num NUMBER, ex_name VARCHAR2(20), ex_date DATE);

위와 같이 Table created.라는 문구와 함께 테이블이 생성됩니다.

2) 테이블 제약 조건(Constraint)

테이블을 생성할 때에 각각의 항목(column)에 여러가지 제약조건을 걸 수 있습니다.

NOT NULL

필수로 등록되어야 한다.(누락되면 안된다.)

UNIQUE

유일한 값이어야 한다.(다른 레코드가 중복된 값을 가지면 안된다.)

PRIMARY KEY

기본 키(레코드를 식별하는 대표 값)

NOT NULL + UNIQUE의 형태이며, 하나의 레코드가 여러개의 기본 키를 가질 수는 없다.

DEFAULT [값]

이 항목이 비어있으면(누락시) 기본값을 이것으로 설정하겠다.

CHECK(범위)

이 범위 안에서의 데이터만 저장을 허용하겠다.

테이블 제약조건을 거는 방법은 테이블 생성시에 자료형과 ',' 사이에 제약조건을 넣는 것입니다.

예) CREATE TABLE ex_table (ex_num NUMBER PRIMARY KEY, ex_name VARCHAR2(20) NOT NULL, ex_date DATE DEFAULT ('20/01/01', 'YY/MM/DD');

코드를 작성할 때 ; 를 입력하기 전이라면 Enter으로 줄넘김이 가능하다.

위 코드를 해석하면 ex_table이라는 이름의 테이블을 생성하며 ex_table을 구성하는 항목은 ex_num, ex_name, ex_date이다.

ex_num은 자릿수가 정해지지 않은 수이며, 기본 키이다.

ex_name은 20byte의 가변문자열이며, 필수로 등록되어야 한다.

ex_date는 날짜 형식의 문자열이며, 입력되지 않은 기본값은 '20/01/01'이다.

**DATE의 형식은 SYSDATE과 TO_DATE가 있다.

SYSDATE

현재시간이 입력된다.

TO_DATE

TO_DATE('원하는 시간(날짜)', '원하는 입력 형식')

이외의 예시에서 이용하지 않은 제약조건으로

CHECK의 범위는 AND와 OR으로 여러가지의 범위를 정할 수 있다.

한 항목에 여러가지 제약조건을 넣을 수 있으며, 이 때에는 다른 구별하는 문구 없이 띄어쓰기를 이용하여 작성하면 된다.

3. 테이블 컬럼 확인(형태 확인): DESC [테이블명];

예) DESC ex_table;

위와 같이 Table에 구성된 컬럼의 이름과, Null여부, Type을 표시해줍니다.

4. 테이블 삭제: DROP TABLE [테이블명];

예) DROP TABLE ex_table;

위와 같이 Table dropped.문구와 함께 테이블이 삭제됩니다.

5. 테이블 컬럼 추가: ALTER TABLE [테이블명] ADD([컬럼명][자료형]);

예) ALTER TABLE ex_table ADD(ex_score NUMBER(3));

6. 테이블 컬럼 자료형 수정: ALTER TABLE [테이블명] MODIFY ([컬럼명][새 자료형]);

예) ALTER TABLE ex_table MODIFY (ex_score NUMBER(5));

7. 테이블 컬럼 이름 수정: ALTER TABLE [테이블명] RENAME COLUMN [원래 컬럼명] TO [새 컬럼명];

예) ALTER TABLE ex_table RENAME COLUMN ex_score TO ex_score2;

8. 테이블 컬럼 삭제: ALTER TABLE [테이블명] DROP COLUMN [컬럼명];

예) ALTER TABLE ex_table DROP COLUMN ex_score2;

반응형