[SQL] 데이터 조작어 : DML

아임펭·2024년 5월 10일

SQL

목록 보기
3/9

1. 데이터 조작어(DML)

데이터 조작어는 검색(SELECT), 삽입(INSERT), 삭제(DELETE), 내용 변경(UPDATE), 병합(MERGE)의 역할을 하는 명령어입니다.

데이터베이스에 저장된 데이터를 실질적으로 관리하기 위해 사용합니다.

DML는
SELECT~FROM~WHERE, INSERT INTO~VALUES, DELETE~FROM~WHERE, UPDATE~SET~WHERE~
으로 사용됩니다.


1) INSERT

새로운 튜플(행)을 삽입할 때 사용합니다.

🟢 데이터 삽입

INSERT INTO 테이블명 ([필드명1, 필드명2...]) VALUES (데이터1, 데이터2);

✔ 테이블의 필드 순서대로 데이터를 삽입할 때는 (필드명1, 필드명2..)를 생략 가능합니다.

✔ 필드목록을 추가하면 선언 순서에 맞추지 않아도 원하는 순서대로 나열할 수 있습니다.

✔ NULL 값이 허용되는 경우에는 (필드목록), (값 목록)에 입력하지 않아도 NULL로 값이 추가됩니다.

✔ MariaDB에서는 INSERT를 통해 데이터를 추가할 때 다중 추가도 가능합니다. (오라클에서는 지원하지 않습니다)

-- 1행 추가
INSERT INTO staff(depart, name, gender, joindate, grade, salay, score) 
	   VALUES ('총무부', '홍길동', '남', '2020-02-06', '차장', 350, 70.5);

- 다중 추가
INSERT INTO staff(depart, name, gender, joindate, grade, salay, score) 
	   VALUES ('총무부', '홍길동', '남', '2020-02-06', '차장', 350, 70.5);
       		  ('영업부', '김길동', '남', '2023-05-08', '대리', 250, 65.5);
              ('사업부', '고길동', '여', '2019-10-11', '부장', 450, 80);

🟢 데이터 복사
INSERT INTO ~ SELECT

INSERT INTO 대상테이블 (필드목록) SELECT 필드목록 FROM 원본테이블

✔ INSERT의 필드목록과 SELECT의 필드목록이 서로 동일(갯수, 타입)일 때 가능합니다.


2) DELETE

테이블 내 데이터를 삭제할 때 사용합니다.

🟢 데이터 삭제

DELETE FROM 테이블명 [WHERE 조건];
-- DELETE 사용 예시
-- city 테이블에서 popu가 50 이상인 데이터를 삭제
SELECT * FROM city WHERE popu > 50; // 조회
DELETE FROM city WHERE popu > 50; // 삭제

DELETE를 잘못 사용하는 경우 데이터가 삭제될 위험이 있기 때문에 SELECT로 삭제 대상 레코드를 먼저 고른 후 조건이 맞는지 확인 후에 제거하는 것이 좋습니다


3) UPDATE

레코드의 필드 값을 변경할 때 사용합니다.

🟢 값 변경

UPDATE 테이블명 SET 필드명 = 데이터 [WHERE 조건];

✔ '속성명 = 데이터'는 복수로 추가가 가능합니다.

✔ WHERE 조건문을 생략하면 모든 레코드가 갱신됩니다.

✔ 명령어 문장에 계산식을 사용할 수 있습니다.

-- city 테이블 내에 name이 "서울"인 데이터의 popu를 1000으로, region을 "경기"로 변경
UPDATE city SET popu = 1000, region = "경기" WHERE name = "서울";

4) SELECT

전체 또는 조건을 만족하는 튜플을 검색할 때 사용합니다.

다른 명령어들을 실행하기 전 해당 조건에 맞는 내용인지 데이터 값을 확인하기 위해서도 사용되며, 사용 빈도가 높습니다.

🟢 데이터 검색

SELECT 필드명
	   FROM 테이블명1, 테이블명2
       WHERE 조건
       GROUP BY 속성명1, 속성명2
       HAVING 조건
       ORDER BY 속성 [ASC|DESC];

5) MERGE

참조 테이블과 동일하게 데이터 병합 하기 위해 사용합니다.

🟢 데이터 병합

MERGE INTO 수정 테이블명
      USING 참조 테이블 ON (연결조건)
      -- 수정
      WHEN MATCHED THEN 
      UPDATE SET 수정할 내용
      -- 삽입
      WHEN NOT MATCHED THEN 
      INSERT VALUES 삽입할 내용
      
profile
I'm peng

0개의 댓글