본문 바로가기

[ Developer ]/Oracle SQL16

[SQL] CASE WHEN ELSE 쿼리 분기시키기 SQL - CASE WHEN ELSE SQL에서 Switch Case와 같이 사용되는 것으로 이전에 공부한 DECODE와 비슷하다고 볼 수 있다 하지만 DECODE는 지정한 값을 특정한 값으로 출력이 가능하지만 나머지 조건에 대해서 출력을 할 수 없다 CAE WHEN ELSE는 ELSE를 통해서 지정한 조건 외 나머지 값들을 출력이 가능하다 아래의 예제로 살펴본다 기본적으로 HR 계정에서 정보를 출력할 때 JOB_ID 별로 A, B, C, D, E 그리고 나머지는 0을 출력하고 싶다면 아래와 같이 CASE WHEN ELSE를 사용하면 된다 CASE로 비교할 컬럼명을 적고 WHEN으로 조건 THEN으로 값을 적어준다 switch case와 비슷하다 CASE WHEN ELSE는 사용자가 원하는데로 사용이 가.. 2016. 5. 19.
[SQL] DECODE 쿼리에서 특정값으로 출력하기 SQL - DECODE DECODE는 Oracle에서만 지원되는 키워드이다 특정 컬럼의 값을 기준으로 IF문처럼 사용이 가능하다 지정할 값이 'A'이면 '에이' 출력 'B'면 '비' 출력과 같이 값에 따라서 원하는 정보로 출력을 할 수 있다 아래의 예제로 살펴본다 (Oracle HR 계정 사용) # SQL 13번 DECODE는 '조건1', '1 참인경우', '조건2', '2 참인경우', '...', 'FALSE' 여기서 B인 사람만 출력하고 싶다면 다음과 같이 별칭과 뷰을 이용해야 한다 WHERE 절에는 뷰나 프롬에서 오는 것만 작성 가능하다 DECODE는 조건일 때 어떠한 값을 보여주지만 CASE WHEN ELSE는 CASE일 때 쿼리도 작성이 가능하다 2016. 5. 15.
[SQL] EXIST 값 존재하는지 검색 쿼리 SQL - EXISTS 값이 존재하는지 없는지에 대한 키워드 존재한다면 값을 가져오고 없다면 가져오지 않는다 EXISTS 앞에 NOT을 붙이면 없는 컬럼이 나온다 # SQL 35번 값을 가지지 않은 부서를 출력하고 싶다면 아래와 같이 서브 쿼리를 작성할 때 NOT EXISTS를 작성한다 응용해서 ST_CLERK를 갖는 부서를 찾고 싶다면 EXISTS로 작성을 하면 된다 # EXISTS 흐름도 10 ~ 110까지의 전체적인 DEPARTMENT_ID가 존재 (NULL이 아닌 값) EMPLOYEES E에서 서브 쿼리 안의 E.DEPARTMENT_ID로 값 전달 순차적으로 넘어 오면서 E1.DEPARTMENT_ID (같은값)에서 비교 비교되는 즉 순차적인 부서 번호와 같은 부서 번호를 갖는 로우 검사 JOB_I.. 2016. 5. 15.
[SQL] View 뷰를 이용한 쿼리 검색 SQL - View 뷰는 하나의 가상 테이블 실제 데이터가 저장 되는 것은 아니지만 뷰를 통해 데이터를 가상 테이블로 관리 가능 한 개의 뷰로 여러 테이블에 대한 데이터를 검색할 수 있다 조회 대상을 줄이고 싶을 때 사용하면 된다 조회 대상을 뷰로 가상 테이블 개념으로 받는다 # SQL 30번 FROM에 가상의 테이블 (뷰, 즉 LAST_NAME에 u가 들어가 있는 사람의 부서번호가 있는 테이블)로 받는다 부서번호는 중복이 발생하기 때문에 DISTINCT를 해준다 다음과 같이 응용하면 DISTINCT를 사용하지 않아도 고유의 사번을 가지고 있기 때문에 중복이 발생하지 않는다 # SQL 31번 # SQL 34번 [중요] -- 34 회사 전체 평균 연봉 보다 더 버는 사원들 중 - VIEW1 -- LAST_.. 2016. 5. 14.