데이타베이스/SQL

데이터 조작 언어(DML): SQL의 핵심 문법과 실습 예제

shimdh 2025. 1. 25. 09:55
728x90

1. SELECT 문: 데이터 조회

SELECT 문은 데이터베이스에서 데이터를 조회하는 데 사용되는 가장 기본적이고 중요한 명령어입니다. 다양한 조건과 옵션을 통해 필요한 데이터를 효율적으로 추출할 수 있습니다. SELECT 문은 데이터 분석, 보고서 생성 및 시스템 통합에 매우 유용합니다.

기본 구문

SELECT 열1, 열2, ...
FROM 테이블명;
  • 열(Columns): 조회할 열들을 지정합니다.
  • 테이블(Table): 데이터를 가져올 테이블의 이름을 지정합니다.

SELECT 문 활용 팁

  • 데이터 필터링과 정렬을 조합하여 원하는 데이터를 정확히 추출할 수 있습니다.
  • 집계 함수와 함께 사용하면 요약 정보를 제공할 수 있습니다.

실습 예제

  1. 특정 열 조회:

    SELECT name, age
    FROM employees;
    • 결과: 직원 이름과 나이를 조회합니다.
  2. 모든 열 조회:

    SELECT *
    FROM employees;
    • 결과: 직원 테이블의 모든 데이터를 가져옵니다.
  3. 조건을 사용한 필터링:

    SELECT name, age
    FROM employees
    WHERE age > 30;
    • 결과: 나이가 30세 이상인 직원만 출력됩니다.
  4. 정렬:

    SELECT name, age
    FROM employees
    ORDER BY age DESC;
    • 결과: 나이에 따라 내림차순으로 직원 정보를 정렬합니다.
  5. 그룹화 및 집계:

    SELECT department_id, AVG(salary) AS average_salary
    FROM employees
    GROUP BY department_id;
    • 결과: 각 부서별 평균 급여를 계산합니다.
  6. 복잡한 조건 활용:

    SELECT name, department_id, salary
    FROM employees
    WHERE salary > 50000 AND department_id IN (1, 3, 5);
    • 결과: 급여가 50000 이상이고, 부서 ID가 1, 3, 5 중 하나인 직원 데이터를 가져옵니다.
  7. 서브쿼리 활용:

    SELECT name
    FROM employees
    WHERE salary > (SELECT AVG(salary) FROM employees);
    • 결과: 평균 급여보다 높은 급여를 받는 직원의 이름을 조회합니다.

2. INSERT 문: 데이터 추가

INSERT 문은 테이블에 새로운 데이터를 추가할 때 사용됩니다. 단일 행 또는 다중 행 삽입이 가능하며, 이를 통해 초기 데이터 입력 및 지속적인 데이터 업데이트를 수행할 수 있습니다.

기본 구문

INSERT INTO 테이블명 (열1, 열2, ...)
VALUES (값1, 값2, ...);
  • 테이블명: 데이터를 추가할 테이블 이름입니다.
  • 열1, 열2, ...: 데이터를 입력할 열 이름입니다.
  • 값1, 값2, ...: 삽입할 값입니다.

INSERT 문 활용 팁

  • 대량 데이터를 처리할 경우, 여러 행 삽입 기능을 활용하세요.
  • 기본값 설정을 통해 불필요한 값 입력을 줄일 수 있습니다.

실습 예제

  1. 단일 행 삽입:

    INSERT INTO students (student_id, name, age)
    VALUES (1, '홍길동', 20);
    • 결과: ID가 1인 학생 데이터를 추가합니다.
  2. 다중 행 삽입:

    INSERT INTO students (student_id, name, age)
    VALUES
    (2, '김철수', 22),
    (3, '박영희', 21);
    • 결과: 두 명의 학생 데이터를 동시에 추가합니다.
  3. 기본값 사용:

    INSERT INTO students (student_id, name)
    VALUES (4, '최민수');
    • 결과: 기본값이 설정된 열은 자동으로 채워집니다.
  4. 대량 데이터 처리:

    LOAD DATA INFILE 'students.csv'
    INTO TABLE students
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (student_id, name, age);
    • 결과: CSV 파일을 사용해 대량 데이터를 테이블에 삽입합니다.
  5. 다른 테이블에서 데이터 삽입:

    INSERT INTO archive_students (student_id, name, age)
    SELECT student_id, name, age
    FROM students
    WHERE graduation_year = 2023;
    • 결과: 졸업 연도가 2023인 학생 데이터를 다른 테이블로 복사합니다.

3. UPDATE 문: 데이터 수정

UPDATE 문은 기존 데이터의 내용을 수정할 때 사용됩니다. 잘못된 조건 없이 실행하면 모든 데이터가 수정될 수 있으므로 항상 WHERE 절을 사용하여 특정 조건을 지정해야 합니다.

기본 구문

UPDATE 테이블명
SET 열1 = 새로운값1, 열2 = 새로운값2, ...
WHERE 조건;
  • 테이블명: 데이터를 수정할 테이블 이름입니다.
  • 열1, 열2: 수정할 열 이름입니다.
  • 새로운값1, 새로운값2: 설정할 새 값입니다.
  • 조건: 수정할 데이터를 지정하는 기준입니다.

