데이터 조작어(Data Manipulation Language, DML)는 데이터베이스에 저장된 데이터를 조회, 입력, 수정 및 삭제하는 데 사용하는 질의어 입니다. 비절차적 언어이며, 사용자가 어떤 데이터를 원하는지를 명세합니다.
명령어는 SELECT, INSERT, UPDATE, DELETE가 있습니다.
1. SELECT
SELECT 명령어는 테이블이나 뷰에 있는 데이터를 조회할 때 사용하는 명령어 입니다.
SELECT 문법
SELECT [ALL | DISTINCT] 컬럼명 [AS 별명] FROM 테이블명 WHERE 조건 ORDER BY 컬럼; |
데이터를 조회할 때 필요한 것은 어디에서, 어떤 데이터를 가져올 것인지가 필요합니다. 이때 어디에서 가져올 것인지는 FROM절에 명시하고, 어떤 데이터를 가져올 것인지는 SELECT절에 기술합니다.
컬럼을 지정할 때 중복된 데이터를 모두 조회할 것인지, 한번만 조회할 것인지는 컬럼명 앞에 ALL 또는 DISTINCT 키워드를 붙여 나타낼 수 있습니다. 생략하는 경우 기본값은 ALL입니다.
2개 이상의 테이블에서 데이터를 조회하고 싶다면 콤마(,)를 구분자로 하여 테이블명을 나열하여 입력하면 되고, 어떤 테이블의 컬럼인지 구분하기위해 AS 키워드를 통해 별명(Alias)을 지정할 수 있습니다.
여러 테이블에서 데이터를 조회
SELECT B.*, C.* FROM BOARD AS B, COMMENTS AS C;
|
이때 AS 키워드를 생략할 수 있습니다.
AS 생략 SELECT B.*, C.* FROM BOARD B, COMMENTS C;
|
컬럼이름 또한 AS 키워드를 통해 별명을 지정할 수 있으며, 이 역시 생략이 가능합니다. 별명은 대소문자 구분이 없이 대문자로 표시되며, 별명을 예약어로 설정하거나 소문자를 입력하고 싶다면 쌍따옴표로 묶어주면 됩니다.
컬럼에 별명 지정
SELECT B.DOCUMENT_IDX B_IDX , C.COMMENT_IDX C_IDX , B.CONTENTS CONTENTS , C.CONTENTS "COMMENT" FROM BOARD B, COMMENTS C; |
컬럼명은 와일드카드(*)을 통해 컬럼 전체를 조회할 수 있습니다.
와일드카드 사용
WHERE절에는 조건을 설정할 수 있습니다.
조건 설정
SELECT * FROM BOARD WHERE DOCUMENT_IDX = 1; |
ORDER BY절을 통해서는 레코드의 정렬 순서를 지정해 줄 수 있습니다.
레코드 정렬
SELECT * FROM BOARD WHERE DOCUMENT_IDX > 10 ORDER BY DOCUMENT_IDX; |
WHERE절과 ORDER BY절은 차후에 자세히 설명하겠습니다.
2. INSERT
INSERT 명령어는 데이터의 내용을 입력할 때 사용하는 명령어 입니다.
INSERT 문법
INSERT INTO 테이블명(컬럼명) VALUES (입력값); |
입력값의 경우 컬럼명의 개수와 순서를 맞추어 입력합니다.
INSERT 예제
INSERT INTO BOARD (DOCUMENT_IDX, TItLE, CONTENTS) VALUES (1, '제목1', '내용1'); |
이때 컬럼명을 생략하면 테이블 전체 컬럼에 데이터를 입력합니다.
컬럼명 생략
INSERT INTO BOARD VALUES (1, '제목1', '내용1');
|
VALUES절 대신에 SELECT절을 통해 조회한 데이터를 입력할 수도 있으며, 이 경우 입력할 컬럼과 조회할 컬럼의 수와 순서는 동일해야합니다.
INSERT 예제
CREATE TABLE BOARD_TEMP ( DOCUMENT_IDX NUMBER PRIMARY KEY , TITLE VARCHAR2(50) NOT NULL , CONTENTS CLOB );
INSERT INTO BOARD VALUES (2, '제목2', '내용2');
INSERT INTO BOARD_TEMP SELECT * FROM BOARD; |
BOARD 테이블에서 조회한 전체 데이터가 BOARD_TEMP 테이블에 입력되는 것을 확인할 수 있습니다.
3. UPDATE
UPDATE 명령어는 데이터의 내용을 수정할 때 사용하는 명령어 입니다.
UPDATE 문법
UPDATE 테이블명 SET 컬럼1 = 변경값1 , 컬럼2 = 변경값2 ... WHERE 조건; |
이미 입력된 데이터를 변경해야 하므로, UPDATE 키워드 다음에 변경할 테이블을 입력하고, SET절에는 컬럼과 값을 입력합니다. 특정 레코드의 컬럼 데이터만 변경하려면 WHERE절에 조건문을 작성하면 됩니다.
UPDATE 예제
UPDATE BOARD SET TITLE = '제목1 수정' , CONTENTS = '내용1 수정' WHERE DOCUMENT_IDX = 1; |
4. DELETE
DELETE 명령어는 데이터의 내용을 삭제할 때 사용하는 명령어 입니다.
DELETE 문법
DELETE [FROM] 테이블명 WHERE 조건; |
특정 테이블에서 조건에 해당하는 레코드를 삭제하며, WHERE절을 생략하면 전체 데이터를 삭제합니다. 이때 ROLLBACK이 불가능한 TRUNCATE 명령어와 달리, DELETE는 COMMIT 하기 전까는 ROLLBACK이 가능합니다.
DELETE 예제
FROM 키워드는 생략이 가능합니다.
FROM 생략 DELETE BOARD WHERE DOCUMENT_IDX = 1;
|
|