본문 바로가기

Database/SQL

(9)
[oracle] EXISTS, NOT EXISTS 실제로 사용해본 것은 IN 뿐이었는데 EXISTS 라는 함수도 있다는 것을 알게 되었다. 사용법은 비슷한 것 같은데 뭐가 다른지 궁금해서 정리해봄. EXISTS 는 서브쿼리만 사용 가능하며, IN은 서브쿼리 + 단순 값도 사용가능하다. 1. NOT IN, NOT EXISTS 효과적인 튜닝방법 -데이터 제한 조건은 인덱스 사용 -데이터 불러오는 양 적게 -사용자 ORACLE FUNCTION은 자제 -NOT EXISTS보다는 EXISTS 사용 권장 2. EXISTS 실행조건 SELECT COLUMNS FROM TABLE WHERE EXISTS (subquery); SELECT * FROM TEST A WHERE EXISTS (SELECT * FROM TEST2 B WHERE A.id = B.id) 서브쿼리에..
[oracle] INSTR 문자열에서 특정문자를 찾아 문자의 위치를 리턴해주는 함수 INSTR(문자열, 찾는 문자, 시작 위치, 위치의 순번) 시작 위치에 -1을 할 경우 뒤에서부터 순서를 찾음 INSTR("ABCDE","B") //결과 : 2
[oracle] Merge문 insert, update를 한번에 할 수 있는 MERGE문 MERGE INTO table_name alias USING (table | view | subquery) ON (join condition) WHEN MATCHED THEN UPDATE SET col1 = val1[, ...] WHEN NOT MATCHED THEN INSERT (column lists) VALUES (values); 테이블 2개를 join해서 update할 때 서브쿼리로 썼더니 계속 오류가 나서 해결방법을 찾음! MERGE INTO table_name A USING (SELECT B.user_id, B.user_name, B.user_no FROM ori_table_name B WHERE B.user_old = '24') O..
[oracle] NVL, NVL2, NULLIF NVL -NVL(해당 컬럼, NULL일 때 변경할 값) -NVL 함수는 NULL값을 다른 값으로 바꿀 때 사용. 모든 데이터의 타입에 적용가능. SELECT NVL(SCORE, 0) FROM TEST SCORE컬럼에 NULL인 값을 0으로 변경해서 출력한다. NVL2 -NVL2(해당 컬럼, NULL이 아닐 경우 반환할 값, NULL일 경우 반환할 값) SELECT NVL2(SCORE, SCORE, 0) FROM TEST SCORE컬럼에 NULL이 아닐 경우 SCORE의 그대로 값 출력, NULL 일 경우에는 0을 출력한다. NULLIF -NULLIF(해당 컬럼, 해당 컬럼과 비교할 값) -둘 값이 동일하면 NULL, 동일하지 않을 경우에는 해당컬럼 출력 SELECT NULLIF(SCORE, 0) FROM..