반응형
2과목. 데이터베이스 구축
📒 11. SQL 문법 - SELECT 활용
1. 집합 연산자
(1) 집합 연산자의 개념
- 여러 개의 SQL 쿼리 결과를 결합하는 데 사용
- 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 수 있음
- 집합 연산자를 사용하려면, SELECT 절의 컬럼 수가 동일해야 하며, 같은 위치에 있는 컬럼들은 데이터 타입이 동일해야 함
(2) 집합 연산자 종류
- a) UNION
- 중복된 행은 제거하여 합집합 - b) UNION ALL
- 중복된 행도 포함하여 합집합 - c) INTERSECT
- 중복된 행은 제거하여 교집합 - d) EXCEPT(MINUS)
- 중복된 행은 제거하여 차집합
2. JOIN
(1) JOIN의 개념
- 두 개 이상의 테이블을 결합하여 테이터를 검색하는 방법
- 관련 있는 컬럼 기준으로 행을 합쳐주는 연산
(2) JOIN의 종류
- a) 내부 조인(Inner Join)
- 두 테이블에 공통으로 존재하는 데이터만 추출
SELECT * FROM 회원정보 INNER JOIN 주문 ON 회원정보.회원번호 = 주문.회원번호
- b) 자연 조인(Natural Join)
- 동일한 이름과 타입을 가진 컬럼을 기준으로 자동으로 조인
- 반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼 필요
- 두 테이블이 갖는 공통 컬럼에 대해서 Inner Join은 별개의 컬럼으로 나타내지만,
Natural Join은 하나의 컬럼으로 나타냄
SELECT * FROM R1 NATURAL JOIN R2;
- c) 전체 외부 조인(Full Outer Join)
- 좌측 및 우측 테이블의 데이터를 모두 포함하고, 중복된 데이터는 하나로 표시
SELECT * FROM R1 Full Outer Join R2 ON R1.COL2 = R2.COL2;
- d) 왼쪽 외부 조인(Left Outer Join)
- 좌측 테이블을 기준으로 조인, 우측 테이블에 일치하는 데이터가 없으면 NULL로 표시
SELECT * FROM R1 Left Outer Join R2 ON R1.COL2 = R2.COL2;
- e) 오른쪽 외부 조인(Right Outer Join)
- 우측 테이블 기준으로 일치하는 행만 결합하고, 일치하지 않는 부분은 NULL로 표시
SELECT * FROM R1 Right Outer Join R2 ON R1.COL2 = R2.COL2;
- f) 곱집합(Cross Join)
- 두 테이블 데이터의 모든 조합을 반환
- 조인 조건이 없음
SELECT * FROM R1 Cross Join R2;
3. 서브쿼리
(1) 서브쿼리의 개념
- SELECT문 안에 또 다른 SELECT문이 포함된 형태의 쿼리
(2) 서브쿼리의 종류
- a) 스칼라 서브쿼리(Scalar SubQuery)
- SELECT절에 위치하며, 단일 행 또는 단일 값 반환
- 밖에 있는 조건부터 읽기
SELECT 이름, (SELECT 주문번호 FROM 주문 WHERE 주문.회원번호 = 회원정보.회원번호) as 주문번호 FROM 회원정보 WHERE 회원번호 = '0003';
- b) 인라인뷰 서브쿼리(Inline View SubQuery)
- FROM 절에 위치하며, 서브쿼리 결과는 하나의 테이블로 반환
- FROM 절부터 읽기
SELECT 회원번호, 이름 FROM ( SELECT * FROM 회원정보 WHRER 이름 like '이%' ) TB_TEMP;
- c) 중첩 서브쿼리(Nested SubQuery)
- WHERE 절에 위치하며, 단일행 또는 다중행 서브쿼리 연산자를 사용할 수 있음
- 괄호 안에 있는 속성부터 읽기
- 단일행 서브쿼리 연산자 : >, >=, <, <=, = 등
- 다중행 서브쿼리 연산자 :
① IN : 결괏값을 포함하면 출력 (값이 있는지 확인)
② EXISTS : 행이 존재하면 출력 (여러 개일 경우 모두 출력)SELECT 회원번호, 이름 FROM 회원정보 WHERE 회원번호 IN ( SELECT 회원번호 FROM 주문 );
③ ANY(SOME) : 결괏값이 여러 개 나온 경우, 결괏값이 하나라도 만족하면 출력SELECT 과목이름 FROM 성정 WHERE EXISTS ( SELECT 학번 FROM 학생 WHERE 학생.학번 = 성적.학번 AND 학생.학과 IN ('전산','전기') AND 학생.주소 = '경기' );
④ ALL : 결과값이 여러 개 나온 경우, 결괏값을 모두 만족하는 값 출력SELECT * FROM 상품 WHERE 단가 > ANY ( SELECT 단가 FROM 상품 WHERE 제조사 = 'B' );
SELECT * FROM 상품 WHERE 단가 > ALL ( SELECT 단가 FROM 상품 WHERE 제조사 = 'B' );
참고자료
흥달쌤, '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
1억뷰 N잡
[1회 연장 포함] 흥!나게 합격 달성! 2024 정보처리기사 실기 클래스
www.njobler.net
반응형
댓글