라즈베리파이반

라즈베리파이 등 컴퓨터계열 게시판입니다.

제목SQL: 데이터 조작어2023-02-17 01:02
작성자user icon Level 4

88x31.png


데이터 조작어(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;


컬럼명은 와일드카드(*)을 통해 컬럼 전체를 조회할 수 있습니다. 


와일드카드 사용 

SELECT * FROM BOARD;


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 예제 

DELETE FROM BOARD;


FROM 키워드는 생략이 가능합니다.


FROM 생략 

DELETE BOARD WHERE DOCUMENT_IDX = 1;


#DML# SELECT# INSERT# UPDATE# DELETE
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)