Post

SQL - 테이블 생성, 변경, 삭제

TABLE CRUD

테이블 생성

테이블을 생성하기 위해서는 각 column의 타입을 지정해줘야한다.

데이터 타입 종류

아래에서 설명하는 데이터 타입은 ORACLE을 기반으로 한 내용이다. MariaDB나 Mysql은 공식 문서를 참고하기 바란다.

Character

  • CHAR(n) 고정 길이 문자열이고 최대 2000 bytes이다.

  • NCHAR(n) Unicode만 넣는 고정 길이 데이터 타입이다, 최대 2000bytes이다

  • VARCHAR2(n) 가변길이 문자열, 최대 4000Bytes이다.

  • NVCHAR(n) Unicode만 넣는 고정 길이 데이터 타입이다, 최대 2000bytes이다

  • LONG 최대 2GB 크기의 가변길이 문자형

  • CLOB 대용량 텍스트 데이터 타입(최대 4Gbyte)

  • NCLOB 대용량 텍스트 유니코드 데이터 타입(최대 4Gbytes)

Numeric

  • Number(p[,s]) 가변 숫자 최대 22bytes이며, p는 정확도 1~38, s는 소수점 -87~127이다.

  • FLOAT(P) NUMBER의 하위타입 / P (1~128 디폴트 : 128)

  • BINARY_FLOAT 32비트 부동소수점 수, 최대 4Bytes

  • BINARY_DOUBLE 64비트 부동소수점 수, 최대 8Bytes

Datetime

  • Date BC 4712년 1월 1일부터, 9999년 12월 31일 연,월,일,시,분초까지 입력 가능

  • Timestamp 연도, 월, 일, 시, 분, 초, 밀리초까지 입력가능

  • Timestamp with time zone 기본 Timestamp에 time zone 정보 포함

Binary data

  • Raw(n) 길이가 n인 이진 데이터 (최대 길이 = 32767 Bytes)

Row Id

  • RowID Table에서 row의 unique address를 표현

Large Object

  • CLOB Single-bytes나 Multibytes의 문자 데이터를 저장

  • BLOB Unstructured binary large object를 저장

위의 데이터 타입을 통해 아래와 같이 테이블을 생성을 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE STUDENT 
(
    STUDENT_ID NUMBER(30) NOT NULL PRIMARY_KEY,
    NAME VARCHAR2(30) NOT NULL,
    GENDER VACHAR2(10) NOT NULL,
    IMAGE BLOB,
    BIRTH_DAY DATE NOT NULL,
    ADDRESS VARCHAR2(10)
);
-- 학생 테이블을 만든다.
-- 학번을 30자리까지, 이름은 가변 길이 30으로
-- 성별도 가변 길이 10의 글자로
-- 이미지는 BLOB 타입으로
-- 생일은 날짜 타입으로
-- 주소는 가변 문자로 길이 10까지

테이블 변경

특정 Column을 추가하는 방향으로 많이 사용한다. 아래의 경우 제한된다.

  • Column type 변경
  • Column 길이 줄이기
  • Null Column 바꾸기
  • Column 재배치
  • (DBMS마다 지원여부가 다르지만)Column 삭제
1
2
3
4
ALTER TABLE STUDENT ADD (GRADE FLOAT(2))
ALTER TABLE STDUENT MODIFY (ADDRESS VARCHAR2(20))
-- STUDENT 테이블의 GRADE라는 열을 FLOAT(2) 데이터 타입으로 추가
-- STUDENT 테이블의 ADDRESS 열을 VARCHAR2(20)으로 길이 증가

테이블 삭제

삭제하고자 하는 테이블의 이름을 입력하면 된다.

1
2
DROP TABLE STUDENT;
-- STUDENT 테이블을 삭제

참고자료

This post is licensed under CC BY 4.0 by the author.