SQL은 데이터를 다루는 CRUD(Create, Read, Update, Delete) 작업에 따라 여러 문법을 제공합니다.
이번 글에서는 그중에서도 데이터베이스/테이블 생성, 데이터 추가, 수정, 삭제, 제약조건 설정과 관련된 핵심 문법들을 간단한 예시와 함께 정리합니다.
CREATE DATABASE (데이터베이스 생성)
CREATE DATABASE school;
school이라는 새로운 데이터베이스를 생성합니다.
보통 생성 후에는 다음처럼 사용합니다:
USE school;
또는
school.
CREATE TABLE (테이블 생성)
CREATE TABLE `school`.`student` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL,
`major`VARCHAR(100),
`age` INT,
CONSTRAINT chk_age CHECK (age >= 20)
)
student라는 테이블을 만들고, id는 자동 증가되는 기본 키, name은 NULL 불가, age는 0 이상만 허용하도록 제약조건을 추가했습니다.
INSERT INTO (데이터 삽입)
INSERT INTO student (name, major, age)
VALUES ('홍길동', '컴퓨터공학과', 21);
새 레코드를 추가합니다.
- 컬럼명을 생략할 수도 있지만, 안전하게 명시하는 것이 좋습니다.
UPDATE (데이터 수정)
UPDATE student
SET major = '전자공학과'
WHERE id = 1;
id가 1인 학생의 전공을 "전자공학과"로 수정합니다.
- 주의: WHERE 조건을 안 쓰면 모든 행이 수정되므로 조심해야 합니다.
DELETE (데이터 삭제)
DELETE FROM student
WHERE id =1;
id가 1인 학생 데이터를 삭제합니다.
- 역시 WHERE 절이 없으면 테이블 전체 데이터가 삭제됩니다.
ALTER TABLE (테이블 구조 수정)
-- 새로운 컬럼 추가
ALTER TABLE student ADD (COLUMN) email VARCHAR(100);
-- 기존 컬럼 삭제
ALTER TABLE student DROP COLUMN age;
-- 컬럼 타입 변경
ALTER TABLE student MODIFY major VARCHAR(200);
제약조건 추가 (ADD CONSTRAINT)
-- PRIMARY KEY 추가 --
ALTER TABLE student
ADD CONSTRAINT pk_student PRIMARY KEY (id);
-- UNIQUE 추가 --
ALTER TABLE student
ADD CONSTRAINT uq_email UNIQUE (email);
-- FOREIGN KEY 추가 --
ALTER TABLE enrollment
ADD CONSTRAINT fk_student FOREIGN KEY (student_id) REFERENCES student(id);
-- CHECK 제약조건 추가 --
ALTER TABLE student
ADD CONSTRAINT chk_age CHECK (age >= 0);
제약조건 삭제 (DROP CONSTRAINT / DROP INDEX)
MySQL에서는 버전에 따라 제약조건 삭제 문법이 조금 다릅니다
ALTER TABLE student DROP CHECK chk_age
정리
- 생성(Create): CREATE DATABASE, CREATE TABLE, INSERT INTO
- 수정(Update/Alter): UPDATE, ALTER TABLE
- 삭제(Delete/Drop): DELETE, DROP TABLE
- 제약조건(Constraint): 데이터 무결성을 보장하기 위한 규칙 (PK, FK, CHECK 등)
SQL은 단순히 데이터 추가/삭제뿐 아니라, 데이터 구조와 규칙까지 정의할 수 있다는 점이 핵심입니다.
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| Primary Key와 Unique의 차이 (0) | 2025.08.19 |
|---|---|
| MySQL에서 행의 생성/갱신 시각 관리하기 (0) | 2025.08.19 |
| MySQL에서 백틱(`), 작은따옴표(’), 큰따옴표(”)의 용도 정리 (2) | 2025.08.18 |
| SQL 상관 서브쿼리와 비상관 서브쿼리 (1) | 2025.08.18 |
| SQL Derived Table(파생 테이블)과 Alias의 필요성 (1) | 2025.08.18 |