SQL 4

[SQL] NVL , NVL2

우선 NULL 값이란 아직 정의되지 않을 값으로 0과 공백과는 다르다. (0은 숫자이고, 공백은 문자이다) NVL 함수는 NULL과 연산하고 싶을때 시스템에서 의미없는 문자로 바꿔서 연산할때 사용한다. SELECT NVL(ANUM , BNUM) AS NUM FROM TABLE1 이때 NVL의 기능은 TABLE1에서 ANUM을 NUM로 가져오고싶은데 ANUM이 NULL일때 BNUM을 조회하는 쿼리이다. NVL2는 NVL을 확장한 함수로 SELECT NVL(ANUM , BNUM , CNUM ) AS NUM FROM TABLE1 ANUM이 NULL이면 BNUM을 ANUM , BNUM 이 둘다 NULL 이면 CNUM 을 조회한다. ====== 다른방식으로도 사용가능하다. NVL("값", "지정값") 값이 NUL..

SQL 2023.02.10

SQL Oracle - 튜닝 Hint 힌트

Oracle Hint (오라클 힌트)란 SQL 튜닝의 일종인 지시문구이다. 오라클 옵티마이저(Optimizer")가 SQL문을 실행 계획을 바꿔 데이터 스캔 경로, 조인방법을 알려주는 것이다. 사용자가 특정 SQL 문장에서 어떤 인덱스가 선택도가 더 높은지 잘 알고있는 경우, 힌트, 인덱스, 조인의 개념을 정확히 알고 사용한다면 직접 최적의 실행 경로를 작성하는 것 이기 때문에 옵티마이저에게 의존한 실행계획보다 효율적이다. 하지만 잘못사용한다면 더 느려지는등 좋지않음.. 당연.. 힌트는 액세스 경로, 조인순서, 병렬 및 직렬 처리, Optimizer의 목표 변경이 가능하다. 사용방법은 SELECT /*+ (힌트명)*/ A1 , A2 , A3 FROM TABLE 이렇게 SELECT 뒤에 써주고 여러개의 힌..

SQL 2023.01.06

[SQL Oracle] ROWNUM =2 사용법 , 쿼리문 실행순서

ROWNUM은 n번째 행을 구할 때 사용하는 WHERE의 조건이다. 특정 개수만큼 원하는 데이터를 추출할 수 있다. T1에 데이터가 100개라면 SELECT * FROM TABLE T1 이렇게 쓰면 100개가 나오고 SELECT * FROM TABLE T1 WHERE ROWNUM < 10 이렇게하면 9개 나온다 SELECT * FROM TABLE T1 WHERE ROWNUM = 1 이렇게하면 첫번째의 1개의 데이터가 나오는데 SELECT * FROM TABLE T1 WHERE ROWNUM = 2 이렇게하면? 두번째의 데이터가 나오지 않고 아무것도 나오지 않는다 그 이유는 ROWNUM은 WHERE절이 실행될때 조건의 부합하면 번호를 부여해주고 그렇지 않으면 버리는 방식이기 때문이다. 순번을 미리 부여하고 ..

SQL 2023.01.05

SQL SELECT 조건절 / WHERE 조건절 / JOIN

쿼리 현행화중.. 결과는 같지만 기독성을 좋게하거나 속도를 위해 조건절을 활용하여 쿼리를 수정하고있다. SELECT 조건절 : select 에서 조건을 바로 준다. SELECT col1 ,(SELECT bcol1 FROM Btable WHERE bid = a.aid) col2 ,col3 FROM Atable WHERE col1 IS NOT NULL WHERE 조건절 : where에서 조건을 준다. SELECT A.col1 ,B.bcol1 as col2 ,A.col3 FROM Atable A , Btable B WHERE A.aid = B.bid AND col1 IS NOT NULL ====== 아래는 SELECT 조건절 - > LEFT OUTHER JOIN 로 바꿔보았다. SELECT T.ST_DT ,T..

SQL 2022.11.29