728x90
반응형
SMALL
스칼라쿼리 : SELECT 절에서 함수처럼 사용되는 쿼리문이다.
하나의 레코드만 리턴가능, (반환값은 꼭 1개여야함.) 두개이상의 레코드는 리턴할 수 없다.
일치하는 데이터가 없으면 NULL 값을 리턴한다.
스칼라 쿼리의 예)
SELECT D.DEPTNO,
(SELECT MIN(EMPNO) FROM EMP WHERE DEPTNO = D.DEPTNO EMPNO
FROM DEPT D
ORDER BY D.DEPTNO) AS EMPNO -- 스칼라쿼리
FROM DEPT D
ORDER BY D.DEPTNO;
스칼라 쿼리는 일치하지 않더라도 NULL을 리턴하므로 Outer 조인과 같은 형태이며, 이는 스칼라 쿼리와 Outer 조인은 같은 맥락이라고 볼 수 있다는걸 의미한다.
인라인뷰 : FROM 절에서 임시 공간에 테이블을 생성하여 사용되는 뷰와 비슷한 저장 형태를 의미한다.
FROM 절에 있는 서브쿼리가 인라인 뷰를 생성
인라인뷰 예)
SELECT E.LAST_NAME, E.SALARY, D.AVGSAL
FROM EMPLOYEES E, (SELECT DEPARTMENT_ID, AVG(SALARY) AVGSAL
FROM EMPLOYEES
GROUPO BY DEPARTMENT_ID) D -- 테이블처럼 이해하면 된다.
-- 별칭 꼭 줘야함
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
AND E.SALARY < D.AVGSAL;
서브쿼리 : WHERE 조건 절에서 비교형태로 사용되는 형태
서브쿼리 예)
SELECT A.ACCOUNT,
A.CUSTOMER_NO,
A.CUSTOMER_NM,
A.ADD_CASH
( SELECT EMP_NM
FROM EMPLOYEE A
WHERE D.EMP_NO = A.EMP_NO) AS 담당자_이름 -- 스칼라쿼리
FROM TB_ACCOUNT A,
(SELECT CUSTOMER_NO,
MAX(ADD_CASH) AS 적립금
FROM TB_POINT
WHERE ADD_DATE = '20190218') C -- 인라인 뷰
WHERE NOT EXISTS ( SELECT 'X'
FROM TB_DEPOSIT B
WHERE A.ACCOUNT_NO = B.ACCOUNT_NO
AND B.DEAL_DATE LIKE '201912%') -- 서브쿼리
728x90
반응형
LIST
'Oracle' 카테고리의 다른 글
[Oracle] sqlDeveloper 대체변수 '&' 입력 (0) | 2020.11.19 |
---|---|
oracle sql 파일 직접 실행하기 (0) | 2020.11.19 |
[Oracle]Convert 함수 (0) | 2020.11.19 |
ORA-28000: the account is locked (0) | 2020.11.19 |
ora-12519 TNS:no appropriate handler found (0) | 2020.11.19 |