- Referential actions
어떤 FK로 인해 reference 되는 두 테이블의 관계에서, parent relation의 어떤 tuple이 DELETE/UPDATE 되면, 해당 tuple을 referencing하는 child relation의 FK 값은 어떻게 되는지에 대한 규칙
- ON DELETE CASCADE : parent relation에서 tuple이 삭제되면, child relation에서 해당 tuple을 레퍼런스하는 turple도 삭제
- ON UPDATE CASCADE : parent relation에서 tuple이 수정되면, child relation에서 해당 tuple을 레퍼런스하는 turple도 수정
- ON DELETE SET NULL : parent relation에서 tuple이 삭제되면, child relation에서 해당 tuple을 레퍼런스하는 FK attibute의 value를 NULL로 세팅
- ON UPDATE SET NULL : ON DELETE SET NULL과 동일
- ON DELETE RESTRICT / ON DELETE NO ACTION : 둘은 동일. parent relation에서 tuple이 삭제되면, 에러를 발생
- ON UPDATE RESTRICT / ON UPDATE NO ACTION : 둘은 동일. parent relation에서 tuple이 수정되면, 에러를 발생
- SET DEFAULT : 현재 MYSQL에서 지원하지 않음
- Join queries
- Nested queries
여러개의 테이블을 관계 있는 attribute끼리 결합할 때 사용된다.
예시)
++ self join : 한 테이블 안에서 연관된 attribute를 결합한다. 꼭 테이블을 별칭을 붙여 구분지어야 한다./////////////////////////잘못된 예시///////////////////////// select * from employee where employee.manager = employee.empno;
예시)
++ 여러가지 join (inner / left / right / cross)
Subquery라고도 한다. where절에 있는 select문을 Nested Query라 한다. 컴파일 순서는 Nested query -> Outer query이다. 가능한 Nested보다는 join을 쓰는 것이 성능면에서 좋다.
Nested query는 총 세가지 종류를 리턴하는데,
- scalar value(single value) : 한 칸
- relation with one attribute : 한 열
- relation with mutiple attibutes : 여러 개의 열