Database #key #join #table

곽서현·2022년 11월 1일
0

Key의 개념 및 종류

Key란, 검색 및 정렬 시 튜플(행)을 구분할 수 있는 기준이 되는 Attribute이다.

1. Candidate Key(후보키)

튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합으로, 기본키로 사용할 수 있는 속성들을 말한다.

💡 유일성최소성의 2가지 조건을 만족해야 한다.

  • 유일성: 키로 하나의 튜플을 유일하게 식별할 수 있어야 한다.
  • 최소성: 꼭 필요한 속성으로만 구성해야 한다.

2. Primary Key(기본키)

후보키 중 선택한 키를 의미한다.

💡 Not Null & No Duplicate _ 개체 무결성의 조건이기도 함

3. Alternate Key(대체키)

후보키 중 기본키를 제외한 나머지 키를 의미하며 보조키 라고도 한다.

4. Super Key(슈퍼키)

유일성은 만족하지만, 최소성은 만족하지 못하는 키

5. Foreign Key(외래키)

다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합

💡 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없음. (참조 무결성 조건)


Join

조인이란, 두 개 이상의 테이블이나 DB를 연결하여 데이터를 검색하는 방법으로
테이블을 연결하려면 적어도 하나의 컬럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다.

Join 종류

1. Inner Join

< 암시적 조인 == Equi Join >
SELECT *

FROM EMPLOYEE, DEPARTMENT

WHERE EMPLOYEE.DepartmentID = DEPARTMENT.DepartmentID;
---
< 명시적 조인 >
SELECT *

FROM EMPLOYEE INNER JOIN DEPARTMENT

ON EMPLOYEE.DepartmentID = DEPARTMENT.DepartmentID;

💡 Inner join 시, 비교 컬럼을 하나만 출력하고 싶다면 select절에서 테이블명.컬럼명 으로 출력하고자 하는 컬럼명 지정해주면 된다.

2. Left Outer Join

3. Right Outer Join


💡 Outer Join 시, 조인 테이블(dept)에 데이터가 없어도 기준 테이블(emp)의 모든 데이터가 조회되고 조인 테이블(dept)에 데이터가 존재할 경우 해당 데이터를 참조할 수 있다.

4. Full Outer Join

LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합친 것이다.
양쪽 모두 조건이 일치하지 않는 것들까지 모두 결합하여 출력한다.

💡Mysql에서는 Full Outer Join 키워드가 안되므로 Left Outer Join Union Right Outer Join을 통해 구현할 수 있다.

🙄: INNER JOIN OUTER JOIN의 차이가 무엇인가요? 그리고 LEFT JOIN, RIGHT JOIN, FULL JOIN은 또 무엇인가요?

A: 중복이 없는 서로 다른 두 컬럼을 JOIN한다고 가정했을 때,
inner join을 A와 B에 대해 수행하는 것은, A와 B의 교집합을 구하는 것을 의미하며
outer join은 A와 B의 합집합을 의미합니다.

5. Cross Join

SELECT *

FROM EMPLOYEE CROSS JOIN DEPARTMENT;

카티션 곱이라고도 하며 조인되는 두 테이블에서 곱집합을 반환함
-> A 테이블의 row: N개, B 테이블의 row: M개일때 총 N*M개의 row가 생성된다.

6. Self Join

동일한 테이블을 조인하는 것으로, 자신이 갖고 있는 컬럼을 다양하게 변형시켜 활용할 때 주로 사용한다.

select F.empno, F.ename, S.empno, S.ename, S.job

from emp F inner join Emp S

on F.job = S.job

where F.empno < S.empno

order by F.empno, S.empno;

0개의 댓글