2026/05 4

Ch04. UNION - UNION 정렬

"UNION" 또는 "UNION ALL"을 사용하여 여러 "SELECT" 문의 결과를 합칠 때, 최종 결과 집합에 대해 정렬(Sorting)을 적용할 수 있다. 이때 "ORDER BY" 절의 위치가 중요하다. "ORDER BY" 절은 전체 "UNION" 연산의 가장 마지막에 한 번만 사용해야 한다. 만약 각 "SELECT" 문 안에 "ORDER BY"를 사용하면 에러가 발생하거나, 예상과 다른 결과가 나올 수 있다. 왜냐하면 "UNION"은 각 "SELECT" 문의 개별적인 정렬 순서가 아니라, 합쳐진 최종 결과 전체에 대한 순서를 결정해야 하기 때문이다. UNION 결과를 order by"활동 고객과 탈퇴 고객의 명단을 합친 후, 이름(name)을 기준으로 오름차순 정렬하고 싶다"select name..

Ch04. UNION - UNION ALL

"마케팅팀에서 두 종류의 고객에게 이벤트 안내 메일을 보내려고 한다. 첫 번째 그룹은 '전자기기' 카테고리의 상품을 구매한 이력이 있는 고객이고, 두 번째 그룹은 '서울'에 거주하는 고객이다. 두 그룹의 명단을 합쳐서 전체 발송 목록을 만들고 싶다." '서울'에 살면서 '전자기기'를 구매한 고객은 두 그룹에 모두 속하게 되는데, 이 고객을 최종 목록에 한 번만 포함해야 할까? 아니면 중복을 허용해도 될까?? -> 정답은 "비즈니스 요구사항에 따라 다르다" 이다. 하지만 이 선택에 따라 우리는 "UNION"과 "UNION ALL" 중 무엇을 쓸 지결정해야 한다. UNION과 UNION ALL의 차이"UNION"과 "UNION ALL"의 유일한 차이점은 "중복 처리" 여부다."UNION": 두 결과 집합을 ..

Ch04. UNION - UNION

"UNION"은 여러 개의 결과 집합을 아래로(수직으로) 이어 붙여서 더 많은 행을 가진 하나의 집합으로 만드는 기술이다. "우리 쇼핑몰은 현재 활동 중인 고객을 "users" 테이블에, 과거에 탈퇴한 고객을"retired_users"라는 별도의 테이블에 보관하고 있다. 연말을 맞아 모든 고객(활동+탈퇴)에게 감사 이메일을 보내기 위해, 두 테이블에 흩어져 있는 이름과 이메일을 합쳐서 하나의 전체 목록을 만들어야 한다." retired_users 생성-- 본 실습을 위한 탈퇴 고객 테이블 생성DROP TABLE IF EXISTS retired_users;CREATE TABLE retired_users (id BIGINT PRIMARY KEY,name VARCHAR(255) NOT NULL,email V..

Ch03. 서브쿼리 - 서브쿼리 VS Join

지금까지 "JOIN"과 서브 쿼리라는두 가지 강력한 기술을 배웠다. 그러면서 아마도 이런 의문이 들었을 것이다. "어? 어떤 문제는 두 가지 방법으로 모두 풀 수 있네?" 맞다. 실제로 많은 문제는 "JOIN"으로도, 서브쿼리로도 해결할 수 있다. 그렇다면 우리는 무엇을 선택해야 할까? 성능과 가독성 측면에서 둘은 어떤 차이가 있을까? 문제 상황: "서울에 거주하는 모든 고객들의 주문 목록을 조회해라." 해결 방법 1. 서브 쿼리 사용서브쿼리를 이용한 접근법은 우리의 사고 흐름과 매우 유사하다.먼저, 서울에 사는 고객들의 "user_id" 목록을 찾는다 (users 테이블).그다음, 이 "user_id" 목록에 포함된 "order_id"를 가진 주문들을 찾는다 (orders 테이블).select *fr..