1. INSERT

이전 글들은 SELECT를 활용해서 데이터를 검색하는 것이었다면 지금은 데이터를 입력할 때의 방법을 설명하겠습니다.


우리가 게시판을 하나 만들었다고 한다면 최초 서비스가 올라갔을 때는 게시글이 하나도 없을 것입니다. 그러면 우리는 ‘글쓰기' 또는 ‘만들기’와 같은 버튼을 클릭했을 때 데이터 추가 기능을 사용할 것입니다. 여기서 사용하는 것이 INSERT라고 생각하면 됩니다.

    1. INSERT로 레코드 추가하기

RDBMS에서는 INSERT 명령으로 레코드 단위로 데이터를 추가합니다.


1

INSERT INTO 테이블명 VALUES (값1, 값2, 값3 ...);

[표 1. INSERT를 사용하는 방법]


해당 쿼리의 형식으로 실행 시 지정한 테이블에 레코드가 추가됩니다.


INSERT 쿼리는 실행을 하면 처리 상태만 표시되고 SELECT와 같이 실행했을 때 결과를 보여주지 않습니다. 제대로 들어갔는지 확인하기 위해서는 SELECT 쿼리를 실행하여 확인하면됩니다.


스크린샷 2017-02-21 오후 3.06.33.png

[그림 1. INSERT 쿼리 실행과 검색]

    1. 값을 저장할 컬럼 지정하기

INSERT 쿼리 실행 시 테이블명만 지정하고 컬럼명을 지정하지 않을 경우는 모든 컬럼의 값을 VALUES 부분에 모든 컬럼에 대한 값을 지정해야 합니다.

하지만 테이블을 지정하고 괄호로 값을 넣을 컬럼명을 지정할 경우 해당 컬럼에만 값이 들어갑니다.


1

INSERT INTO 테이블명 (컬럼1, 커럼2 …) VALUES (값1, 값2, 값3 ...);

[표 2. 컬럼을 지정하여 값 지정]


스크린샷 2017-02-21 오후 3.14.44.png

[그림 2. 컬럼을 지정하여 실행한 결과]

    1. NOT NULL

레코드를 추가할 때 NULL을 지정하고 싶을 경우에는 VALUES에서 NULL로 값을 지정할 수 있습니다.


1

INSERT INTO 테이블명 VALUES (NULL, NULL, NULL ...);

[표 3. NULL값을 지정]


스크린샷 2017-02-21 오후 3.15.27.png

[그림 3. NULL 값을 지정하여 실행한 결과]


지금 샘플 테이블에는 모든 컬럼이 NULL을 허용하고 있습니다. 그런데 만약 컬럼 중 NOT NULL 제약이 걸려있는 것이 있다고 하면 샘플로 실행한 쿼리는 에러가 발생합니다. 그 이유는 NOT NULL 제약이 걸려 있는 컬럼은 NULL 값을 허용안되기 때문입니다.

    1. DEFAULT

DEFAULT는 명시적으로 값을 지정하지 않았을 경우 사용하는 초기값을 말합니다. 이것은 테이블을 정의할 때 지정할 수 있습니다.


DEFAULT는 두가지 방법으로 사용할 수 있습니다.

DEFAULT를 명시하는 방법과 암묵적으로 디폴트를 사용하는 방법이 있습니다.

보통 INSERT 사용 시 디폴트가 지정되어 있는 컬럼을 제외하고 쿼리를 실행 합니다. 그렇게 실행을 하더라도 컬럼의 값이 디폴트로 저장이 되기 때문입니다.

  1. DELETE

서비스를 하다보면 데이터를 삭제해야 하는 경우가 있습니다.

예를 들어 게시판의 글 중에 글을 하나 삭제한다고 했을 때 ‘삭제' 또는 ‘지우기'같은 버튼을 클릭 했을 때 데이터 삭제 기능을 사용할 것입니다.

    1. DELETE로 레코드 삭제하기

