728x90
순수 관계 연산자
순수 관계 연산자에는 SELECT
PROJECT
JOIN
DIVISION
이 있다.
연산자 | 기호 | 표현 | 의미 |
---|---|---|---|
SELECT | σ | σ조건(R) | 릴레이션 R에서 조건을 만족하는 투플 반환 ➜ 수평연산 |
PROJECT | π | π속성리스트(R) | 릴레이션 R에서 주어진 속성들의 값만으로만 구성된 투플들 반환 ➜ 수직연산 |
JOIN | ⋈ | R⋈S | 공통 속성을 이용해 릴레이션 R과 S의 튜플들을 연결하여 만들어진 새로운 튜플 반환 |
DIVISION | ÷ | R÷S | 릴레이션 S의 모든 튜플과 관련이 있는 릴레이션 R의 튜플들을 반환 |
조인(JOIN)
[SQL] ANSI 조인
ANSI조인은 모든 DBMS에서 사용 가능한 조인을 의미한다. 여러 테이블을 연결하는 조인 조건을 WHERE 절에 명시하지 않고 다른 방법을 통하여 기술한다. 따라서 조인 조건과 검색 조건을 분리하여
gangintheremark.tistory.com
CROSS JOIN
- 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합.
- 결과는 양쪽 집합의 M*N 건의 데이터 조합 발생
- Cartesian Product
FULL OUTER JOIN
FULL OUTER JOIN
수행 시 RIGHT OUTER JOIN
과LEFT OUTER JOIN
의 결과를 합집합으로 처리한 결과와 동일
집합 연산자
합집한은UNION
, 교집합은INTERSECT
, 차집합은EXCEPT/MINUS
이다.
집합 연산자 | 연산자의 의미 |
---|---|
UNION | 여러 개의 SQL문 결과에 대한 합집합으로 중복된 행은 하나의 행으로 |
UNION ALL |
|
INTERSECT | 여러 개의 SQL문 결과에 대한 교집합으로 중복된 행은 하나의 행으로 |
EXCEPT |
|
💡 UNION 이나 UNION ALL 를 사용할 때 나오는 SQL문은 칼럼 수와 데이터 타입이 완전 일치해야함
계층형 쿼리
부모-자식 간의 수직관계를 트리 구조형태를 보여주는 쿼리
START WITH
: 트리 구조의 최상위 행 지정, 계층 구조의 시작점CONNECT BY
: 부모-자식의 관계 지정PRIOR 자식컬럼=부모컬럼
: 부모 ➜ 자식 순방향 전개PRIOR 부모컬럼=자식컬럼
: 자식 ➜ 부모 역방향 전개ORDER SIBLINGS
: 형제 노드(동일 LEVEL) 사이에서 정렬 수행
계층형 쿼리의 특징
- Oracle에서 루트 노드의 LEVEL값은 1이다
CONNECT BY
절에서 작성된 조건절은START WITH
절에 의해 필터링된 데이터에는 적용되지 않는다.- SQL Server에서는 계층형 질의문은
CTE
(Common Table Expression)를 재귀 호출함으로써 계층 구조 전개 - SQL Server에서는 앵커 멤버를 실행하여 기본 결과집합을 만들고 이후 재귀 멤버를 지속적으로 실행
- Oracle에서
WHERE
절은 모든 전개를 진행 후 필터 조건으로서 조건을 만족하는 데이터만 추출하는데 활용 - Oracle에서
PRIOR
키워드는CONNECT BY
절 뿐만 아니라SELECT
WHERE
절에서도 사용 가능
서브쿼리
[SQL] 서브쿼리 (Sub Query)
서브쿼리 서브쿼리는 SQL문을 실행하는데 필요한 데이터를 추가로 조회하기 위해 SQL문 내부에서 사용하는 SELECT문을 의미한다. 서브쿼리의 결과 값을 사용하여 기능을 수행하는 영역은 메인쿼리
gangintheremark.tistory.com
종류 | 설명 |
---|---|
단일행 서브쿼리 (Single Row) |
|
다중행 서브쿼리 (Multi Row) |
|
다중 칼럼 서브쿼리 (Multi Column) |
|
- 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용
- 서브쿼리는
SELECT절
,FROM절
,HAVING절
,ORDER BY절
등에서 사용 가능 - 단일행 서브쿼리의 비교연산자는 다중행 서브쿼리의 비교연산자로 사용할 수 없지만, 다중행 서브쿼리의 비교 연산자는 단일행 서브쿼리의 비교 연산자로도 사용 가능
- 연관(Correlated) 서브쿼리는 서브쿼리가 메인쿼리 컬럼을 포함하고 있는 형태의 서브쿼리
- 비연관 서브쿼리는 주로 메인쿼리에 값을 제공하기 위한 목적으로 사용
- 다중 컬럼 서브쿼리는 SQL Server에서는 현재 지원하지 않는 기능이다
💡
SELECT 1 FROM 테이블명
WHERE 조건;
- 해당 조건을 만족하는 갯수만큼 1로된 행을 출력 (문자는 'X')
- 다중행 서브 쿼리문에서 WHERE조건절에
EXISTS
안의 서브쿼리문으로 사용 - 실제값이 아닌 존재 유무가 더 중요한 경우 사용
뷰(VIEW)
[SQL] 뷰 (VIEW)
뷰(VIEW)는 다른 테이블에서 유도된 가상의 테이블이다. 실제 데이터를 저장하고 있지 않으며 기반이 되는 물리적인 테이블을 기본 테이블(base table)이라 한다. 뷰를 기반으로 새로운 뷰를 정의할
gangintheremark.tistory.com
뷰의 특징
- 독립성 : 테이블의 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 됨
- 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성
- 보안성 : 숨기고 싶은 정보가 존재하면, 뷰를 생성할 때 해당 칼럼을 빼고 생성
- 뷰는 단지 정의만을 가지고 있으며, 실행 시점에 질의를 재작성하여 수행
- 실제 데이터를 저장하고 있는 뷰를 생성하는 기능을 지원하는 DBMS도 존재
728x90
'Database > SQL' 카테고리의 다른 글
[SQL] SQL 최적화의 원리 (0) | 2023.09.06 |
---|---|
[SQLD] SQL 활용 II (0) | 2023.09.06 |
[SQLD] SQL 기본 II (0) | 2023.09.03 |
[SQLD] SQL 기본 I (0) | 2023.09.03 |
[SQLD] 데이터 모델과 성능 (1) | 2023.09.01 |