subquery

혜쿰·2023년 7월 26일
3
  • union : 구조가 일치하는 두 개 이상의 테이블 자료 합쳐 보기, 원래 테이블은 계속 유지.

SELECT bun AS 번호, pummok AS 상품명 FROM pum1 UNION SELECT num, sangpum FROM pum2;

  • subquery : query속에 query가 있는 형태 (주로 안쪽 질의의 결과를 바깥쪽에서 참조)
    SELECT * FROM jikwon;

연습문제

  • '박치기'직원과 직급이 같은 직원 출력

SELECT jikwon_jik FROM jikwon WHERE jikwon_name = '박치기'; -- 문장1
SELECT FROM jikwon WHERE jikwon_jik = '사원'; -- 문장2
-- 문1 + 문2
SELECT
FROM jikwon WHERE jikwon_jik = (SELECT jikwon_jik FROM jikwon WHERE jikwon_name = '박치기');

  • 직급이 대리 중 가장 먼저 입사한 대리는 누구?

SELECT FROM jikwon WHERE jikwon_ibsail = ( SELECT MIN(jikwon_ibsail) FROM jikwon WHERE jikwon_jik = '대리'); -- 오류날 수 있음
SELECT
FROM jikwon WHERE jikwon_jik = '대리' AND
jikwon_ibsail = ( SELECT MIN(jikwon_ibsail) FROM jikwon WHERE jikwon_jik = '대리');

  • 인천에 근무하는 직원 출력

SELECT * FROM jikwon WHERE buser_num = (SELECT buser_no FROM buser WHERE buser_loc = '인천');
-- 서브쿼리 한개씩 반환하기 때문에 "=" 씀

  • 인천이외의 지역에서 근무하는 직원 출력

SELECT * FROM jikwon WHERE buser_num IN (SELECT buser_no FROM buser WHERE not buser_loc = '인천');
-- 서브쿼리에서 여러개씩 반환하기 때문에 "IN" 씀

  • '김혜순' 고객과 담당 직원이 고객 자료를 출력

SELECT * FROM gogek WHERE gogek_damsano = (SELECT gogek_damsano FROM gogek WHERE gogek_name = '김혜순');

  • '이영희' 고객과 나이가 같은 고객자료를 출력

SELECT * FROM gogek WHERE substr(gogek_jumin,1,2) = (SELECT substr(gogek_jumin,1,2) FROM gogek WHERE gogek_name = '이영희');

0개의 댓글