/* 결혼정보회사 데이터베이스를 만드는 과정에서 사용하게된 쿼리문입니다. 회원정보중에 직업, 연봉, 부모님직업, 학벌, 재산에 대해서는 따로 테이블을 만들어 직업별, 연봉별, 학벌별로 스코어를 따로 만들어 뒀는데 이 테이블들을 모두 참조하여 Score값을 다 더한 후 회원정보 테이블의 Score 값에 저장하는 방식입니다. 테이블 구조는 아래와 같습니다. UPDATE `Man_information` INNER JOIN Job_information, Income_information, Prejob_information, School_information, Property_information --외래키로 참조하는 테이블들 inner join SET `Score`= Job_information.Score_man+ Prejob_information.Score_man+ Income_information.Score_man+ School_information.Score_man+ Property_information.Score_man -- Score값에 외래키에 해당되는 다른 테이블 스코어 합산 하여 저장 where Man_information.Job=Job_information.Job AND Man_information.Income = Income_information.Income AND Man_information.Pre_job = Prejob_information.Job AND Man_information.School = School_information.School AND Man_information.Property = Property_information.Property; -- 외래키에 해당되는 값들을 걸러내는 조건문 1. 외래키 (Foreign Key)란?외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라한다. 2. 외래키 사용시 주의 사항1) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야한다. (참조 무결성 제약조건) 2) 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있다. 3) 부모 테이블의 기본키, 고유키가 여러개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있다.
4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 한다. 3. 외래키 예제데이터베이스 마다 선언 하는 방식이 다를 수 있으며, Mysql 기준으로 설명하겠다.
department(부서)와 employee(회사원) 테이블이 있다. department이 부모 테이블이고, employee가 자식 테이블이다. 외래키를 가진 테이블이 자식 테이블이고, 참조되는 테이블이 부모 테이블이다. 다대 일 관계4. 외래키 옵션1) On Delete Cascade : 부모 데이터 삭제 시 자식 데이터도 삭제 Set null : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Null로 업데이트 Set default : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트 Restrict : 자식 테이블이 참조하고 있을 경우, 데이터 삭제 불가
No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다. 2) On Update Cascade : 부모 데이터 업데이트 시 자식 데이터도 업데이트 Set null : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Null로 업데이트 Set default : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트 Restrict : 자식 테이블이 참조하고 있을 경우, 업데이트 불가 No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다. 5. 외래키 추가
6. 외래키 삭제외래키를 삭제하려면 CONSTRAINT_NAME을 알아야한다.
삭제하고 싶은 키의 CONSTRAINT_NAME을 확인한다.
7. TEST
도움이 되셨다면 공감버튼을 눌러주세요! |