SlideShare ist ein Scribd-Unternehmen logo
1 von 18
정규화와 SELECT (II)
                 웹 데이터 베이스




한림대학교 금융정보통계학과               이   윤   환, yoonani72@gmail.com
학과                    학생                           과목

  학과      지도교수        학과   학번     성명               수강과목         담당교수

   A      김수정         A    0001   고길동           성질이론             김수정

   B      허영만         A    0002   둘리            한식의 멋            허영만

   C       강풀         B    0003   희동이           심리학의 이해           강풀

                      B    0004   도우너           생활체육             이현세
과목_성적
                      B    0005   또치
학번      수강과목     성적
                      C    0006   마이콜
0001   성질이론       A
0001   한식의 멋      C
0002   성질이론       A
0002   한식의 멋      B
0003   한식의 멋      B
0004   심리학의 이해    C
0005   심리학의 이해    A
0006   생활체육       B


 한림대학교 금융정보통계학과                         이   윤   환, yoonani72@gmail.com
Cartesian Product
• 두 테이블에 존재하는 행들의 연결
  o 앞선 학과 테이블과 학과 테이블의 Cartesian Product
  o 결과는 두 테이블의 행의 곱의 개수 만큼 나온다.


         학과      지도교수      학과   학번         성명

          A      김수정        A   0001       고길동

          B      허영만        A   0002       둘리

          C       강풀        B   0003       희동이

                            B   0004       도우너

                            B   0005       또치

                            C   0006       마이콜




한림대학교 금융정보통계학과                     이   윤   환, yoonani72@gmail.com
Cartesian Product
•    SELECT * FROM hsDept, hsStudent;




    한림대학교 금융정보통계학과                      이   윤   환, yoonani72@gmail.com
(INNER) JOIN
• 앞선 Cartesian Product의 예에서 학과 테이블의 학과명
  과 학생 테이블의 학과명이 다른 자료는 의미없는 자료이
  다.
• 이 의미없는 연결을 없애보자.
  o SELECT * FROM hsDept, hsStudent
    WHERE hsDept.deptName = hsStudent.deptName;
  o JOIN 조건이 이와 같이 같다(=)일 경우 동등 조인이라 한다.




한림대학교 금융정보통계학과                      이   윤   환, yoonani72@gmail.com
(INNER) JOIN
• SQL : AS
   o Alias 의 줄임말로 현재 쿼리에 한해 임시로 이름을 바꿔 사용한다.
   o TABLE 명에 대해 바꿔 사용할 경우 (열이름의 경우도 대동소이)
      • SELECT A.deptName FROM hsDept AS A;
      • 해당 쿼리내에서 테이블의 이름을 AS 이후에 지정한 문자열로 바꿔
         사용한다.
      • 열의 이름은 다른 테이블과 중복 사용시 임시이름.열이름으로 가리
         킨다.




 한림대학교 금융정보통계학과              이   윤   환, yoonani72@gmail.com
(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
JOIN
 • MySQL에서 제공하는 Join
     o http://dev.mysql.com/doc/refman/5.1/en/join.html
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)




  한림대학교 금융정보통계학과                             이   윤   환, yoonani72@gmail.com
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
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
역 정규화를 통한 테이블 합치기
    과목_성적
   학번        수강과목         성적

   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
• SELECT B.studentID, B.className, A.profName,
  B.studScore
  FROM hsClass as A JOIN hsClassScore as B
  USING (className);




한림대학교 금융정보통계학과                   이   윤   환, yoonani72@gmail.com
학생

  학과       학번      성명

   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
• SELECT
  A.deptName, A.studentID, A.studName, B.deptProf
  FROM hsStudent as A JOIN hsDept as B
  USING(deptName);




한림대학교 금융정보통계학과                  이   윤   환, yoonani72@gmail.com
학생
학과 학번       성명    지도교수

 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 한식의 멋        허영만    B

0003 한식의 멋        허영만    B

0004 심리학의 이해       강풀    C

0005 심리학의 이해       강풀    A

0006 생활체육         이현세    B

한림대학교 금융정보통계학과                                    이   윤   환, yoonani72@gmail.com
• 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
한림대학교 금융정보통계학과   이   윤   환, yoonani72@gmail.com
다음 시간에는 …
• OUTER JOIN 에 대해 알아보고 Facebook Page에 올려
  주세요

• PHP를 알아봅시다!




한림대학교 금융정보통계학과            이   윤   환, yoonani72@gmail.com

Weitere ähnliche Inhalte

Mehr von Yoonwhan Lee

11.두표본의 평균비교
11.두표본의 평균비교11.두표본의 평균비교
11.두표본의 평균비교Yoonwhan Lee
 
10.단일표본 평균 모비율
10.단일표본 평균 모비율10.단일표본 평균 모비율
10.단일표본 평균 모비율Yoonwhan Lee
 
09.통계적가설검정
09.통계적가설검정09.통계적가설검정
09.통계적가설검정Yoonwhan Lee
 
00.통계학입문
00.통계학입문00.통계학입문
00.통계학입문Yoonwhan Lee
 
14.범주형자료분석
14.범주형자료분석14.범주형자료분석
14.범주형자료분석Yoonwhan Lee
 
Smart work 자료 1
Smart work 자료 1Smart work 자료 1
Smart work 자료 1Yoonwhan Lee
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 RYoonwhan Lee
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇYoonwhan Lee
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기Yoonwhan Lee
 
쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정Yoonwhan Lee
 
에버노트와 드롭박스 설치
에버노트와 드롭박스 설치에버노트와 드롭박스 설치
에버노트와 드롭박스 설치Yoonwhan Lee
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지Yoonwhan Lee
 

Mehr von Yoonwhan Lee (20)

11.두표본의 평균비교
11.두표본의 평균비교11.두표본의 평균비교
11.두표본의 평균비교
 
10.단일표본 평균 모비율
10.단일표본 평균 모비율10.단일표본 평균 모비율
10.단일표본 평균 모비율
 
09.통계적가설검정
09.통계적가설검정09.통계적가설검정
09.통계적가설검정
 
08.추정
08.추정08.추정
08.추정
 
07.표본분포
07.표본분포07.표본분포
07.표본분포
 
06.확률분포
06.확률분포06.확률분포
06.확률분포
 
05.확률
05.확률05.확률
05.확률
 
00.통계학입문
00.통계학입문00.통계학입문
00.통계학입문
 
14.범주형자료분석
14.범주형자료분석14.범주형자료분석
14.범주형자료분석
 
Smart work 자료 1
Smart work 자료 1Smart work 자료 1
Smart work 자료 1
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 R
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇ
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기
 
Class10
Class10Class10
Class10
 
MySQL과 PHP
MySQL과 PHPMySQL과 PHP
MySQL과 PHP
 
MySQL 기초
MySQL 기초MySQL 기초
MySQL 기초
 
추정
추정추정
추정
 
쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정쿠키를 통해 구현해보는 간단한 로그인 과정
쿠키를 통해 구현해보는 간단한 로그인 과정
 
에버노트와 드롭박스 설치
에버노트와 드롭박스 설치에버노트와 드롭박스 설치
에버노트와 드롭박스 설치
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지
 

정규화와 JOIN

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