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 테이블을 삭제
참고자료
- 위키백과 - 데이터베이스
- [Oracle] 오라클 데이터타입(DataType) 총정리
- 대학생 시절 강의 자료
- 데이터베이스, 이한출판사, 김경창 외 2명