1. DDL(Data Definition Language)
: 데이터베이스의 스키마를 정의하거나 수정
(1) CREATE
: 테이블 생성
CREATE TABLE IF NOT EXISTS tb( # 여기선 tb가 테이블 이름
pk INT PRIMARY KEY, # 컬럼 레벨 제약 조건
fk INT,
col1 VARCHAR(255),
CHECK(col1 IN ('Y', 'N')) # 테이블 레벨 제약 조건 (col1에는 Y 아님 N만 들어갈 수 있다는 제약조건)
) ENGINE = INNODB;
- 테이블 구조 확인하기
# 아래 두 명령어는 같은 기능을 한다.
DESCRIBE tb;
DESC tb;
- 테이블이 잘 생성되었는지 INSERT를 해보자.
INSERT
INTO tb
VALUES
(
1
, 10
, 'Y'
);
(2) ALTER
: 테이블에 추가/변경/수정/삭제 (여기서 삭제는 테이블 자체를 삭제하는 게 아니라, 컬럼 등 테이블 내부의 것을 삭제하는 것)
1) 열 추가
ALTER TABLE tb2
ADD col2 INT NOT NULL;
DESC tb2;
2) 열 이름 및 데이터 형식 변경
ALTER TABLE tb2
CHANGE COLUMN fk change_fk INT NOT NULL;
# fk라는 column을 change_fk로 column명을 바꾸고, 데이터 형식을 INT, NOT NULL로 변경해준다.
DESC tb2;
3) 컬럼 삭제
ALTER TABLE tb2
DROP COLUMN col2;
DESC tb2;
4) 제약조건 추가 및 삭제
# 아래 코드는 PRIMARY KEY 제약조건을 없애는 코드이다.
ALTER TABLE tb2
DROP PRIMARY KEY;
# 근데 일단 이렇게 하면 실행이 안되는데,
# 그 이유는 지금 PRIMARY KEY인 pk에 AUTO_INCREMENT 설정이 있기 때문이다.
# 따라서 pk의 AUTO_INCREMENT 설정을 제거해주자.
ALTER TABLE tb2
MODIFY pk INT;
# 그리고 다시 PRIMARY KEY 제약조건을 없애는 코드를 작성해준다.
ALTER TABLE tb2
DROP PRIMARY KEY;
5) 컬럼 다중 추가
ALTER TABLE tb2
ADD col3 DATE NOT NULL,
ADD col4 TINYINT NOT NULL;
(3) DROP
: 테이블 삭제
DROP TABLE if EXISTS tb2; # if exists는 optional
DROP TABLE if EXISTS tb, tb2, tb3; # 여러개의 테이블 한 번에 삭제도 가능
(4) TRUNCATE
TRUNCATE tb;
* DELETE와 TRUNCATE의 차이점
- DELETE는 존재하는 행을 하나씩 지우고, TRUNCATE는 테이블 자체를 삭제하고 테이블을 재생성
- TRUNCATE는 ROLLBACK해도 살아나지 않고, 진짜 테이블을 RESET하고 싶을 때 사용하면 된다.
TRUNCATE | DELETE | |
COMMIT | AUTO COMMIT | 사용자 COMMIT |
ROLLBACK | 불가능 | COMMIT 이전에 가능 |
인덱스 | 삭제 | 삭제 X |
제약조건 | 삭제 | 삭제 X |
컬럼 | 삭제 | 삭제 X |
수행결과 | 테이블을 초기 상태로 만든다 | 데이터 삭제 |
로그 | X | O |
처리속도 | 빠름 | 느림 |
'CS > 데이터베이스' 카테고리의 다른 글
SQL 실습(3) (0) | 2024.07.21 |
---|---|
SQL(6) 제약 조건 (0) | 2024.07.21 |
SQL (4) TRANSACTION (0) | 2024.07.17 |
SQL (3) DML (0) | 2024.07.17 |
SQL 실습 (2) (0) | 2024.07.17 |