관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

집합 연산자과 계층형 질의 1 - STANDARD SQL 본문

알고리즘 및 자료 관리/SQL

집합 연산자과 계층형 질의 1 - STANDARD SQL

huenuri 2024. 10. 22. 13:36

드디어 SQL 심화 학습을 공부할 때가 되었다. 이제 난 SQL 기초 단계는 뛰어넘은 것 같다.


 

 

 

이론 1 - STANDARD SQL

 

 

 

 

두 개의 테이블에서 살펴볼 때 어떤 경우에 해당되는지 파악해 본다. 카디션 프로덕트는 두 개의 테이블에서 가능한 모든 경우 수를 추출하는 것을 말한다.

 

 

 

 

 

차집합은 A와 B 중에서 공통된 데이터만을 제거하는 것이다.

 

 

 

 

 

 

 

 

 

 

 

셀렉션은 특정 행을, 프로덕션은 특정 열을, 조인은 두 테이블의 공통된 부분을 합해서 출력하는 것이다. 디비전은 연관된 데이터만 출력하는 것이다. 여기서 A에만 연관되어 있으므로 A만 출력되는 것이다. 

 

 

 

 

 

셀렉션은 시그마 기호를 사용한다. A라는 릴레이션에 대하여 C가 3보다 작은 조건을 걸었다. 프로젝션은 파이 기호를 사용한다. A 컬럼과 B 컬럼에 대해서 조회하겠다는 의미이다. 조인은 종류마다 사용하는 기호가 조금씩 다르다. 리본 모양 뒤에 N을 붙이면 자연조인을 하겠다는 의미이다. 여기서는 A와 B에 대해 자연조인을 하니 3이 출력되었다.

디비전은 나눗셈 기호를 사용한다.


 

 

 

 

 

실습 1 - STANDARD SQL : 순수 관계 연산

 

 

 


 

 

 

 

 

 

모든 학생의 정보가 출력되었다. 두번째 지시사항은 이 중에서 3학년 학생만 조회하는 것이니 코드를 하나 더 작성해 보겠다.

 

 

 

 

 

문제를 잘 풀었다.


 

 

 

 

 

퀴즈 1 - STANDARD SQL

 

 

 

답을 틀리고 말았다. 일반 집합 연산과 순수 집합 연산을 구분할 수 있어야 한다. 일반 집합 연산에는 합집합, 교집합, 차집합, 카디션 프로덕션이 있는데 각각의 영어 이름은 다음과 같다. UNION, INTERSECT, EXCEPT, CROSS JOIN. 그리고 순수 집합 연산은 셀렉션, 프로덕션, 조인, 디비전이 있다.

 

 

 

이 문제는 두 가지 개념을 잘 알고 있어야 풀 수 있는 문제였다. 영어 이름까지 암기해 보자.

 


 

 

 

학습을 마치고

점심시간에 기다리는 동안 30분 동안 이 학습을 진행했다. 미리 공부를 해놓아야 오후에 이 수업에 대한 흥미를 느낄 수 있을 것 같았다. 심화 과정이라고 무척 어렵게 생각했는데 별로 그렇지 않았다.

기본이 잘 되어 있다면 충분히 이해할 수 있고 문제도 풀 수 있다는 걸 알게 되었다. 아무튼 3일 동안의 공부가 헛되지 않음을 느꼈다.