정규화와 join

18
정정정정 SELECT (II) 정 정정정 정정정 정, [email protected] 정정정정정 정정정정정정정정

Upload: yoonwhan-lee

Post on 25-Jan-2015

1.023 views

Category:

Documents


5 download

DESCRIPTION

JOIN을 통해

TRANSCRIPT

Page 1: 정규화와 JOIN

한림대학교 금융정보통계학과

정규화와 SELECT (II)

웹 데이터 베이스

이 윤 환 , [email protected]

Page 2: 정규화와 JOIN

한림대학교 금융정보통계학과 이 윤 환 , [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

Page 3: 정규화와 JOIN

한림대학교 금융정보통계학과

Cartesian Product• 두 테이블에 존재하는 행들의 연결

o 앞선 학과 테이블과 학과 테이블의 Cartesian Producto 결과는 두 테이블의 행의 곱의 개수 만큼 나온다 .

이 윤 환 , [email protected]

학과 지도교수A 김수정B 허영만C 강풀

학과 학번 성명

A 0001 고길동

A 0002 둘리

B 0003 희동이

B 0004 도우너

B 0005 또치

C 0006 마이콜

Page 4: 정규화와 JOIN

한림대학교 금융정보통계학과

Cartesian Product• SELECT * FROM hsDept, hsStudent;

이 윤 환 , [email protected]

Page 5: 정규화와 JOIN

한림대학교 금융정보통계학과

(INNER) JOIN• 앞선 Cartesian Product 의 예에서 학과 테이블의

학과명과 학생 테이블의 학과명이 다른 자료는 의미없는 자료이다 .

• 이 의미없는 연결을 없애보자 .o SELECT * FROM hsDept, hsStudent

WHERE hsDept.deptName = hsStudent.deptName;o JOIN 조건이 이와 같이 같다 (=) 일 경우 동등 조인이라 한다 .

이 윤 환 , [email protected]

Page 6: 정규화와 JOIN

한림대학교 금융정보통계학과

(INNER) JOIN• SQL : AS

o Alias 의 줄임말로 현재 쿼리에 한해 임시로 이름을 바꿔 사용한다 .o TABLE 명에 대해 바꿔 사용할 경우 ( 열이름의 경우도 대동소이 )

• SELECT A.deptName FROM hsDept AS A;• 해당 쿼리내에서 테이블의 이름을 AS 이후에 지정한 문자열로 바꿔

사용한다 .• 열의 이름은 다른 테이블과 중복 사용시 임시이름 .열이름으로 가리킨다 .

이 윤 환 , [email protected]

Page 7: 정규화와 JOIN

한림대학교 금융정보통계학과

(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]

Page 8: 정규화와 JOIN

한림대학교 금융정보통계학과

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)

Page 9: 정규화와 JOIN

한림대학교 금융정보통계학과

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]

Page 10: 정규화와 JOIN

한림대학교 금융정보통계학과

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]

Page 11: 정규화와 JOIN

한림대학교 금융정보통계학과

역 정규화를 통한 테이블 합치기

이 윤 환 , [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

Page 12: 정규화와 JOIN

한림대학교 금융정보통계학과

• SELECT B.studentID, B.className, A.profName, B.studScore FROM hsClass as A JOIN hsClassScore as B USING (className);

이 윤 환 , [email protected]

Page 13: 정규화와 JOIN

한림대학교 금융정보통계학과 이 윤 환 , [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 마이콜 강풀

Page 14: 정규화와 JOIN

한림대학교 금융정보통계학과

• SELECT A.deptName, A.studentID, A.studName, B.dept-ProfFROM hsStudent as A JOIN hsDept as BUSING(deptName);

이 윤 환 , [email protected]

Page 15: 정규화와 JOIN

한림대학교 금융정보통계학과 이 윤 환 , [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 이현세

Page 16: 정규화와 JOIN

한림대학교 금융정보통계학과

• 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]

Page 17: 정규화와 JOIN

한림대학교 금융정보통계학과 이 윤 환 , [email protected]

Page 18: 정규화와 JOIN

한림대학교 금융정보통계학과

다음 시간에는 …• OUTER JOIN 에 대해 알아보고 Facebook Page 에

올려주세요

• PHP 를 알아봅시다 !

이 윤 환 , [email protected]