[PostgreSQL] 36~40강까지의 내용 정리
인라인 뷰부터 EXISTS 연산자까지
인라인 뷰
-뷰는 쿼리의 결과를 마치 하나의 테이블처럼 사용하기 위한 목적
-데이터는 볼 수만 있고 저장되지 않는다
-FROM 절에 사용
-인라인 뷰는 쿼리 안의 뷰 형태로, FROM 절에 사용하는 서브쿼리
-대소비교가 가능하다
-조인을 통해 조건을 전달할 때 사용
-분리된 다른 테이블을 참조하여 원하는 정보를 가공하는 문법인 JOIN을 사용하여 두 데이터를 비교하는 표현식
-서브쿼리의 그룹 함수 결과(ex. avg(height) as avg_height ) 전달 시 반드시 컬럼 별칭을 사용해야 한다
→ 조건문에서 다시 계산을 하는 것처럼 잘못 인식이 될 수 있기 때문, 에러 발생
-인라인 뷰엔 반드시 별칭을 사용해야 한다
-기존 테이블에도 있고, 인라인 뷰에도 있는 컬럼 같은 경우 반드시 테이블 별칭.컬럼명의 형태로 사용한다
상호연관 서브쿼리
-서브쿼리에 사용하는 표현식을 상호연관 서브쿼리라고 한다
-메인쿼리와 서브쿼리의 정보를 교환하는 표현식
-메인쿼리와 서브쿼리의 비교 가능, 그룹별 대소 비교 가능
-서브쿼리에 비교 조건 전달
예시
select p1.name, p1.position, p1.pay from professor p1
where pay > ( select avg(pay) from professor p2 where p1.position = p2.position group by position)
스칼라 서브쿼리
-서브쿼리는 사용 위치에 따라 인라인 뷰와 스칼라 서브쿼리로 나눌 수 있다
-스칼라 서브쿼리는 SELECT 절에 사용하는 서브쿼리를 의미
-각 행마다 매칭되는 서브쿼리의 결과는 단 하나의 행
-select 절에 사용한다는 의미는 하나의 컬럼처럼 출력하겠다라는 의미이므로 단 한 개의 컬럼만 리턴해야 한다
-아우터 조인 없이 생략된 정보를 출력 가능 -> 아우터 조인을 수행한 것처럼 행 출력
예시
select name, (select avg(sal) from emp2) from emp2 where position='intern';
EXISTS 연산자
-서브쿼리 연산자로, 서브쿼리 결과의 True, False 값을 메인 쿼리에 전달
-각 행의 서브 쿼리 결과의 참, 거짓을 판단하여 참이면 연산 결과를 리턴, 아님 생략
-select 절보다 where절이 중요
-NOT EXISTS로 부정 연산 가능
Q. jumun과 menu 테이블을 사용하여 1000번 고객이 주로 애용하는 메뉴의 이름과 가격 정보 출력
A.
select pname,price from menu
where exists (select 1 from jumun where menu.pid= jumun.pid and gno = 1000);
Author And Source
이 문제에 관하여([PostgreSQL] 36~40강까지의 내용 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bacccine/PostgreSQL-3640강까지의-내용-정리-6qisldg0저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)