개발블로그

[SQL] 테이블 생성과 변경 본문

STUDY/SQL

[SQL] 테이블 생성과 변경

devmel 2026. 7. 30. 10:04
Contents 접기
 

CREATE TABLE

개념

데이터베이스에 새로운 테이블을 생성할 때 사용하는 구문

 

문법

CREATE TABLE [IF NOT EXISTS] 테이블명 (
 	 -- 컬럼 정의를 쉼표로 구분
    컬럼명1 자료형 [컬럼_제약조건 ...],
    컬럼명2 자료형 [컬럼_제약조건 ...],
    ...
    컬럼명N 자료형 [컬럼_제약조건 ...],

	-- 아래와 같이 제약조건 추가 가능
    [테이블_제약조건1],
    [테이블_제약조건2],
    ...
    [테이블_제약조건N]
);

-- 조회 결과로 테이블 생성
-- 기본키, 외래키, 인덱스, 기본값 등의 설정은 그대로 복사되지 않을 수 있으므로 별도 확인 필요
CREATE TABLE 새로운_테이블명 AS
SELECT
    컬럼1,
    컬럼2,
    ...
FROM 원본_테이블
WHERE 조건;

 

제약조건

특징

하나의 컬럼에 필요한 제약조건을 여러 개 함께 지정 가능

 

주요 제약조건

제약조건 역할
NOT NULL NULL 저장 제한
UNIQUE (컬럼명) | (컬럼명, 컬럼명..) 중복값 저장 제한
PRIMARY KEY (식별_컬럼) | (컬럼명, 컬럼명..) 각 행을 고유하게 식별 (중복될 수 없음 + NULL일 수 없음)
FOREIGN KEY (외래키_컬럼)
REFERENCES 참조_테이블 (참조_컬럼)
    [ON UPDATE 참조_동작]
    [ON DELETE 참조_동작]
다른 테이블의 값과 연결

- 여러 컬럼 구성 가능
(외래키 컬럼과 참조 컬럼은 개수와 순서가 서로 맞아야 함)
FOREIGN KEY ( 외래키_컬럼1,외래키_컬럼2)
REFERENCES 참조_테이블 ( 참조_컬럼1, 참조_컬럼2)

- 참조동작
RESTRICT : 참조 중인 행이 변경 또는 삭제 제한
NO ACTION : 규칙을 위반하는 변경 또는 삭제 제한
CASCADE : 연결된 행에도 변경 또는 삭제 적용
SET NULL : 외래키 값을 NULL로 변경
SET DEFAULT : 외래키 값을 기본값으로 변경 
CHECK(컬럼명 비교연산자 기준값) 지정한 조건을 만족하는 값만 허용
DEFAULT 기본값 값을 생략했을 때 사용할 기본값 지정

 

제약조건 이름 지정

: 이후 제약조건을 변경하거나 삭제할 때 대상을 명확하게 지정할 수 있다. 

CONSTRAINT 제약조건명 제약조건

 

컬럼 | 테이블 제약조건

 

컬럼 제약조건

컬럼 정의 바로 뒤에 작성

CREATE TABLE 테이블명 (
    컬럼명 자료형 제약조건
);

한 컬럼에 대한 규칙을 간단하게 표현할 때 사용

 

테이블 제약조건

컬럼 정의가 끝난 뒤 별도로 작성

CREATE TABLE 테이블명 (
    컬럼명1 자료형,
    컬럼명2 자료형,

    제약조건 (
        컬럼명1,
        컬럼명2
    )
);

여러 컬럼을 하나의 제약조건으로 묶거나 제약조건 이름을 지정할 때 사용

 


 

ALTER TABLE

개념

이미 생성된 테이블의 구조를 변경할 때 사용하는 구문 

 

문법

ALTER TABLE 테이블명
변경_구문;

변경_구문 ::=

    ADD [COLUMN] 컬럼명 자료형 [제약조건 ...]

  | ADD [CONSTRAINT 제약조건명] 제약조건

  | ALTER [COLUMN] 컬럼명 변경_내용

  | MODIFY [COLUMN] 컬럼명 자료형 [제약조건 ...]

  | DROP [COLUMN] 컬럼명

  | DROP CONSTRAINT 제약조건명

  | RENAME COLUMN 기존_컬럼명 TO 새로운_컬럼명

  | RENAME TO 새로운_테이블명

 

변경 명령 역할
ADD 컬럼 또는 제약조건 추가
ALTER·MODIFY 컬럼 정의 변경
DROP 컬럼 또는 제약조건 삭제
RENAME 컬럼 또는 테이블 이름 변경

 


 

DROP TABLE과 TRUNCATE TABLE

DROP TABLE

개념

테이블의 구조와 저장된 데이터를 모두 삭제하는 구문

 

문법

DROP TABLE 테이블명;

-- 테이블이 존재할 때만 삭제
DROP TABLE IF EXISTS 테이블명;

-- 여러 테이블 삭제
DROP TABLE 테이블명1, 테이블명2, ...;

 

TRUNCATE TABLE

개념

테이블의 구조는 유지하고, 테이블에 저장된 모든 행을 한꺼번에 삭제하는 구문

 

문법

TRUNCATE TABLE 테이블명;

 

'STUDY > SQL' 카테고리의 다른 글

[SQL] SQL 표현식  (0) 2026.07.30
[SQL] 집합연산  (0) 2026.07.30
[SQL] 데이터 추가·수정·삭제  (1) 2026.07.29
[SQL] 서브쿼리  (0) 2026.07.29
[SQL] JOIN  (0) 2026.07.29