1. 참조제약조건(FOREIGN KEY, 외래키): 다른 테이블의 기본키를 가져와 사용하는것을 의미한다.
2. 제약조건 검색: SELECT*FROM informaition_schema.TABLE_CONSTRAINT
WHERE TABLE_NAME='CHILD_TABLE';
3. 테이블이 만들어진 다음 키 설정
alter TABLE[테이블명] ADD CONSTRAINT [제약조건타입]([적용컬럼])REFERENCES PARENT_TABLE[부모테이블명]([참조컬럼])
4.연계 참조 무결성 제약조건(부모자식간에 연결된 관계)
무결성이란? -> 앞 뒤말이 논리적으로 맞아야 한다.
부모-자식 관계간에 논리적으로 맞는지?
부모 내용을 삭제할때 자식내용은 어떻게 하나?
부모가 지워지기 전 자식이 먼저 지워져야 한다.
ON delete CASCADE: 부모를 지우면 자식을 자동으로 지워준다.
5. JOIN?
- 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법이다.
- 조인을 활용하기 위해서는 두 테이블 사이에 하나의 공통된 칼럼이 있어야 한다.
- 부모-자식 관계에서 PK와 FK를 활용하여 조인한다. 그러나 부모-자식 관계가 아니어도 JOIN을
할수 있다.
5-1. 종류
* CROSS JOIN: 두테이블 사이 카다시안 곱을 수행한다.
여기서 카다시안 곱이란, 두 테이블을 곱한 행을 반환하는것=> 데이터를 늘리거나, 별로
쓸일이 없고, 조합에 따른 경우의 수를 따질때 사용한다.
* EQUI JOIN: 가장 많이 사용하는 JOIN으로 '=' (등가)로 조건을 구성한다.
- 등가조인은 양쪽 테이블에 동등하게 값이 있어야 한다.
* EQUI JOIN(INNER JOIN): JOIN의 조건을 ON으로 줄 수 있어 조인 조건과 검색 조건이
혼돈되지 않는다.
select E.deptno,E.ENAME,D.DEPTNAME from EMP E inner join DEPT D ON E.deptno=D.deptno;
ON 대신 using을 사용할 수 있고 이때()에는 공통되는 컬럼이나 서브쿼리를 넣을 수 있다.
select E.deptno,E.ENAME,D.DEPTNAME from EMP E joinDEPT D USING (deptno);
* EQUI JOIN-NATHURAL JOIN: 생각보다 간단한 조인을 쓸때 사용
두 테이블 사이에 공통되는 컬럼이 있으면 자연스럽게 조인을 한다(조건문이 필요 없다)
select deptno,E.ENAME,D.DEPTNAME from EMP E natural join DEPT D;
* 외부조인(OUTER JOIN): OUTER JOIN은 양쪽 테이블에 어느 한쪽에만 데이터가 있어도 보여 줄 수 있다.
1) RIGHT OUTER JOIN: 오른쪽에 데이터가 더 많다(매칭되지 않는 데이터는 NULL로 표시한다.)
2) LEFT OUTER JOIN
3) FULL OUTER JOIN(maria db에서는 지원하지 않는다)
left+right 개념으로 양쪽에 서로 더 있는 값들을 보여 준다
UNION을 사용해서 구현할 수 있다
'Backend > DB' 카테고리의 다른 글
DB(2)- Transaction/Constraint (0) | 2022.09.26 |
---|---|
DB(1)-DML/INSERT/UPDATE/DELETE/SELECT (0) | 2022.09.26 |