수업기록 5차.
(강사님이 바뀌었다!)
1. 관계형 대수 : 관계형DB에서 원하는 정보를 유도하기 위한 기본 연산 집합
-> 일반 집합 연산과 순수 관계 연산으로 이루어져있음
1) 일반 집합 연산
- 합집합 : 두 개 테이블의 모든 데이터를 추출 ⭐ 명령어 : UNION
- 교집합 : 두 개 테이블에서 공통되는 데이터만 추출 ⭐ 명령어 : INTERSECT
- 차집합 : 두 개 테이블에서 특정 테이블에만 존재하는 데이터를 추출 ⭐ 명령어 : EXCEPT
- 카디션 프로덕트 : 두 개 테이블에서 가능한 경우의 수를 추출 ⭐ 명령어 : CROSS JOIN
2) 순수 관계 연산
- 셀렉션 : 테이블에서 특정 행만 조회 ⭐ 명령어 : WHERE절
- 프로젝션 : 테이블에서 특정 컬럼만 조회 ⭐ 명령어 : SELECT절
- 조인 : 두 개의 테이블에서 새로운 테이블을 만드는 것⭐ 명령어 : 다양한 JOIN
- 디비젼 : 두 개의 테이블에서 서로 연관된 부분만 조회 ⭐ 명령어 : 사용x
3) 집합 연산자 : 두 개 이상의 테이블에서 JOIN을 사용하지 않고 연관된 데이터를 조회하는 방법.
⭐ UNION 두 개의 테이블을 하나로 만드는 연산. 합친 후에 중복된 데이터는 제거한다. 즉 테이블1에는 있는 데이터와 테이블2에 있는 데이터 cf. UNION ALL은 중복제거X
-> SELECT * / FROM 테이블 / UNION / SELECT * / FROM 테이블2;
⭐ INTERSECT 두 개의 테이블에서 공통되는 부분만 추출(중복된 결과는 제거). 즉 테이블1과 테이블2에 모두 있는 데이터 = 교집합
-> SELECT 컬럼1,컬럼2 / FROM 테이블1 / INTERSECT / SELECT 컬럼1,컬럼2 / FROM 테이블2;
주의 : MYSQL에서는 INTERSECT가 지원되지 않음 -> Oracle, Maria에서는 사용 가능.
⭐ EXCEPT 두 개의 테이블에서 겹치지 않는 부분만 추출하는 연산(중복된 결과는 제거). 즉 테이블1에는 있지만 테이블2에는 없는 데이터 = 차집합
-> SELECT 컬럼1,컬럼2 / FROM 테이블1 / EXCEPT / SELECT 컬럼1,컬럼2 / FROM 테이블2;
주의 : MYSQL에서는 EXCEPT가 지원되지 않음 -> Oracle(단, MINUS라는 명령어), Maria에서는 사용 가능.
2. 계층형 질의 : 계층형 데이터(상위-하위)가 존재하는 테이블에서 데이터를 조회하기 위해 사용하는 것
-> 대표적인 DB로는 오라클, SQL Server가 있다.
ORACLE
⭐ SELECT level, 자식 컬럼, 부모 컬럼, 원하는 컬럼 / FROM 테이블 / START WITH or CONNECT BY
⭐ START WITH -> 부모 컬럼에서 최상위 데이터를 지정해줌.
⭐ CONNECT BY PRIOR -> 부모 컬럼과 자식 컬럼을 연결하는 방식을 지정해 줌. => 자식 컬럼의 A 부분 = 부모 컬럼의 B부분 (상하위가 없음)
⭐ CONNECT BY ROOT -> 현재 전개할 데이터의 최상위(=Root)값 표시
⭐ CONNECT BY ISLEAF -> 현재 전개할 데이터의 최하위(=Reaf)인지 아닌지 표시 -> 최하위이면 1 아니면 0
⭐ SYS CONNECT BY PATH(컬럼, 구분자) -> 루트 데이터에서 현재까지 전개한 경로 표시
SQL SERVER
계층형 질의 : 계층형으로 테이블이 지속적으로 도출되는 형태. 재귀호출(1번째 순환 ~ N번째 순환)을 통해 도출됨.
1강과 2강의 차이인가... 계층형 질의는 이제껏 한 것 중에 제일 어렵고 복잡했다. @.@ 실무에서도 써먹어봐야 좀 더 익을 것 같은데 기회가 있을까 모르겠다. 재택근무가 끝나면 데이터팀의 직원이랑 얘기 좀 해봐야겠다고 생각!! 좀 어지럽지만 씩씩하게(?) 2강 2장으로 넘어가보자.
'[커리어] 에디터의 자기계발 > [도전] 비전공자 코딩 학습기록' 카테고리의 다른 글
[코딩 공부] 엘리스 SQL강의 수강일지 2강 3장 - 서브쿼리 심화 (0) | 2022.03.09 |
---|---|
[코딩 공부] 엘리스 SQL강의 수강일지 2강 2장 - JOIN 심화 (0) | 2022.03.06 |
[코딩 공부] 엘리스 SQL강의 수강일지 1강 5장 - 서브쿼리 (0) | 2022.03.01 |
[코딩 공부] 엘리스 SQL강의 수강일지 1강 4장 - 데이터의 그룹화 (0) | 2022.02.27 |
[코딩 공부] 엘리스 SQL 강의 수강일지 1강 3장 - 함수 (0) | 2022.02.24 |
댓글