새발블로그

[SQL] 테이블, 뷰 본문

Server/DB

[SQL] 테이블, 뷰

EUG 2025. 6. 25. 16:21

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\\

'Server > DB' 카테고리의 다른 글

[DB] MongoDB  (0) 2025.06.25
[DB] 인덱스 , 쿼리 최적화, 트랜잭션  (0) 2025.06.25
[SQL] SQL 심화 명령어  (0) 2025.06.25
[SQL] SQL 기본 명령어  (0) 2025.06.25
DBMS 개념  (0) 2025.06.25