Database

[MySQL] DML (INSERT, UPDATE, DELETE)

비번변경 2022. 6. 21. 22:58

DML

데이터 조작 언어 (Data Manipulation Language)

데이터를 조회하거나 삽입, 갱신, 삭제할 수 있다.

데이터를 조작하여 저장하는 과정은 트랜잭션(Transaction)이라고 하며, DML은 트랜잭션을 다루는 명령어라고 할 수 있다.

 

 

INSERT

테이블에 새로운 행을 삽입할 때 사용한다.

INSERT INTO table_name [(column1, column2, …)]
  VALUES (val1, val2, …);

-- 예시
INSERT INTO departments (department_id, department_name, manager_id, location_id)
  VALUES (271, 'Sample_Dept', 200, 1700);

 

예시 실행 결과

SELECT *
  FROM department;

insert into

 

테이블 열의 순서에 맞게 값을 지정하면 column 이름을 적지 않아도 된다. 다만 오류 추적 등을 위해 column 이름은 항상 적는 것이 좋다.

INSERT INTO departments
  VALUES (272, 'Sample_Dept', 200, 1700);

INSERT는 commit을 해야 데이터베이스에 영구적으로 반영된다.

 

 

UPDATE

기존 데이터를 다른 데이터로 변경할 때 사용한다.

UPDATE table_name
SET column1 = value1, [column2 = value2, ...]
WHERE 조건식;

-- 예시
UPDATE departments 
SET manager_id = 201, location_id = 1800
WHERE department_name = 'Sample_Dept';

 

예시 실행 결과

UPDATE ~ SET

 

서브 쿼리를 사용하면 대량의 데이터를 갱신할 수 있다. Oracle과 다르게 조금 복잡하니 주의해야 한다. 또한 INSERT와 동일하게 commit 해야 데이터베이스에 변경 사항이 반영된다.

UPDATE table_name
SET column1 = (
  SELECT column1
  FROM (
    SELECT column1
    FROM table_name
    WHERE 조건식
    ) alias
  ),
[column2 = (
  SELECT column1
  FROM (
    SELECT column1
    FROM table_name
    WHERE 조건식
    ) alias
  ), ...
]
WHERE 조건식;


-- 예시
UPDATE departments 
SET manager_id = (
  SELECT a.manager_id
  FROM ( SELECT manager_id
    FROM departments
    WHERE department_id = 40
    ) a
  ), 
  location_id = (
  SELECT b.location_id
  FROM ( SELECT location_id
    FROM departments
    WHERE department_id = 40
    ) b
  )
WHERE department_name = 'Sample_Dept';

 

 

DELETE

데이터를 삭제할 때 사용하며, UPDATE와 마찬가지로 WHERE 절을 사용할 수 있다. WHERE 절을 사용하지 않으면 모든 데이터가 삭제된다.

DELETE FROM table_name
[WHERE 조건식;]

-- 예시
DELETE FROM departments 
WHERE department_name = 'Sample_Dept';

INSERT, UPDATE와 마찬가지로 commit 해야 데이터베이스에 반영된다.

 

참고 문서

https://www.w3schools.in/mysql/ddl-dml-dcl

https://thebook.io/006977/ch08/

http://www.tcpschool.com/mysql/mysql_basic_insert