RDBMS에서 데이터를 삭제할 경우에는 DELETE 쿼리를 실행합니다.


1

DELETE FROM 테이블명 WHERE 조건식;

[표 4. DELECT를 사용하는 방법]


[표 4]에서 WHERE 조건식이 없다면 테이블의 모든 레코드를 삭제하게 됩니다. 그래서 조건에 부합하는 레코드만 삭제되도록 조건식을 넣어줘야 합니다.


아마 컬럼의 데이터만 삭제할 수 있지 않을까? 라고 생각하시는 분들이 있습니다. 결론은 안된다. 입니다. 컬럼 단위로 삭제가 아닌 레코드 단위이고 조건에 일치하는 모든행을 삭제하므로 사용시 주의해야 합니다.


스크린샷 2017-02-21 오후 3.40.30.png

[그림 4. DELETE 쿼리를 실행한 결과]

  1. UPDATE

데이터 갱신 작업은 시스템에서 자주 발생합니다.

예를 들어 게시판에서 게시글을 수정할 때 ‘수정' 또는 ‘갱신'과 같은 버튼을 클릭 시 내부적으로 데이터 갱신 기능을 사용할 것입니다.

    1. UPDATE로 데이터 갱신하기

RDBMS에서는 UPDATE 쿼리로 데이터를 갱신할 수 있습니다. 이것은 테이블의 셀 값을 갱신하는 명령입니다.


1

UPDATE 테이블명 SET 컬럼명 = 값 WHERE 조건식;

[표 5. UPDATE의 사용 방법]


DELETE와 달리 셀 단위로 데이터를 갱신할 수 있습니다. WHERE 조건식을 일치하는 모든 레코드를 갱신할 수 있습니다. 만약 WHERE 조건식을 제외한다면 테이블의 모든 레코드가 갱신됩니다.


스크린샷 2017-02-21 오후 3.49.38.png

[그림 5. UPDATE 쿼리를 실행한 결과]

    1. 복수의 컬럼 갱신

위에서는 컬럼 하나에 대한것만 갱신을 하였습니다. 이번에는 복수의 컬럼을 갱신할 때 UPDATE를 어떻게 사용해야하는지 보겠습니다.


1

UPDATE 테이블명 SET 컬럼명1 = 값1, 컬럼명 2 = 값2, …  WHERE 조건식;

[표 6. 복수의 컬럼을 지정한 UPDATE 사용 방법]


스크린샷 2017-02-21 오후 4.33.05.png

[그림 6. 복수의 컬럼을 지정한 UPDATE 쿼리 실행 결과]


만약 NULL로 데이터를 초기화하려고 한다면 컬럼명 = NULL 로 지정하면 됩니다. 이런것을 NULL 초기화라고 합니다. 대신 갱신하려는 컬럼이 NOT NULL 제약 조건이 걸려있는것은 아닌지 확인하고 실행하면 됩니다.

  1. 물리 삭제, 논리 삭제

실제 서비스를 진행하면서 데이터를 삭제할 때 데이터를 삭제해 버리는 경우와 별도 삭제 플래그를 넣어서 실제 레코드는 삭제되지 않지만 플래그 값을 기준으로 삭제를 판단하는 경우가 있습니다. 여기서 말하는 삭제하는 것을 물리삭제, 삭제 플래그를 지정하는 것을 논리 삭제라고합니다.

왜 이렇게 사용한다라고 말을 하기보다는 데이터 특성이나 서비스 운영 정책에 따라 달라지기 때문에 뭐라 단정지어서 말하기 어렵습니다.

어느 테이블의 경우는 데이터를 삭제를 해야하고 어느 테이블은 삭제 플래그를 넣고 데이터는 유지하는 것처럼 섞여서 사용되기 때문에 내부 서비스 정책 및 용도에 맞게 선택하여 사용하면 될 것 같습니다.



저작자 표시 비영리 동일 조건 변경 허락
신고

+ Recent posts

티스토리 툴바