120. SQL - DML
120.1 DML(Data Manipulation Language, 데이터 조작어)
데이터베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
- DML은 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공
- DML의 유형
명령문 |
기능 |
SELECT |
테이블에서 튜플을 검색 |
INSERT |
테이블에 새로운 튜플을 삽입 |
DELETE |
테이블에서 튜플을 삭제 |
UPDATE |
테이블에서 튜플의 내용을 갱신 |
120.2 삽입문(INSERT INTO~)
기본 테이블에 새로운 튜플을 삽입할 때 사용
INSERT INTO 테이블명([속성명1, 속성명2, ···])
VALUES (데이터1, 데이터2, ···);
- 대응하는 속성과 데이터의 개수와 데이터 유형이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있음
120.2.1 예제 1
이름 |
부서 |
생일 |
주소 |
기본급 |
홍길동 |
기획 |
04/05/61 |
망원동 |
120 |
임꺽정 |
인터넷 |
01/09/69 |
성산동 |
80 |
황진이 |
편집 |
07/21/75 |
연희동 |
100 |
김선달 |
편집 |
10/22/73 |
망원동 |
90 |
성춘향 |
기획 |
02/20/64 |
망원동 |
100 |
장길산 |
편집 |
03/11/67 |
상암동 |
120 |
일지매 |
기획 |
04/29/78 |
합정동 |
110 |
강호동 |
인터넷 |
12/11/80 |
|
90 |
- <사원> 테이블에 (이름-홍승현, 부서-인터넷)을 삽입하라
INSERT INTO 사원(이름, 부서) VALUES('홍승현', '인터넷');
이름 |
부서 |
생일 |
주소 |
기본급 |
홍길동 |
기획 |
04/05/61 |
망원동 |
120 |
임꺽정 |
인터넷 |
01/09/69 |
성산동 |
80 |
황진이 |
편집 |
07/21/75 |
연희동 |
100 |
김선달 |
편집 |
10/22/73 |
망원동 |
90 |
성춘향 |
기획 |
02/20/64 |
망원동 |
100 |
장길산 |
편집 |
03/11/67 |
상암동 |
120 |
일지매 |
기획 |
04/29/78 |
합정동 |
110 |
강호동 |
인터넷 |
12/11/80 |
|
90 |
홍승현 |
인터넷 |
|
|
|
120.2.2 예제 2
- <사원> 테이블에 (장보고, 기획, 05/03/73, 홍제동, 90)을 삽입하라
INSERT INTO 사원 VALUES ('장보고', '기획', #05/03/73#, '홍제동', 90);
- 날짜 데이터는 숫자로 취급하지만 ' '또는 # #으로 묶음
- <사원> 테이블 상태
이름 |
부서 |
생일 |
주소 |
기본급 |
홍길동 |
기획 |
04/05/61 |
망원동 |
120 |
임꺽정 |
인터넷 |
01/09/69 |
성산동 |
80 |
황진이 |
편집 |
07/21/75 |
연희동 |
100 |
김선달 |
편집 |
10/22/73 |
망원동 |
90 |
성춘향 |
기획 |
02/20/64 |
망원동 |
100 |
장길산 |
편집 |
03/11/67 |
상암동 |
120 |
일지매 |
기획 |
04/29/78 |
합정동 |
110 |
강호동 |
인터넷 |
12/11/80 |
|
90 |
홍승현 |
인터넷 |
|
|
|
장보고 |
기획 |
05/03/73 |
홍제동 |
90 |
120.2.3 예제 3
- <사원> 테이블에 있는 편집부의 모든 튜플을 편집부원(이름, 생일, 주소, 기본급) 테이블에 삽입하라
INSERT INTO 편집부원(이름, 생일, 주소, 기본급)
SELECT 이름, 생일, 주소, 기본급
FROM 사원
WHERE 부서='편집';
120.3 삭제문(DELETE FROM~)
기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제할 때 사용
DELETE FROM 테이블명 [WHERE 조건];
- 모든 레코드를 삭제할 때는 WHERE절을 생략
- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름
120.3.1 예제 1
- <사원> 테이블에서 '임꺽정'에 대한 튜플을 삭제하라
DELETE FROM 사원 WHERE='임꺽정';
120.3.2 예제 2
- <사원> 테이블에서 '인터넷' 부서에 대한 모든 튜플을 삭제하라
DELETE FROM 사원 FROM 부서='인터넷';
120.3.3 예제 3
DELETE FROM 사원;
120.4 갱신문(UPDATE~ SET~)
기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용
UPDATE 테이블명 SET 속성명 = 데이터[, 속성명 = 데이터, ···]
[WHERE 조건];
120.4.1 예제 1
- <사원> 테이블에서 '홍길동'의 '주소'를 '수색동'으로 수정하라
UPDAET 사원 SET 주소='수색동' WHERE 이름='홍길동';
120.4.2 예제 2
- <사원> 테이블에서 '황진이'의 '부서'를 '기획부'로 변경하고 '기본급'을 5만원 인상시켜라
UPDATE 사원 SET 부서='기획', 기본급=기본급+5 WHERE 이름='황진이'