데이타베이스/SQL

SQL 데이터 조작 명령어: INSERT, UPDATE, DELETE

shimdh 2025. 1. 28. 11:39
728x90

1. 데이터를 추가하는 INSERT 문

INSERT 문은 테이블에 새로운 데이터를 추가하는 데 사용됩니다. 새로운 정보를 저장하고 이를 기존 데이터와 연결하여 유용한 결과를 도출할 수 있습니다. 데이터 삽입은 데이터베이스 초기화, 데이터 수집, 그리고 변경 작업 후 새로운 데이터의 추가 등 다양한 시나리오에서 필요합니다.

기본 구조

INSERT INTO 테이블명 (열1, 열2, 열3)
VALUES (값1, 값2, 값3);
  • 테이블명: 데이터를 삽입할 대상 테이블의 이름
  • : 삽입할 데이터가 들어갈 컬럼(열)의 이름
  • : 각 열에 대응되는 실제 데이터 값

예제: 학생 정보 추가하기

학생 정보를 저장하는 students라는 테이블이 있다고 가정합니다.

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    major VARCHAR(50)
);

INSERT INTO students (id, name, age, major)
VALUES (1, '홍길동', 20, '컴퓨터공학');

INSERT INTO students (id, name, age, major)
VALUES (2, '김철수', 22, '정보보안');

여러 행 삽입하기

한 번에 여러 데이터를 삽입하려면 다음과 같이 작성합니다:

INSERT INTO students (id, name, age, major)
VALUES
(3, '이영희', 21, '소프트웨어공학'),
(4, '박민수', 23, '데이터사이언스');

이 방법은 효율적인 데이터 입력에 적합하며 대량 데이터 처리에 유용합니다.

다양한 데이터 타입 사용하기

INSERT 문은 다양한 데이터 타입을 사용할 수 있습니다. 예를 들어, 날짜와 시간을 포함한 데이터를 삽입하려면 다음과 같습니다:

CREATE TABLE events (
    id INT PRIMARY KEY,
    event_name VARCHAR(100),
    event_date DATE
);

INSERT INTO events (id, event_name, event_date)
VALUES (1, '개강식', '2025-01-15');

DEFAULT 값을 사용하는 경우

기본값이 설정된 열은 해당 값을 생략할 수 있습니다.

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT DEFAULT 30,
    position VARCHAR(50)
);

INSERT INTO employees (id, name, position)
VALUES (1, '최지훈', '개발자');

위 쿼리에서는 나이를 지정하지 않았지만 기본값인 30이 자동으로 적용됩니다. 이는 데이터 입력 오류를 줄이고 일관성을 유지하는 데 유리합니다.


2. 데이터를 수정하는 UPDATE 문

UPDATE 문은 테이블의 기존 데이터를 수정하는 데 사용됩니다. 특정 조건을 설정하여 원하는 데이터만 선택적으로 업데이트할 수 있습니다. 이는 데이터 정합성을 유지하고 잘못된 데이터를 수정하는 데 필수적입니다.

기본 구조

UPDATE 테이블명
SET 열1 = 값1, 열2 = 값2, ...
WHERE 조건;
  • 테이블명: 수정하고자 하는 데이터가 포함된 테이블의 이름
  • SET: 변경하려는 열(column)과 그 값을 지정
  • WHERE: 어떤 행(row)을 업데이트할지 결정하는 조건

예제: 직원 급여 인상하기

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
);

INSERT INTO employees (id, name, salary)
VALUES
(1, 'John', 50000.00),
(2, 'Jane', 60000.00);

UPDATE employees
SET salary = salary * 1.10
WHERE name = 'John';

여러 열 동시에 업데이트하기

UPDATE employees
SET salary = salary * 0.90, 
    name = 'John Doe'
WHERE id = 1;

조건에 따라 다른 값을 업데이트하기

UPDATE employees
SET salary = CASE 
    WHEN salary < 50000 THEN salary * 1.20
    ELSE salary * 1.05
END;

위 쿼리는 급여가 50,000 미만인 경우 20% 인상하고, 그 외에는 5% 인상합니다.


3. 데이터를 삭제하는 DELETE 문

DELETE 문은 테이블에서 데이터를 삭제하는 데 사용됩니다. 삭제 작업은 불필요한 데이터 정리 및 데이터베이스 성능 최적화를 위해 필요합니다.

기본 구조

DELETE FROM 테이블명
WHERE 조건;
  • 테이블명: 데이터를 삭제할 테이블의 이름
  • 조건: 삭제할 데이터의 조건을 설정

예제: 특정 사용자 삭제하기

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

INSERT INTO users (id, name)
VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');

DELETE FROM users
WHERE id = 2;

조건 없이 삭제 시 주의

WHERE 절 없이 DELETE를 실행하면 모든 데이터가 삭제됩니다:

DELETE FROM users;

이 쿼리는 테이블의 모든 데이터를 삭제하므로 주의해야 합니다. 데이터 손실을 방지하려면 항상 WHERE 절을 사용하는 습관을 들이세요.


트랜잭션과 데이터 복구

트랜잭션 활용

데이터베이스 작업에서 트랜잭션은 여러 작업을 하나의 논리적인 작업 단위로 묶어주는 역할을 합니다. 이를 통해 작업 중 문제가 발생하면 데이터를 복구할 수 있습니다.

BEGIN TRANSACTION;

DELETE FROM users WHERE last_login < '2020-01-01';

ROLLBACK; -- 오류 발생 시 되돌리기

COMMIT; -- 성공적으로 완료 시 변경사항 저장

삭제 전 데이터 확인

삭제 전에 영향을 받을 데이터를 확인하기 위해 SELECT 문을 사용하는 것이 좋습니다.

SELECT * FROM users WHERE name LIKE 'A%';

결론

SQL의 INSERT, UPDATE, DELETE 명령어는 데이터베이스 관리의 핵심입니다. 각 명령어를 적절히 활용하면 데이터베이스를 효율적으로 관리하고 유지할 수 있습니다. 작업 전에 항상 데이터를 확인하고, 필요시 트랜잭션을 사용하여 안전성을 확보하세요. 이러한 기본기를 익히는 것은 고급 SQL 기술로 나아가는 중요한 첫걸음입니다.

728x90