티스토리 뷰

알면 쓸모있는 디비 잡학사전

1. insert ignore이란?

데이터를 추가할 때 설정한 pk값이 중복된 경우가 있다.
해당 경우에 대해 중복된 값이 있다면 무시하고 다음 값을 넣도록 해주는 쿼리이다.

    INSERT IGNORE INTO TABLE
    ( A, B, C)
    VALUES 
    (A_, B_, C_)

 


2. explain이란?

데이터의 값을 가져올 때 해당 값에 대해 미리 확인해볼 수 있는 쿼리이다.
이를 통해 우선적으로 쿼리의 튜닝을 검토해볼 수 있다.

DB가 데이터를 찾아가는 과정을 사람이 알아보기 쉽게 DB의 결과로 보여주는 것이다.
이를 통해 기존의 쿼리를 튜닝할 수 있으며 성능 분석, 인덱스 전략 수집 등과 같이 성능 최적화에 대한 전반적인 업무를 처리할 수 있다.

    EXPLAIN SELECT * FROM TABLE WHERE ...;

 


3. updatedelete

값에 대해 수정하는 경우에는 좋지 않은 방법이 2가지가 있다.

  1. 디비에서 직접 값을 수정/삭제하는 방법
  2. 수정/삭제할 때 쿼리에서 직접적인 값을 넣어 설정하는 방법
     DELETE FROM TABLE WHERE INDEX = 123;
     UPDATE TABLE SET IS_DISPLAY= 'Y' WHERE INDEX=123; 

그렇다면 어떻게 처리하는 게 좋을까?

이럴 때에는 SELECT문을 이용하면 좋다.

    DELETE FROM TABLE WHERE INDEX IN (SELECT INDEX FROM TABLE ... );
    UPDATE TABLE SET IS DISPLAY = 'Y' WHERE INDEX IN S(SELECT INDEX FROM TABLE ...);  

 


4. NULL인 값을 정렬할 때 뒤로 오게 하는 방법

A라는 테이블에 SORT_ORDER라는 칼럼이 있다.
해당 칼럼은 1,2,3값을 가지거나 NULL값을 가진다.
1,2,3, NULL인 순서로 값을 정렬하기 위해서는 무엇을 하면 될까?

    ORDER BY SORT_ORDER IS NULL ASC, SORT_ORDER

IS NULL ASC를 통해서 NULL값인 경우 NULL값이 오름차순으로 뒤로 가게 된다.
하지만 1,2,3의 순서가 아닌 3,1,2와 같이 정렬되지 않은 값들을 갖게 된다.
SORT_ORDER를 통해 해당 값들을 1,2,3의 순서와 같이 정렬되게 설정한다.

+) 만약 순서를 NULL값을 앞으로 오게 하고 싶다면?

    ORDER BY SORT_ORDER

이와 같을 경우 NULL, 1, 2, 3의 값을 갖게 된다.


5. CHAR(1)인 칼럼의 값을 비교하고 싶다면?

어떤 테이블의 IS_TOP라는 칼럼은 현재 상단에 보여야하는 값들을 알려주는 칼럼이다.
BOOLEAN이 아닌 CHAR(1)의 데이터 타입을 갖으며 기본적으로는 N이며 상단인 경우 Y값을 가진다.

이럴 때 칼럼의 값을 비교하여 정렬하고 싶다면 어떻게 해야 할까?

1. ORDER BY FIELD(IS_TOP, 'Y', 'N')
2. ORDER BY IS_TOP DESC

1번의 경우에는 해당 문자열이 어떤 값인지에 따라 설정할 수 있다는 장점이 있다.
후에 YN인 값이 아니라 다른 값이 있는 경우에 유용하게 사용할 수 있다.

2번의 경우에는 해당 값의 문자열 순서대로 출력해준다.

 


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함