관계형 데이터베이스는 테이블끼리 관계가 있어서 관계형DB라는 이름이 붙었다.
관계는 논리적으로 연관이 있는 두 테이블 사이의 연결을 설정.
데이터 중복을 최소화하고 관계 자체의 신뢰성과 적합성을 보장하게 된다.
두 테이블 사이에 존재할 수 있는 3가지 관계 유형
- 1 : 1
- 1 : N
- N : N
하나의 테이블이 상대 테이블과 반드시 단 하나의 관계를 가지는 것
한 쪽 테이블의 레코드가 관계를 맺은 테이블의 여러 레코드와 연결된다는 것을 의미
실제 DB를 설계할 때 자주 쓰이는 방식으로
부모 테이블, 자식 테이블 이라고 표현이 가능하다.
관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것.
즉, 서로가 서로를 1:N관계로 보고 있는 것
on delete / on update 은 제약조건.
ON DELETE / CASCADE / NO ACTION / RESTRICT
제약조건을 걸지 않으면 기본으로 RESTRICT 이 걸리는데
클래스를 제거하려고할 때 (예시의)teacher가 제거되지 않을 수도 있다.
따라서 외래키가 걸려있는 레코드가 제거되지 않는다면
제약조건이 걸러져 있어서 안 지워지는구나 라고 유출가능.
JOIN은 두 개 이상의 테이블을 연결해서 데이터를 검색하는 방법이다.
자신이 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용.
여러개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법.
조인 종류
- INNER JOIN
LEFT TABLE과 RIGHT TABLE이 공통적으로 가지고 있는 녀석
교집합 / 즉, 왼쪽과 오른쪽 모두 데이터를 가지고 있어야 한다.- FULL JOIN
공통으로 가지는 걸 다 보여줌- LEFT JOIN
LEFT TABLE을 기준으로 자기만 생각해서 RIGHT가 없더라도
LEFT 위주로 다 가져온다.- RIGHT JOIN
RIGHT TABLE을 기준으로 자기만 생각해서 RIGHT 위주로 다 가져온다.
LEFT와 반대로 두 번째 테이블을 기준으로 다 가져온다.
사용 방법으로는
LEFT JOIN 첫 번째 테이블, 두 번째 테이블을 JOIN ON 이라는 조건을 이용해
합치는 조건을 설정한다.
SELECT 첫 번째 테이블 LEFT JOIN 두 번째 테이블 ON 조건
INNER JOIN
RIGHT JOIN
student_class 테이블을 만들고 데이터를 넣은 후
INNER JOIN 활용 실습