데이터베이스 내의 데이터를 조작하는 데 사용되는 SQL(Structured Query Language) 명령어의 집합
DML 명령어는 데이터의 삽입, 수정, 삭제, 조회와 같은 작업을 수행
INSERT INTO table_name [(column, ..., column] VALUES ([expression, ..., expression]);
-- SELECT 문의 결과를 추가
INSERT INTO table_name [(column, ..., column)] SELECT statement ;
부서 테이블에 새로운 레코드 삽입
이때 기본키는 중복이 안되도록 삽입한다.
-- 레코드 1 개 추가
INSERT INTO department
VALUES (60, 'Statisics, 'Sciences', 30000000);
-- 특정 속성의 값만 추가
INSERT INTO department(deptno, dname)
VALUES (70, 'Philosophy');
-- NULL 값도 추가가 가능하다
INSERT INTO department
VALUES (80, 'Industrial Design', null, null);
-- 시간과 날짜 정보를 삽입할 경우, TO_DATE() 함수 사용
INSERT INTO student
VALUES (2000, 'John', 10, 101, 'M', 'London', TO_DATE('2001/06/24', 'YYYY/MM/DD'), 3.67(
-- 행 값을 복사하여 다른 테이블에 삽입가능
INSERT INTO d10student(stno, name, address, grade)
SELECT sid, sname, addr, grade
FROM student
WHERE deptno = 10;
UPDATE table_name
SET column = expression, […, column = expression ] [WHERE condition, ALL];
학생 테이블에서 Taehee의 데이터 갱신
만약 WHERE 절이 없다면 모든 레코드를 대상으로 바뀐다.
UPDATE student
SET deptno = 10, addr = 'Daegu', grade = 3.89
WHERE sname = 'Taehee';
Database를 전공한 교수가 소속된 학과의 예산을 최고 수준으로 인상
UPDATE department
SET budget = (SELECT MAX(budget) FROM department;)
WHERE deptno in
(
SELECT deptno
FROM professor
WHERE major = 'Datebase';
);
DELETE FROM table_name [WHERE condition, ALL];
학생 테이블에서 학과 번호가 20 인 행의 값 삭제
DELETE FROM student
WHERE deptno = 20
학생이 없는 학과를 삭제하라
DELETE FROM department
WHERE deptno NOT IN
(
-- 학생 테이블에서 학과번호 중복 없이 출력
SELECT DISINCT deptno
FROM student
)