티스토리 뷰
알면 쓸모있는 디비 잡학사전
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. update
와 delete
값에 대해 수정하는 경우에는 좋지 않은 방법이 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번의 경우에는 해당 문자열이 어떤 값인지에 따라 설정할 수 있다는 장점이 있다.
후에 Y
나 N
인 값이 아니라 다른 값이 있는 경우에 유용하게 사용할 수 있다.
2번의 경우에는 해당 값의 문자열 순서대로 출력해준다.
- Total
- Today
- Yesterday
- 우분투설치
- xv6
- 프리티어
- springboot
- 괄호회전하기
- 이진변환반복하기
- 뉴스클러스터링
- 백준
- 응답코드
- 실패율
- 영어끝말잇기
- Auditing
- 프로그래머스
- 머신러닝
- dp
- AWS
- interrupt
- 최솟값구하기
- 운영체제
- RDS
- 시스템콜
- 정수삼각형
- ubuntu
- 최고의집합
- PasswordEncoder
- Android
- 다음큰숫자
- qemu
- OS
- PostgreSQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |