
이번 포스팅에서는 데이터베이스 서버에서 테이블과 스키마를 설계·정리할 때 자주 사용하는 DDL(Data Definition Language) 명령어들을
실제 예제 중심의 치트시트 형태로 정리해보겠다.
스키마 생성/삭제부터 테이블 생성·수정·삭제까지, “DB 구조를 만드는 일”에 해당하는 필수 명령들을 한 번에 훑어본다.
-- myapp 이라는 스키마 생성
CREATE DATABASE myapp;
SHOW DATABASES;
DROP DATABASE myapp;
USE myapp;
CREATE TABLE, SELECT, ALTER TABLE 등은 모두 myapp 스키마를 기준으로 동작한다.SHOW TABLES;
USE myapp; 를 먼저 실행한 뒤에 SHOW TABLES; 를 사용해야 원하는 스키마 기준의 테이블 목록이 나온다.서비스를 실제로 운영할 때는 문자 인코딩(특히 한글) 설정이 매우 중요하다.
SHOW VARIABLES LIKE 'character_set_server';
ALTER DATABASE myapp DEFAULT CHARACTER SET = utf8mb4;
utf8mb4 로 맞추는 것을 권장한다. CREATE TABLE 테이블이름 (
필드이름1 필드타입1 [제약조건],
필드이름2 필드타입2 [제약조건],
...
[테이블 제약조건] -- PK, FK 등
);
CREATE TABLE member (
id INT AUTO_INCREMENT PRIMARY KEY, -- 기본 키
email VARCHAR(100) NOT NULL UNIQUE, -- 이메일, 중복 불가
name VARCHAR(50) NOT NULL, -- 이름
created_at DATETIME DEFAULT NOW() -- 생성 일시
);
AUTO_INCREMENT + PRIMARY KEY 조합으로 PK를 구성한다.UNIQUE 로 이메일 중복을 방지한다.DEFAULT NOW() 를 사용하면 레코드 생성 시각이 자동으로 들어간다.DESCRIBE member;
-- 또는
DESC member;
NULL 허용 여부, 기본값, 키 정보(PK/UK) 등을 한 번에 확인할 수 있다.SELECT * FROM member;
SHOW CREATE TABLE member;
CREATE TABLE 문을 그대로 출력한다.SELECT *
FROM information_schema.key_column_usage
WHERE table_name = 'member';
SHOW INDEX FROM member;
ALTER TABLE member RENAME member_user;
ALTER TABLE member_user
ADD COLUMN age INT DEFAULT 0;
DEFAULT 값을 지정하면 기존 레코드에 대해서도 해당 기본값이 채워진다.ALTER TABLE member_user
DROP COLUMN age;
ALTER TABLE member_user
CHANGE COLUMN name full_name VARCHAR(50) NOT NULL;
CHANGE COLUMN 기존이름 새이름 타입 제약 형태로 사용한다.ALTER TABLE member_user
MODIFY COLUMN email VARCHAR(200) NOT NULL UNIQUE;
MODIFY COLUMN 은 컬럼 이름은 그대로 두고, 타입/길이/제약조건만 바꿀 때 사용한다.DROP TABLE member_user;
DROP TABLE IF EXISTS member_user;
IF EXISTS를 자주 사용한다.DROP TABLE member_user;DROP TABLE IF EXISTS member_user;이번 글에서는 MySQL에서 자주 사용하는 DDL 치트시트를
스키마 생성/삭제, 문자셋 설정, 테이블 생성/조회, 제약조건·인덱스 확인,
ALTER TABLE 로 구조 변경, DROP TABLE 로 정리하는 흐름까지 한 번에 정리해보았다.
서비스 개발 단계에서는 ERD를 보고 ORM으로만 테이블을 만들 때가 많지만,
운영/디버깅/마이그레이션 단계에서는 결국 순수 SQL DDL 명령어를 직접 다룰 일이 반드시 생긴다.
다음 글에서는 DDL에 이어, 실제 데이터를 넣고 수정·삭제하는
DML(INSERT, UPDATE, DELETE) 및 조회 쿼리 패턴까지 이어서 정리해보겠다.
스키마에서 키랑 스를 절때 순서를 바꾸지마세요
극악무도한 키.스.마. 가 나올수있습니다…
허억~너무무서워
감사합니다