SQL - INTERSECT 연산자: 초보자를 위한 친절한 가이드
안녕하세요, 미래의 SQL 마법사 여러분! 오늘 우리는 SQL의 세계로 흥미로운 여정을 떠나게 될 것입니다. 특히, INTERSECT 연산자에 집중해보겠습니다. 프로그래밍에 새로운 분이라면 걱정하지 마세요 - 저는 여러분의 친절한 가이드가 되어 단계별로 설명해드릴게요. 좋아하는 음료를 한 잔 마시고, 이제 시작해봅시다!
SQL INTERSECT 연산자
INTERSECT는 무엇인가요?
두 개의 데이터 셋이 있다고 가정해봅시다. 이 두 개의 데이터 셋이 공통적으로 가지고 있는 것을 찾고 싶다면, SQL의 INTERSECT 연산자가 그 역할을 합니다! 이는 베른 다이어그램에서 두 개의 원이 교차하는 부분을 찾는 것과 같습니다.
간단한 예제로 시작해보겠습니다:
SELECT column1 FROM table1
INTERSECT
SELECT column1 FROM table2;
이 쿼리는 table1
과 table2
모두에 존재하는 고유한 값을 반환합니다. 멋지죠?
실제 예제
가정해봅시다. 두 개의 테이블 students_math
와 students_science
가 있다고 합시다. 두 과목 모두에 등록된 학생을 찾고 싶습니다.
SELECT student_id FROM students_math
INTERSECT
SELECT student_id FROM students_science;
이 쿼리는 두 테이블 모두에 나타나는 학생 ID를 반환하며, 이는 수학과 과학 두 과목을 동시에 듣는 학생을 보여줍니다.
중요한 포인트 기억하기
- INTERSECT는 고유한 값을 반환합니다.
- 두 SELECT 문에서의 열의 수와 순서는 동일해야 합니다.
- 상응하는 열의 데이터 유형은 호환되어야 합니다.
BETWEEN 연산자와 함께 사용하는 INTERSECT
이제 BETWEEN 연산자와 함께 INTERSECT를 조합해보겠습니다. BETWEEN 연산자는 주어진 범위 내의 값을 선택합니다.
예제: 공통 연령 찾기
employees_department_a
와 employees_department_b
라는 두 개의 테이블이 있다고 가정해봅시다. 두 부서 모두에서 25세에서 35세 사이의 직원의 연령을 찾고 싶습니다.
SELECT age FROM employees_department_a WHERE age BETWEEN 25 AND 35
INTERSECT
SELECT age FROM employees_department_b WHERE age BETWEEN 25 AND 35;
이 쿼리는 두 부서 모두에 존재하는 연령을 반환하지만, 주어진 범위 내에서만입니다. 두 셋의 교차를 찾는 것처럼 보이지만, 각 셋에 대해 먼저 필터링을 한 다음입니다!
IN 연산자와 함께 사용하는 INTERSECT
IN 연산자는 WHERE 절에서 여러 가지 값을 지정할 수 있게 합니다. IN 연산자를 INTERSECT와 함께 사용해보겠습니다.
예제: 공통 제품 찾기
online_store
와 physical_store
라는 두 개의 테이블이 있다고 가정해봅시다. 두 가게 모두에서 특정 카테고리의 제품이 어디에서 구매 가능한지 찾고 싶습니다.
SELECT product_id FROM online_store WHERE category IN ('Electronics', 'Books', 'Toys')
INTERSECT
SELECT product_id FROM physical_store WHERE category IN ('Electronics', 'Books', 'Toys');
이 쿼리는 온라인과 오프라인 가게 모두에서 구매 가능한 제품 ID를 반환하지만, 전자제품, 책, 장난감 카테고리에 한정됩니다. 각 가게의 짧은 목록을 만들고 그 공통점을 찾는 것과 같습니다!
LIKE 연산자와 함께 사용하는 INTERSECT
LIKE 연산자는 WHERE 절에서 지정된 패턴을 column에서 검색하는 데 사용됩니다. LIKE 연산자를 INTERSECT와 함께 사용해보겠습니다.
예제: 공통 사용자 이름 찾기
forum_users
와 blog_users
라는 두 개의 테이블이 있다고 가정해봅시다. 두 플랫폼 모두에서 'tech_'로 시작하는 사용자 이름을 찾고 싶습니다.
SELECT username FROM forum_users WHERE username LIKE 'tech_%'
INTERSECT
SELECT username FROM blog_users WHERE username LIKE 'tech_%';
이 쿼리는 포럼과 블로그 모두에 존재하는 사용자 이름을 반환하지만, 'tech_'로 시작하는 것들만입니다. 두 플랫폼에서 활동하는 기술 열정가를 찾는 것과 같습니다!
결론
이제 여러분이 INTERSECT 연산자와 다른 SQL 연산자를 조합하여 강력한 쿼리를 수행하는 방법을 탐구해보았습니다. 연습이 완벽을 만든다는 것을 기억하세요, 그러니 이 예제들을 시도하고 자신만의 쿼리를 만들어보세요.
이제 우리가 다루었던 방법들의 빠른 참조 표입니다:
방법 | 설명 |
---|---|
INTERSECT | 두 개의 SELECT 문이 출력한 고유한 행을 반환합니다 |
BETWEEN과 함께 사용하는 INTERSECT | 주어진 범위 내의 공통 값을 찾습니다 |
IN과 함께 사용하는 INTERSECT | 가능한 값의 목록에서 공통 값을 찾습니다 |
LIKE과 함께 사용하는 INTERSECT | 지정된 패턴을 일치시키는 공통 값을 찾습니다 |
SQL은 처음에는 어려워 보일 수 있지만, 쿼리를 작성할 때마다 데이터 조작의 마스터로 가까워집니다. 연습을 계속하고, 호기심을 유지하면 곧 복잡한 쿼리를 쉽게 작성할 수 있을 것입니다!
데이터베이스의 세계에서 여러분은 탐정이고, SQL은 여러분의 확대경입니다. 행복한 쿼리 작성을 기원하며, 여러분의 INTERSECT가 항상 찾고자 하는 것을 발견하길 바랍니다!
Credits: Image by storyset