Successfully reported this slideshow.
정규화와 SELECT (II)                 웹 데이터 베이스한림대학교 금융정보통계학과               이   윤   환, yoonani72@gmail.com
학과                    학생                           과목  학과      지도교수        학과   학번     성명               수강과목         담당교수 ...
Cartesian Product• 두 테이블에 존재하는 행들의 연결  o 앞선 학과 테이블과 학과 테이블의 Cartesian Product  o 결과는 두 테이블의 행의 곱의 개수 만큼 나온다.         학과   ...
Cartesian Product•    SELECT * FROM hsDept, hsStudent;    한림대학교 금융정보통계학과                      이   윤   환, yoonani72@gmail.com
(INNER) JOIN• 앞선 Cartesian Product의 예에서 학과 테이블의 학과명  과 학생 테이블의 학과명이 다른 자료는 의미없는 자료이  다.• 이 의미없는 연결을 없애보자.  o SELECT * FROM...
(INNER) JOIN• SQL : AS   o Alias 의 줄임말로 현재 쿼리에 한해 임시로 이름을 바꿔 사용한다.   o TABLE 명에 대해 바꿔 사용할 경우 (열이름의 경우도 대동소이)      • SELECT...
(INNER) JOIN• 앞선 예에서 deptName이 중복되어 나타난다. 이 중복  을 없애보자.  o SELECT A.deptName, A.deptProf, B.studentID, B.studName    FROM ...
JOIN • MySQL에서 제공하는 Join     o http://dev.mysql.com/doc/refman/5.1/en/join.htmljoin_table:  table_reference [INNER | CROSS...
JOIN• 앞선 (INNER) JOIN을 MySQL에서 제공하는 (INNER)  JOIN 문을 통해 알아보자.  o SELECT A.deptName, A.deptProf, B.studentID, B.studName   ...
JOIN  o SELECT A.deptName, A.deptProf, B.studentID, B.studName    FROM hsDept as A JOIN hsStudent as B    USING (deptName)...
역 정규화를 통한 테이블 합치기    과목_성적   학번        수강과목         성적   0001 성질이론               A                               성        ...
• SELECT B.studentID, B.className, A.profName,  B.studScore  FROM hsClass as A JOIN hsClassScore as B  USING (className);한...
학생  학과       학번      성명   A       0001    고길동                         학과 학번 성명 지도교수   A       0002    둘리                  ...
• SELECT  A.deptName, A.studentID, A.studName, B.deptProf  FROM hsStudent as A JOIN hsDept as B  USING(deptName);한림대학교 금융정...
학생학과 학번       성명    지도교수 A   0001   고길동   김수정 A   0001   고길동   김수정 A   0002   둘리    김수정 A   0002   둘리    김수정 B   0003   희동...
• SELECT * FROM  ( SELECT B.studentID AS sid, B.className AS cn,  A.profName AS pn, B.studScore AS sc  FROM hsClass as A J...
한림대학교 금융정보통계학과   이   윤   환, yoonani72@gmail.com
다음 시간에는 …• OUTER JOIN 에 대해 알아보고 Facebook Page에 올려  주세요• PHP를 알아봅시다!한림대학교 금융정보통계학과            이   윤   환, yoonani72@gmail.com
Upcoming SlideShare
Loading in …5
×

정규화와 JOIN

1,445 views

Published on

JOIN을 통해

  • Be the first to comment

정규화와 JOIN

  1. 1. 정규화와 SELECT (II) 웹 데이터 베이스한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  2. 2. 학과 학생 과목 학과 지도교수 학과 학번 성명 수강과목 담당교수 A 김수정 A 0001 고길동 성질이론 김수정 B 허영만 A 0002 둘리 한식의 멋 허영만 C 강풀 B 0003 희동이 심리학의 이해 강풀 B 0004 도우너 생활체육 이현세과목_성적 B 0005 또치학번 수강과목 성적 C 0006 마이콜0001 성질이론 A0001 한식의 멋 C0002 성질이론 A0002 한식의 멋 B0003 한식의 멋 B0004 심리학의 이해 C0005 심리학의 이해 A0006 생활체육 B 한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  3. 3. Cartesian Product• 두 테이블에 존재하는 행들의 연결 o 앞선 학과 테이블과 학과 테이블의 Cartesian Product o 결과는 두 테이블의 행의 곱의 개수 만큼 나온다. 학과 지도교수 학과 학번 성명 A 김수정 A 0001 고길동 B 허영만 A 0002 둘리 C 강풀 B 0003 희동이 B 0004 도우너 B 0005 또치 C 0006 마이콜한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  4. 4. Cartesian Product• SELECT * FROM hsDept, hsStudent; 한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  5. 5. (INNER) JOIN• 앞선 Cartesian Product의 예에서 학과 테이블의 학과명 과 학생 테이블의 학과명이 다른 자료는 의미없는 자료이 다.• 이 의미없는 연결을 없애보자. o SELECT * FROM hsDept, hsStudent WHERE hsDept.deptName = hsStudent.deptName; o JOIN 조건이 이와 같이 같다(=)일 경우 동등 조인이라 한다.한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  6. 6. (INNER) JOIN• SQL : AS o Alias 의 줄임말로 현재 쿼리에 한해 임시로 이름을 바꿔 사용한다. o TABLE 명에 대해 바꿔 사용할 경우 (열이름의 경우도 대동소이) • SELECT A.deptName FROM hsDept AS A; • 해당 쿼리내에서 테이블의 이름을 AS 이후에 지정한 문자열로 바꿔 사용한다. • 열의 이름은 다른 테이블과 중복 사용시 임시이름.열이름으로 가리 킨다. 한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  7. 7. (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 이라 한다.한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  8. 8. JOIN • MySQL에서 제공하는 Join o http://dev.mysql.com/doc/refman/5.1/en/join.htmljoin_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_factorjoin_condition: ON conditional_expr | USING (column_list) 한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  9. 9. 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;한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  10. 10. JOIN o SELECT A.deptName, A.deptProf, B.studentID, B.studName FROM hsDept as A JOIN hsStudent as B USING (deptName); • JOIN 조건으로 참여할 열의 이름이 같고 동등 조인을 실시할 경우 USING을 사용하면 편리하다.한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  11. 11. 역 정규화를 통한 테이블 합치기 과목_성적 학번 수강과목 성적 0001 성질이론 A 성 학번 수강과목 담당교수 0001 한식의 멋 C 적 0002 성질이론 A 0001 성질이론 김수정 A 0002 한식의 멋 B 0003 한식의 멋 B 0001 한식의 멋 허영만 C 0004 심리학의 이해 C 0002 성질이론 김수정 A 0005 심리학의 이해 A 0006 생활체육 B 0002 한식의 멋 허영만 B 과목 0003 한식의 멋 허영만 B 수강과목 담당교수 0004 심리학의 이해 강풀 C 성질이론 김수정 0005 심리학의 이해 강풀 A 한식의 멋 허영만 0006 생활체육 이현세 B 심리학의 이해 강풀 생활체육 이현세한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  12. 12. • SELECT B.studentID, B.className, A.profName, B.studScore FROM hsClass as A JOIN hsClassScore as B USING (className);한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  13. 13. 학생 학과 학번 성명 A 0001 고길동 학과 학번 성명 지도교수 A 0002 둘리 A 0001 고길동 김수정 B 0003 희동이 A 0001 고길동 김수정 B 0004 도우너 A 0002 둘리 김수정 B 0005 또치 A 0002 둘리 김수정 C 0006 마이콜 B 0003 희동이 허영만 B 0004 도우너 허영만 학과 B 0005 또치 이현세 학과 지도교수 C 0006 마이콜 강풀 A 김수정 B 허영만 C 강풀한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  14. 14. • SELECT A.deptName, A.studentID, A.studName, B.deptProf FROM hsStudent as A JOIN hsDept as B USING(deptName);한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  15. 15. 학생학과 학번 성명 지도교수 A 0001 고길동 김수정 A 0001 고길동 김수정 A 0002 둘리 김수정 A 0002 둘리 김수정 B 0003 희동이 허영만 학과 학번 성명 지도교수 수강과목 성적 담당교수 B 0004 도우너 허영만 A 0001 고길동 김수정 성질이론 A 김수정 B 0005 또치 이현세 A 0001 고길동 김수정 한식의 멋 C 허영만 C 0006 마이콜 강풀 A 0002 둘리 김수정 한식의 멋 B 허영만과목_성적 A 0002 둘리 김수정 성질이론 A 김수정학번 수강과목 담당교수 성적 B 0003 희동이 허영만 성질이론 B 김수정0001 성질이론 김수정 A B 0004 도우너 허영만 심리학의 이해 C 강풀0001 한식의 멋 허영만 C B 0005 또치 이현세 심리학의 이해 A 강풀0002 성질이론 김수정 A C 0006 마이콜 강풀 생활체육 B 이현세0002 한식의 멋 허영만 B0003 한식의 멋 허영만 B0004 심리학의 이해 강풀 C0005 심리학의 이해 강풀 A0006 생활체육 이현세 B한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  16. 16. • SELECT * FROM ( SELECT B.studentID AS sid, B.className AS cn, A.profName AS pn, B.studScore AS sc FROM hsClass as A JOIN hsClassScore as B USING (className) ) AS AB JOIN ( SELECT C.deptName AS dn, C.studentID AS sid, C.studName AS sn, D.deptProf AS 에 FROM hsStudent as C JOIN hsDept as D USING(deptName) ) AS CD USING (sid); 한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  17. 17. 한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com
  18. 18. 다음 시간에는 …• OUTER JOIN 에 대해 알아보고 Facebook Page에 올려 주세요• PHP를 알아봅시다!한림대학교 금융정보통계학과 이 윤 환, yoonani72@gmail.com

×