데이터 조작어는 검색(SELECT), 삽입(INSERT), 삭제(DELETE), 내용 변경(UPDATE), 병합(MERGE)의 역할을 하는 명령어입니다.
데이터베이스에 저장된 데이터를 실질적으로 관리하기 위해 사용합니다.
DML는
SELECT~FROM~WHERE, INSERT INTO~VALUES, DELETE~FROM~WHERE, UPDATE~SET~WHERE~
으로 사용됩니다.
새로운 튜플(행)을 삽입할 때 사용합니다.
🟢 데이터 삽입
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의 필드목록이 서로 동일(갯수, 타입)일 때 가능합니다.
테이블 내 데이터를 삭제할 때 사용합니다.
🟢 데이터 삭제
DELETE FROM 테이블명 [WHERE 조건];
-- DELETE 사용 예시
-- city 테이블에서 popu가 50 이상인 데이터를 삭제
SELECT * FROM city WHERE popu > 50; // 조회
DELETE FROM city WHERE popu > 50; // 삭제
DELETE를 잘못 사용하는 경우 데이터가 삭제될 위험이 있기 때문에 SELECT로 삭제 대상 레코드를 먼저 고른 후 조건이 맞는지 확인 후에 제거하는 것이 좋습니다
레코드의 필드 값을 변경할 때 사용합니다.
🟢 값 변경
UPDATE 테이블명 SET 필드명 = 데이터 [WHERE 조건];
✔ '속성명 = 데이터'는 복수로 추가가 가능합니다.
✔ WHERE 조건문을 생략하면 모든 레코드가 갱신됩니다.
✔ 명령어 문장에 계산식을 사용할 수 있습니다.
-- city 테이블 내에 name이 "서울"인 데이터의 popu를 1000으로, region을 "경기"로 변경
UPDATE city SET popu = 1000, region = "경기" WHERE name = "서울";
전체 또는 조건을 만족하는 튜플을 검색할 때 사용합니다.
다른 명령어들을 실행하기 전 해당 조건에 맞는 내용인지 데이터 값을 확인하기 위해서도 사용되며, 사용 빈도가 높습니다.
🟢 데이터 검색
SELECT 필드명
FROM 테이블명1, 테이블명2
WHERE 조건
GROUP BY 속성명1, 속성명2
HAVING 조건
ORDER BY 속성 [ASC|DESC];
참조 테이블과 동일하게 데이터 병합 하기 위해 사용합니다.
🟢 데이터 병합
MERGE INTO 수정 테이블명
USING 참조 테이블 ON (연결조건)
-- 수정
WHEN MATCHED THEN
UPDATE SET 수정할 내용
-- 삽입
WHEN NOT MATCHED THEN
INSERT VALUES 삽입할 내용