웹개발/SQL(mySQL)

MySQL DML 문법 (INSERT, UPDATE, DELETE)

bergerac 2025. 6. 16. 09:11

1. INSERT: 데이터를 테이블에 삽입

먼저, 데이터를 넣기 위한 INSERT문. 기본적인 형식은 다음과 같다.

INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...);

컬럼명을 생략할 수도 있지만, 그 경우 VALUES의 값 순서와 개수는 테이블 생성 시 정의된 순서와 동일해야 한다는 점을 주의해야 한다. 예를 들어 다음 테이블을 보자:

CREATE TABLE `example01` (
  name VARCHAR(100),
  age INT,
  major VARCHAR(100)
);

이 테이블에 데이터를 삽입할 때는 이렇게 할 수 있다:

INSERT INTO `example01`
VALUES ('roxan', 23, '코리아');

컬럼명을 명시하면 순서를 바꿔도 상관없다:

INSERT INTO `example01` (major, name, age)
VALUES ('코리아', 'Christian', 23);

 

2. AUTO_INCREMENT: 자동으로 증가하는 기본 키

많은 테이블에서는 id처럼 고유한 식별자 컬럼을 자동으로 증가시키기 위해 AUTO_INCREMENT를 사용한다.

CREATE TABLE `example02` (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100)
);

 

이 테이블에 데이터를 삽입할 땐 id를 생략하면 MySQL이 자동으로 값을 채워준다:

INSERT INTO `example02` (name)
VALUES ('cyrano'), ('dgishi'), ('rostian');

 

또는 NULL을 명시해도 자동으로 값이 들어간다:

INSERT INTO `example02`
VALUES (NULL, 'Neviellete');

 

AUTO_INCREMENT의 현재 최대값은 다음 쿼리로 확인 가능하다:

SELECT MAX(id) FROM `example02`;

 

시작 값을 바꾸고 싶다면 ALTER TABLE로 설정 가능하다:

ALTER TABLE `example02` AUTO_INCREMENT=100;

 

3. SELECT+INSERT: 다른 테이블의 데이터를 복사하기

다른 테이블에서 데이터를 조회한 후, 해당 결과를 새로운 테이블에 삽입할 수도 있다.

CREATE TABLE `example03` (
  id INT,
  name VARCHAR(100)
);

INSERT INTO `example03`
SELECT * FROM `example02`;

이 방식은 테이블 간 데이터 이전이나 이력 관리 시 유용하다. 단, 컬럼의 순서, 개수, 데이터 타입이 정확히 일치해야 한다.

 

4. UPDATE: 기존 데이터를 수정하기

UPDATE문은 테이블의 특정 값을 수정하는 데 사용된다. 기본 구문은 다음과 같다:

UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2, ...
WHERE 조건;

 

중요한 건 WHERE절을 반드시 작성해야 한다는 점이다. 그렇지 않으면 해당 컬럼의 모든 레코드가 변경된다.

UPDATE `example02`
SET name='BERGERAC';

이 경우 example02 테이블의 모든 name 컬럼이 BERGERAC로 변경된다.

Safe Update Mode 설정

MySQL에서는 실수로 전부 변경되는 걸 막기 위해 Safe Update Mode가 활성화되어 있는 경우가 있다. 이 모드에서는 WHERE절에 PK 등 Key 기반 조건이 없으면 오류가 발생한다.

SET SQL_SAFE_UPDATES=0; -- 모드 해제
SET SQL_SAFE_UPDATES=1; -- 모드 활성화
UPDATE `example02`
SET name='bergerac'
WHERE id=1;

 

5. DELETE: 테이블에서 데이터 삭제

DELETE문은 특정 데이터를 삭제하는 데 사용된다. 기본 형태는 다음과 같다:

DELETE FROM 테이블명
WHERE 조건;

 

역시 WHERE절이 없으면 모든 레코드가 삭제되므로 주의가 필요하다.

특히 Safe Update Mode에서는 PK 조건 없이 삭제할 수 없다

DELETE FROM `example02`
WHERE id=1;

이 쿼리는 id=1인 레코드만 안전하게 삭제한다.

'웹개발 > SQL(mySQL)' 카테고리의 다른 글

MySQL SubQuery 활용  (1) 2025.06.18
MySQL SELECT 문 사용방법  (0) 2025.06.17
MySQL 제약조건(Constraints)  (4) 2025.06.15
무결성(Integrity)  (1) 2025.06.14
MySQL 명명규칙  (1) 2025.06.13