UPDATE 문 활용 팁

  • 트랜잭션을 사용하여 수정 작업을 안정적으로 수행하세요.
  • 복잡한 조건을 사용해 특정 데이터를 정확히 선택하세요.

실습 예제

  1. 특정 행 수정:

    UPDATE employees
    SET salary = salary * 1.10
    WHERE employee_id = 5;
    • 결과: ID가 5인 직원의 급여를 10% 인상합니다.
  2. 여러 열 동시에 수정:

    UPDATE employees
    SET email = 'newemail@example.com', phone_number = '010-1234-5678'
    WHERE employee_id = 3;
    • 결과: ID가 3인 직원의 이메일과 전화번호를 수정합니다.
  3. 조건 없이 수정(주의):

    UPDATE employees
    SET salary = salary + 5000;
    • 결과: 모든 직원의 급여가 증가합니다. WHERE 절 없이 실행하지 않도록 주의해야 합니다.
  4. 조건부 업데이트:

    UPDATE employees
    SET salary = salary * 1.05
    WHERE department_id IN (1, 2) AND hire_date < '2020-01-01';
    • 결과: 부서 ID가 1 또는 2이고, 2020년 이전에 입사한 직원의 급여를 5% 인상합니다.
  5. 트랜잭션 활용:

    BEGIN TRANSACTION;
    
    UPDATE employees
    SET salary = salary * 1.05
    WHERE department_id = 2;
    
    COMMIT;
    • 결과: 부서 ID가 2인 직원의 급여를 5% 인상합니다. 작업 중 문제가 발생하면 ROLLBACK을 사용할 수 있습니다.
  6. 조건에 따라 다른 값 설정:

    UPDATE employees
    SET performance_rating = CASE
        WHEN sales > 100000 THEN 'A'
        WHEN sales BETWEEN 50000 AND 100000 THEN 'B'
        ELSE 'C'
    END
    WHERE department_id = 3;
    • 결과: 부서 ID가 3인 직원의 판매 실적에 따라 성과 등급을 설정합니다.

4. DELETE 문: 데이터 삭제

DELETE 문은 특정 조건에 맞는 데이터를 삭제할 때 사용됩니다. DELETE 문은 테이블 구조는 유지하고 데이터만 삭제합니다.

기본 구문

DELETE FROM 테이블명
WHERE 조건;
  • 테이블명: 데이터를 삭제할 테이블 이름입니다.
  • 조건: 삭제할 데이터를 지정하는 기준입니다.

DELETE 문 활용 팁

  • 항상 WHERE 절을 포함하여 특정 데이터를 삭제하세요.
  • 중요한 데이터 삭제 전에 백업을 수행하세요.

실습 예제

  1. 단일 행 삭제:

    DELETE FROM employees
    WHERE employee_id = 3;
    • 결과: ID가 3인 직원을 삭제합니다.
  2. 다수의 행 삭제:

    DELETE FROM employees
    WHERE department_id = 5;
    • 결과: 부서 ID가 5인 직원 모두를 삭제합니다.
  3. 조건 없이 모든 데이터 삭제(주의):

    DELETE FROM employees;
    • 결과: 모든 직원 데이터를 삭제합니다. WHERE 절 없이 실행하지 않도록 주의해야 합니다.
  4. 트랜잭션 활용:

    BEGIN TRANSACTION;
    
    DELETE FROM employees
    WHERE department_id = 5;
    
    COMMIT;
    • 결과: 부서 ID가 5인 직원을 삭제합니다. 작업 중 문제가 발생하면 ROLLBACK을 사용할 수 있습니다.
  5. 연관 데이터 삭제:

    DELETE FROM orders
    WHERE customer_id NOT IN (SELECT customer_id FROM customers);
    • 결과: 고객 테이블에 존재하지 않는 고객 ID를 가진 주문 데이터를 삭제합니다.

결론

데이터 조작 언어(DML)는 데이터베이스에서 데이터를 효과적으로 관리하고 분석하는 데 필수적인 도구입니다. 각 명령어는 데이터의 조회, 추가, 수정 및 삭제를 통해 비즈니스 요구 사항을 충족시키는 데 활용됩니다. SELECT, INSERT, UPDATE, DELETE 문을 학습하고 실습하면서 다양한 시나리오에서 이들을 적절히 사용하는 방법을 익히는 것이 중요합니다.

실습 Tip:

  • 작은 데이터셋으로 시작하여 쿼리 결과를 확인하세요.
  • 실수로 데이터가 삭제되는 것을 방지하기 위해 항상 백업을 유지하세요.
  • WHERE 절을 정확히 작성하고, 트랜잭션을 사용하여 작업의 안전성을 높이세요.

추가 학습 리소스:

  • SQL 튜토리얼 사이트에서 다양한 쿼리를 연습해보세요.
  • 복잡한 데이터베이스를 다룰 때 ORM(Object-Relational Mapping) 도구와의 연동을 학습하세요.
  • 데이터베이스 관리 자동화 도구를 활용하여 생산성을 높이세요.
728x90