결합 : 조인, 집합연산
1.결합
결합 방법은 JOIN, 집합연산을 통해 가능하다.
결합하는것이 공통점이지만 데이터 결합 방식이 상이하다. 좌측은 JOIN을 통해 테이블 간 수평 결합을 하고 우측은 집합 연산을 통해 쿼리 간 수직 결합을 한다.
1.1 조인(JOIN)
- 결합을 의미하며, 관계형 데이터베이스에서의 조인은 교집합 결과를 가지는 결합 방법을 의미
- 두 릴레이션으로부터 연관된 튜플들을 결합해, 하나의 새로운 릴레이션을 반환
1.1) 논리적 조인
(1 )Inner Join
- EQUI JOIN(동등 조인 ) =으로 공통 존재 컬럼의 값이 같은 경우를 추출
- NON-EQUI JOIN(비동등 조인 ) 비교 연산자로 컬럼의 값이 해당하는 경우를 추출(<,<=,>,>=,BETWEEN AND)
- NATURAL JOIN(자연 조인) 두 테이블의 모든 컬럼을 비교해 같은 컬럼 명을 가진 값이 같은 경우 추출
- CROSS JOIN(교차 조인) 조인 조건이 없는 모든 데이터 조합을 추출
JOIN <Table2> ON <Table1>. <속성명> = <Table2> . <속성명> 21년 2회 실기
--SELECT 절 생략
FROM <table1>
JOIN <Table2> USING <속성명>
--SELECT 절 생략
FROM <table1>
JOIN <Table2> ON <Table1>. <속성명> = <Table2> . <속성명>
--SELECT 절 생략
FROM <table1> ,<Table2>
WHERE <table1>. <속성명> = <Table2> . <속성명>
USING은 정확히 동일한 속성명을 갖는 속성 하나만을 갖고 결합한다.
ON은 1개이상의 컬럼과 조건을 주어 결합 가능하다.
(2) Outer Join
- LEFT OUTER JOIN(왼쪽 외부 조인) 왼쪽 테이블의 모든 데이터, 오른쪽 테이블에서는 동일 데이터만 추출
- RIGHT OUTER JOIN(오른쪽 외부 조인) 오른쪽 테이블의 모든 데이터, 왼쪽 테이블에서는 동일 데이터만 추출
- FULL OUTER JOIN(완전 외부 조인) 양쪽의 모든 데이터를 추출
--SELECT 절 생략
FROM <Table1>
LEFT OUTER JOIN <Table2> ON <Table1>. <속성명> = <Table2> . <속성명>
--SELECT 절 생략
FROM <Table1> ,<Table2>
WHERE <Table1>. <속성명>(+) = <Table2> . <속성명>
1.2) 물리적 조인
- NESTED-LOOP JOIN (중첩 반복 조인) 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합해 원하는 결과를 조합하는 방식
- SORT-MERGE JOIN(정렬 합병 조인) 양쪽 테이블의 정렬한 결과를 차례로 검색하면서 연결고리 형태로 합병하는 방식
- HASH JOIN(해시 조인) 해싱 함수 기법을 활용하여 조인을 수행하는 방법
2. 집합 연산자
- 테이블을 집합 개념으로 보고, 두 쿼리 연산에 집합 연산자를 사용하는 방식
- 여러 질의 결과를 연결해 하나로 결합하는 방식을 사용
- UNION 중복 행이 제거된 쿼리 결과 집합(합집합)
- UNION ALL 중복 행이 제거되지 않은 쿼리 결과 집합
- INTERSECTION 두 쿼리 결과에 공통적으로 존재하는 집합(교집합)
- EXCEPT/MINUS 첫 쿼리에 있고 두 번째 쿼리에는 없는 집합(차집합)
SELECT <속성1>,<속성2> FROM <Table1>
UNION
SELECT <속성1>,<속성2> FROM <Table2>
3. 서브쿼리(Sub-Query)
SQL문(Main 쿼리) 안에 포함된 또 다른 SQL문(하위 /중첩된 쿼리)
메인 쿼리 실행 전 서브쿼리가 먼저 실행되어 결과를 메인쿼리에 보냄
3.1 반황 행 수
- 단일 행(Single Row) 서브쿼리 결과가 항상 1건 이하인 서브쿼리
비교연산자 - 다중 행(Multiple Row) 서브쿼리 실행 결과가 여러 건인 서브쿼리
다중행 비교 연산자 IN, ANY, ALL, EXISTS 사용
3.2 종류
- 스칼라 서브쿼리 SELECT문에 서브쿼리를 사용
- 인라인뷰 FROM구에 SELECT문을 사용
- 서브쿼리 WHERE구에 SELECT문을 사용
(1) 서브쿼리
- WHERE구에 SELECT문을 사용
-- 서브쿼리
SELECT * FROM 테이블 WHERE 칼럼 =
(SELECT 칼럼명 FROM 테이블명 WHERE 조건);
(2) 인라인 뷰
- FROM 구에 사용
- 가상의 테이블을 만들어 거기서 데이터를 조회하는 방식
-- 인라인 뷰
SELECT * FROM (SELECT 칼럼명 FROM 테이블명 WHERE 조건) WHERE 조건;
(3) 스칼라 서브쿼리
- SELECT문에 사용
- 반드시 한 행과 한 칼럼만 반환하며, 여러 행이 반환되면 오류가 발생
-- 스칼라 서브쿼리
SELECT *,(SELECT 칼럼명 FROM 테이블명) FROM 테이블 WHERE 조건;
4.기타
4.1 주석 처리
-- ‘--‘이 시작하는 위치부터 해당 라인 끝까지 실행이 되지 않도록 함
/* */ ‘/*’이 시작되는 부분부터 ‘*/’이 나타날 때까지의 여러 라인을 실행 되지 않도록 함
-- 한줄 주석
/* 여러
줄
주석
*/
4.2 힌트의 사용 :- SQL 문에 사전 정보를 줘서, SQL문 실행에 빠른 결과를 가져오는 효과를 만드는 문법
- --+ 힌트명(파라미터) ‘--+’이 시작되는 위치부터 힌트로 인식
/*+ 힌트명(파라미터) */ ‘/*+’이 시작되는 부분부터 ‘*/’ 사이를 힌트로 인식
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]3.데이터베이스 구축/SQL 활용/DMBS 접속 기술 (0) | 2022.06.16 |
---|---|
[정보처리기사]3.데이터베이스 구축/SQL 활용/절차형 SQL (0) | 2022.06.15 |
[정보처리기사]3.데이터베이스 구축/SQL응용/DML:SELECT , WHERE (0) | 2022.06.13 |
[정보처리기사]3.데이터베이스 구축/SQL응용/SQL :DDL, DCL, DML (0) | 2022.06.12 |
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/스토리지,논리 데이터 모델의 물리 데이터 모델 변환 및 품질 검토 (0) | 2022.06.11 |