정규화와 join
DESCRIPTION
JOIN을 통해TRANSCRIPT
한림대학교 금융정보통계학과 이 윤 환 , [email protected]
학과 지도교수A 김수정B 허영만C 강풀
학생학과
학과 학번 성명
A 0001 고길동
A 0002 둘리
B 0003 희동이
B 0004 도우너
B 0005 또치
C 0006 마이콜
수강과목 담당교수
성질이론 김수정
한식의 멋 허영만
심리학의 이해 강풀
생활체육 이현세과목 _ 성적
과목
학번 수강과목 성적0001 성질이론 A0001 한식의 멋 C0002 성질이론 A0002 한식의 멋 B0003 한식의 멋 B0004 심리학의 이해 C0005 심리학의 이해 A0006 생활체육 B
한림대학교 금융정보통계학과
Cartesian Product• 두 테이블에 존재하는 행들의 연결
o 앞선 학과 테이블과 학과 테이블의 Cartesian Producto 결과는 두 테이블의 행의 곱의 개수 만큼 나온다 .
이 윤 환 , [email protected]
학과 지도교수A 김수정B 허영만C 강풀
학과 학번 성명
A 0001 고길동
A 0002 둘리
B 0003 희동이
B 0004 도우너
B 0005 또치
C 0006 마이콜
한림대학교 금융정보통계학과
(INNER) JOIN• 앞선 Cartesian Product 의 예에서 학과 테이블의
학과명과 학생 테이블의 학과명이 다른 자료는 의미없는 자료이다 .
• 이 의미없는 연결을 없애보자 .o SELECT * FROM hsDept, hsStudent
WHERE hsDept.deptName = hsStudent.deptName;o JOIN 조건이 이와 같이 같다 (=) 일 경우 동등 조인이라 한다 .
이 윤 환 , [email protected]
한림대학교 금융정보통계학과
(INNER) JOIN• SQL : AS
o Alias 의 줄임말로 현재 쿼리에 한해 임시로 이름을 바꿔 사용한다 .o TABLE 명에 대해 바꿔 사용할 경우 ( 열이름의 경우도 대동소이 )
• SELECT A.deptName FROM hsDept AS A;• 해당 쿼리내에서 테이블의 이름을 AS 이후에 지정한 문자열로 바꿔
사용한다 .• 열의 이름은 다른 테이블과 중복 사용시 임시이름 .열이름으로 가리킨다 .
이 윤 환 , [email protected]
한림대학교 금융정보통계학과
(INNER) JOIN• 앞선 예에서 deptName 이 중복되어 나타난다 . 이 중복을
없애보자 .o SELECT A.deptName, A.deptProf, B.studentID, B.studName
FROM hsDept as A, hsStudent as B WHERE A.deptName = B.deptName;
o 이와 같이 중복되는 열을 제거한 것을 NATURAL JOIN 이라 한다 .
이 윤 환 , [email protected]
한림대학교 금융정보통계학과
JOIN• MySQL 에서 제공하는 Join
o http://dev.mysql.com/doc/refman/5.1/en/join.html
이 윤 환 , [email protected]
join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition] | table_reference STRAIGHT_JOIN table_factor | table_reference STRAIGHT_JOIN table_factor
ON conditional_expr | table_reference {LEFT|RIGHT} [OUTER] JOIN
table_reference join_condition | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor
join_condition: ON conditional_expr | USING (column_list)
한림대학교 금융정보통계학과
JOIN• 앞선 (INNER) JOIN 을 MySQL 에서 제공하는 (INNER)
JOIN 문을 통해 알아보자 .o SELECT A.deptName, A.deptProf, B.studentID, B.studName
FROM hsDept as A JOIN hsStudent as B ON A.deptName = B.deptName;
이 윤 환 , [email protected]
한림대학교 금융정보통계학과
JOINo SELECT A.deptName, A.deptProf, B.studentID, B.studName
FROM hsDept as A JOIN hsStudent as B USING (deptName);• JOIN 조건으로 참여할 열의 이름이 같고 동등 조인을 실시할 경우 US-
ING 을 사용하면 편리하다 .
이 윤 환 , [email protected]
한림대학교 금융정보통계학과
역 정규화를 통한 테이블 합치기
이 윤 환 , [email protected]
수강과목 담당교수
성질이론 김수정
한식의 멋 허영만
심리학의 이해 강풀
생활체육 이현세
과목 _ 성적
과목
학번 수강과목 성적
0001 성질이론 A
0001 한식의 멋 C
0002 성질이론 A
0002 한식의 멋 B
0003 한식의 멋 B
0004 심리학의 이해 C
0005 심리학의 이해 A
0006 생활체육 B
학번 수강과목 담당교수 성적
0001 성질이론 김수정 A
0001 한식의 멋 허영만 C
0002 성질이론 김수정 A
0002 한식의 멋 허영만 B
0003 한식의 멋 허영만 B
0004 심리학의 이해 강풀 C
0005 심리학의 이해 강풀 A
0006 생활체육 이현세 B
한림대학교 금융정보통계학과
• SELECT B.studentID, B.className, A.profName, B.studScore FROM hsClass as A JOIN hsClassScore as B USING (className);
이 윤 환 , [email protected]
한림대학교 금융정보통계학과 이 윤 환 , [email protected]
학과 지도교수A 김수정B 허영만C 강풀
학생
학과
학과 학번 성명
A 0001 고길동
A 0002 둘리
B 0003 희동이
B 0004 도우너
B 0005 또치
C 0006 마이콜
학과 학번 성명 지도교수
A 0001 고길동 김수정
A 0001 고길동 김수정
A 0002 둘리 김수정
A 0002 둘리 김수정
B 0003 희동이 허영만
B 0004 도우너 허영만
B 0005 또치 이현세
C 0006 마이콜 강풀
한림대학교 금융정보통계학과
• SELECT A.deptName, A.studentID, A.studName, B.dept-ProfFROM hsStudent as A JOIN hsDept as BUSING(deptName);
이 윤 환 , [email protected]
한림대학교 금융정보통계학과 이 윤 환 , [email protected]
학번 수강과목 담당교수 성적
0001 성질이론 김수정 A
0001 한식의 멋 허영만 C
0002 성질이론 김수정 A
0002 한식의 멋 허영만 B
0003 한식의 멋 허영만 B
0004 심리학의 이해 강풀 C
0005 심리학의 이해 강풀 A
0006 생활체육 이현세 B
학생
과목 _ 성적
학과 학번 성명 지도교수
A 0001 고길동 김수정
A 0001 고길동 김수정
A 0002 둘리 김수정
A 0002 둘리 김수정
B 0003 희동이 허영만
B 0004 도우너 허영만
B 0005 또치 이현세
C 0006 마이콜 강풀
학과 학번 성명 지도교수 수강과목 성적 담당교수A 0001 고길동 김수정 성질이론 A 김수정A 0001 고길동 김수정 한식의 멋 C 허영만A 0002 둘리 김수정 한식의 멋 B 허영만A 0002 둘리 김수정 성질이론 A 김수정B 0003 희동이 허영만 성질이론 B 김수정B 0004 도우너 허영만 심리학의 이해 C 강풀B 0005 또치 이현세 심리학의 이해 A 강풀C 0006 마이콜 강풀 생활체육 B 이현세
한림대학교 금융정보통계학과
• SELECT * FROM( SELECT B.studentID AS sid, B.className AS cn, A.profName AS pn, B.studScore AS scFROM hsClass as A JOIN hsClassScore as B USING (className) ) AS ABJOIN( SELECT C.deptName AS dn, C.studentID AS sid, C.studName AS sn, D.deptProf AS 에FROM hsStudent as C JOIN hsDept as DUSING(deptName) ) AS CDUSING (sid);
이 윤 환 , [email protected]
한림대학교 금융정보통계학과 이 윤 환 , [email protected]
한림대학교 금융정보통계학과
다음 시간에는 …• OUTER JOIN 에 대해 알아보고 Facebook Page 에
올려주세요
• PHP 를 알아봅시다 !
이 윤 환 , [email protected]