최원종의 개발 블로그

INSERT 구문과 제약 조건 -7 본문

MySQL

INSERT 구문과 제약 조건 -7

chl6698 2026. 4. 2. 11:33

INSERT 기본 문법

-- 기본 형태
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...);

-- 여러 건 한 번에 (효율적)
INSERT INTO 테이블명 (컬럼1, 컬럼2) VALUES
    (값1, 값2),
    (값3, 값4),
    (값5, 값6);

 


제약 조건 - 잘못된 데이터를 막는 규칙

 

NOT NULL - 반드시 값을 입력해야 함

CREATE TABLE member (
    id    INT         PRIMARY KEY,
    email VARCHAR(100) NOT NULL,  -- NULL 불가, 반드시 입력
    name  VARCHAR(50)  NOT NULL,  -- NULL 불가
    phone VARCHAR(20)              -- NULL 허용 (선택 입력)
);

-- NOT NULL 컬럼에 값을 넣지 않으면 오류
INSERT INTO member (id, name) VALUES (1, '김철수');
-- → 오류: email 은 NOT NULL 이라 반드시 값이 있어야 함

-- 올바른 입력
INSERT INTO member (id, email, name)
VALUES (1, 'kim@test.com', '김철수');

 

 


DEFAULT - 값을 입력하지 않으면 기본값 자동 입력

CREATE TABLE member (
    id       INT         PRIMARY KEY AUTO_INCREMENT,
    email    VARCHAR(100) NOT NULL,
    name     VARCHAR(50)  NOT NULL,
    grade    VARCHAR(10)  DEFAULT '일반',  -- 기본값 '일반'
    is_active BOOLEAN     DEFAULT TRUE,   -- 기본값 TRUE
    created_at DATETIME   DEFAULT CURRENT_TIMESTAMP -- 현재 시간 자동 입력
);

-- grade, is_active, created_at 생략 → 기본값 자동 적용
INSERT INTO member (email, name)
VALUES ('kim@test.com', '김철수');

SELECT * FROM member;
-- grade='일반', is_active=1, created_at=현재시간 으로 저장됨

 

 


AUTO_INCREMENT - 숫자 자동 증가

-- id 를 직접 넣지 않아도 자동으로 1, 2, 3... 증가
INSERT INTO member (email, name) VALUES
('hong@test.com',  '홍길동'),
('lee@test.com',  '이영희'),
('park@test.com', '박민준');

SELECT * FROM member;
-- id: 1, 2, 3 자동 부여

 

 


백틱(`) - SQL 예약어 충돌 방지

  • 테이블명이나 컬럼명이 SQL 예약어와 같을 때 백틱으로 감싸줌
예약어 예시: order, select, from, where, group, by ...
CREATE TABLE order (...);    -- 오류! order 는 예약어
CREATE TABLE `order` (...);  -- 백틱으로 감싸면 OK

 

 


DATE 타입 값 입력

-- 방법 1: 문자열 형식 (권장)
INSERT INTO enrollment (enrollment_id, student_id, subject_id, score, enrolled_at)
VALUES (1, 1001, 101, 88.5, '2024-03-02');

-- 방법 2: 구분자 없는 문자열 형식
VALUES (2, 1001, 102, 92.0, '20240302');

-- 잘못된 날짜 → 오류 발생
VALUES (3, 1001, 103, 90.0, '20241325'); -- 13월은 없음 → 오류!

핵심 요약

NOT NULL    : 반드시 값 입력 필요
DEFAULT     : 입력 안 하면 기본값 자동 적용
AUTO_INCREMENT : 숫자 자동 1씩 증가 (PK 에 주로 사용)

백틱(`):
  테이블명/컬럼명이 SQL 예약어면 백틱으로 감쌈
  처음부터 예약어 피하는 게 더 좋음

DATE 입력:
  '2024-03-02' 형식 권장
  잘못된 날짜 입력 시 오류 발생

'MySQL' 카테고리의 다른 글

UPDATE 와 DELETE - 9  (0) 2026.04.03
SELECT 와 WHERE - 8  (0) 2026.04.03
MySQL 데이터 타입 - 6  (0) 2026.04.02
SQL - DDL, DML, DCL -5  (0) 2026.04.02
데이터베이스 설계 시나리오  (0) 2026.04.02