SQL 이것저것

[SQL] Standard SQL

agingcurve 2022. 8. 30. 09:28
반응형

테이블 형태의 데이터를 관계형 데이터 베이스라고 한다.

이외에도 비관계형 데이터베이스(NOSQL)도 존재한다. (대표적으로 MongoDB)

알고자 하는 데이터를 조회하기 위해 이들을 사용하게 된다.

 

 

일반 집합 연산

두개의 테이블에서 특정 테이블을 본다고 하였을 때, 보는 관점에 따라 동일한 차집합 연산이 될 것이다,

카티션 곱은 가능한 모든 경우의 수를 나타내게 된다.

 

실제 데이터 베이스에서 어떤 키워드로 사용되는지 볼 수 있다.

 

주요로 볼건, 카티션 곱은

해당하는 데이터에서 모든 경우의 수를 보여주게 된다.

 

 

순수 관계 연산

 

순수 관계 연산 별 SQL

 

 

셀렉션

 - 시그마로 표시되며, 3보다 작은 값을 추출하라는 의미

프로젝션

 - 파이로 표시되며, 컬럼조건에 대한 어떤 관계정보인지 들어간다. 

조인(세타조인, 동등조인, 자연조인, 외부조인)

 - 조인은 세타조인, 동등조인, 자연조인 등 사용하는 기호는 다르지만 리본기호 다음에 자연조인이 되며,

앞뒤에 테이블들에 대해 자연조인을 한다고 보여지게 된다.

디비전

 - 데이터 값을 100% 연관이 있는 데이터만 추출되게 된다. 

 

 

집합 연산자

두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중 하나

테이블에서 SELECT한 컬럼의 수와 각 컬럼의 데이터타입이 테이블 간 상호 호환 가능해야 한다

종류

- UNION

- UNION ALL

- INTERSETCT

- EXCEPT

 

UNION

 - 두 개의 테이블을 하나로 만드는 연산 UNION에 사용할 컬럼의 수와 데이터 형식이 일치해야 하며 합친 후에 테이블에서 중복된 데이터는 제거 이를 위해 UNION은 테이블을 합칠 때 정렬 과정을 발생시킴 (하지만 최종 결과에 대해 올바른 정렬을 위해서는 ORDER BY 구문을 사용해야함) 관계형 대수의 일반 집합 연산에서 합집합의 역할

 

 - SELECT문 2개에 대해서 UNION 연산을 하게 된다면, UNION은 데이터를 정렬하게 되고, 중복을 제거하는 연산

 

 

 

 

UNION ALL

UNION과 거의 같은 기능을 수행 다만, UNION과 달리 중복 제거와 정렬을 하지 않음 중복 제거를 하지 않는다는 것이 차이점

 - 관계형 대수의 일반 집합 연산에서 합집합의 역할 +) 정렬X, 중복제거

 - 단순히 연결을 하는 결과이므로, 밑에 붙이는 결과로 나타나게 됨

 

 

INTERSECT

 - 두 개의 테이블에 대해 겹치는 부분을 추출하는 연산 추출 후에는 중복된 결과를 제거 관계형 대수의 일반 집합 연산에서 교집합의 역할

 - 두개의 테이블에 대해서 공통된 부분에 대해서 겹치는 부분을 추출하여 데이터들만 추출하게 되고, 중복을 제거하여 a1, b1만 추출되는 것을 확인할 수 있음

 - Oracle/Maria(실습환경) Database에서는 지원되지만, MySQL에서는 지원되지 않기 때문에 추후 학습하는 JOIN 등을 활용해야 함.

 

EXCEPT(MINUS)

 - 두 개의 테이블에서 겹치는 부분을 앞의 테이블에서 제외하여 추출하는 연산 추출 후에는 중복된 결과를 제거 관계형 대수의 일반 집합 연산에서 차집합의 역할

 - 겹치는 부분을 제거해서 하는 연산이라고 볼 수 있음

 - OracleDatabase에서는 지원되지만, 실습 환경인 Maria DataBase에서는 10.3 version부터 EXCEPT 키워드로 지원함. MySQL에서는 지원되지 않기 때문에 추후 학습하는 JOIN 등을 활용해야 함

 

 

 

'SQL 이것저것' 카테고리의 다른 글

[SQL] JOIN  (0) 2022.08.30
[SQL] 계층형 질의  (0) 2022.08.30
[SQL] 서브쿼리  (0) 2022.08.14
[SQL] SQL 함수  (0) 2022.08.12
[SQL] DML(데이터 조작어) 다루기  (0) 2022.08.11