본문 바로가기

오라클10

[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.
[SQL] Sub Query 서브 쿼리 사용하기 SQL - Sub Query 쿼리의 결과를 다른 쿼리의 조건에 대입시킬 수 있다 쿼리 안의 쿼리 조회하려는 대상을 알지 못할 때 조회하려는 대상이 너무 많을 때 조회하려는 대상이 유동적일 때 사용 많이 사용되면 cpu에 부담이 된다 과유불급 기본적으로 사원 정보를 출력하는데 조건 (WHERE)에 쿼리를 넣는다 괄호 안에 쿼리를 넣어 쿼리를 조건으로 넣을 수 있다 하지만 서브쿼리는 결과가 1개만 나오는 것이 아니다 결과가 여러가지라면 조건식에 =(이퀄)이 아닌 IN을 써주면 된다 결과가 1개만 나와야 한다면 = (이퀄) 사용 결과가 여러개 발생한다 IN 사용 만약 서브쿼리를 가져와서 비교를 해야한다면 비교 연산자를 통해 비교가 가능하다 또한 평균보다 +- 500에 해당하는 연봉을 가진 사람을 가져오고 싶다.. 2016. 5. 14.