1. SQL 구문 분류
DML (데이터 조작어)
SELECT -- 조회
INSERT -- 삽입
UPDATE -- 수정
DELETE -- 삭제
DDL (데이터 정의어)
- 테이블, 제약조건 등 객체 구조 정의/변경/삭제
CREATE -- 객체 생성
ALTER -- 객체 구조 변경
DROP -- 객체 제거
2. 테이블 생성 기본 문법
CREATE TABLE 테이블명 (
컬럼명 자료형 [기본값] [제약조건],
...
);
3. 무결성 제약조건 (Integrity Constraints)
| 제약조건 |
설명 |
| NOT NULL |
NULL 불허 |
| UNIQUE |
중복 불허 |
| PRIMARY KEY |
기본키, NOT NULL + UNIQUE |
| FOREIGN KEY |
다른 테이블의 키 참조 |
| CHECK |
조건 만족 여부 검증 |
컬럼 레벨 제약조건
CREATE TABLE child_1 (
a INT AUTO_INCREMENT PRIMARY KEY,
b INT NOT NULL,
c VARCHAR(10) UNIQUE,
d INT REFERENCES parent(p),
e INT CHECK (e > 0)
);
테이블 레벨 제약조건 (복합키 등)
CREATE TABLE child_2 (
a INT,
b INT,
c VARCHAR(10),
d INT,
e INT,
CONSTRAINT un_child_2_c UNIQUE(c),
CONSTRAINT chk_child_2_e CHECK (e > 0),
PRIMARY KEY (a, b),
FOREIGN KEY (d) REFERENCES parent(p)
);
4. FOREIGN KEY 관련
- 부모 테이블의 PK or UNIQUE만 참조 가능
- 자식 테이블의 FK 컬럼은 NULL 허용 가능
ON DELETE / UPDATE CASCADE
CREATE TABLE child_4 (
a INT PRIMARY KEY,
b INT,
FOREIGN KEY (b) REFERENCES parent(p) ON DELETE CASCADE
);
5. 기본값 설정
CREATE TABLE test (
a INT AUTO_INCREMENT PRIMARY KEY,
b DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
c INT DEFAULT 0
);
6. 테이블 구조 변경: ALTER TABLE
| 작업 |
예시 |
| 컬럼 추가 |
ALTER TABLE users ADD age INT; |
| 컬럼 삭제 |
ALTER TABLE users DROP COLUMN age; |
| 컬럼 이름 변경 |
ALTER TABLE users RENAME COLUMN old_name TO new_name; |
| 컬럼 자료형 변경 |
ALTER TABLE users MODIFY age SMALLINT; |
| 기본값 설정/삭제 |
ALTER TABLE users ALTER age SET DEFAULT 0; |
| 외래키 추가 |
ALTER TABLE users ADD CONSTRAINT fk_user FOREIGN KEY (age) REFERENCES parent(p) ON DELETE CASCADE; |
| 외래키 삭제 |
ALTER TABLE users DROP FOREIGN KEY fk_user; |
7. 테이블 제거
DROP TABLE 테이블명;
8. 테이블 스페이스
- 대용량 처리 성능 향상을 위한 물리적 저장공간 분리
- 예: 하드디스크 파티션처럼 테이블 별로 분리 저장
- 저장 경로 예:
- C:\\ProgramData\\MySQL\\MySQL Server 8.4\\Data\\