Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- SQL
- 객체복제
- 데이터베이스
- 디자인패턴
- docker network
- mcp server
- SQL기초
- 어댑터패턴
- LLM
- linux 권한
- OOP
- Laravel
- SQL문법
- PHP객체지향
- 데코레이터패턴
- Tool Calling
- mcp client
- docker
- ai agent
- MCP
- Agent Loop
- 인덱스
- PHP
- 매직메서드
- 라라벨
- 객체지향
- dhgrp
- MySQL
- ai 에이전트
- 소프트웨어설계
Archives
- Today
- Total
개발블로그
[SQL] 테이블 생성과 변경 본문
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 |