본문 바로가기
데이터/Database

[데이터베이스] MySQL에서 복수 개의 테이블 다루는 데 필요 기초 내용 정리

by dwoi 2023. 4. 20.

MySQL로 데이터베이스를 다루는 기초적인 내용에 대해 정리하는 글

 

목차

     


    데이터베이스(Database)


    1. 집합연산

    복수의 테이블을 이용한 테이블 검색

    → 수학의 집합으로 인식하여 처리하는 것

    1.1. SQL과 집합

    테이블에서 집합은 테이블 구조로, 테이블의 레코드는 집합에 속해 있는 요소

     

    1.2 Union (합집합)

    ex. A = {1,2,3}

    B= {2,10,11}

    A와 B의 합집합 = {1,2,3,10,11}

    select * from 테이블A
    union
    select * from 테이블B;

     

    • SQL에서의 UNION 사용시 컬럼명은 다르더라도 컬럼의 갯수 자료형이 같으면 UNION 가능
    • select 구에서 * 대신 UNION이 가능한 컬럼을 지정하면 가능
    • order by 사용은 지양
    • 필요하다면 as 키워드로 별명을 주고 "order by 별명"으로 처리

    ◆ union all : 중복값을 인정하는 합집함 함수로 이해

    성능면에선 union에 비하여 유리

    1.3. 교집합과 차집합

    교집합은 INTERSECT, 차집합은 EXCEPT

     

     


    2. 테이블 결합

    • 테이블 결합(join)은 집합과는 다른 테이블 연산(합집합, 교집합, 차집합이 아닌 곱집합)
    • 테이블은 데이터의 무결성을 보장하기 위하여 여러 개로 나뉘어 관리하고 필요 시 결합

    2.1. 곱집합과 교차 결합

    • 곱집합은 두개의 집합을 곱하는 연산
    • 교차결합(cross join)은 수학의 곱집합을 SQL로 구현

     

    2.2. Inner join

    곱집합으로 연산한 결과를 where 조건으로 지정하여 결합하는 방법

    • foreign key는 join을 요구하는 다른 테이블의 primary key의 요소로 구성
    • primary key는 테이블 내에서 not null, unique제약 조건을 갖고 있는 컬럼(보통 index 설정이 되어 있음)

     

    2.3. Outer Join

    • 한쪽에만 있는 데이터행의 연결방법들(left join, right join)
    •  left join은 왼쪽 테이블을 데이터 항목을 모두 살리고 연결되는 우측 테이블의 값이 없으면 NULL값으로 처리
    •  right join은 left join과 방향만 다르고 방식은 동일

     

    2.4 Join 요약

    곱연산

    select * from 테이블1, 테이블2 where 조건;

    inner join

    select * from 테이블1 inner join 테이블2 on 조건 where 조건;

    outter join(left join)

    select * from 테이블1 left join 테이블2 on 조건 where 조건;

    outter join(right join)

    select * from 테이블1 right join 테이블2 on 조건 where 조건;

     


    3. 관계형 모델

    • 관계형 모델을 기반으로 작성된 데이터베이스가 ‘관계형 데이터베이스: RDB’
    • SQL은 관계형 모델에 의해 구축된 데이터베이스를 조작하는 명령의 집합
    • SQL과 관계형 모델의 용어는 일치하지 않음

    관계형 모델은 실제 세계의 데이터를 관계라는 개념을 사용해서 표현한 데이터 모델

    기본 요소는 relation

    관계가 중요! 테이블을 의

     

    SQL에서

    • attribute : 컬럼
    • tuple :  행
    • relation : tuple의 집합
    • relation에 대한 연산 : 관계 대수
      • 하나 이상의 관계를 바탕으로 연산
      • 연산한 결과, 반환되는 것 또한 관계
      • 연산을 중첩 구조로 실행해도 상관없음.

    합집합, 차집합 교집합, 곱집합, 선택,투영, 결합 등의 모델로 나타내지게 되는것임.


    마무리

    여러 테이블을 다룰 때 테이블이 어떤 집합으로 되어 있고 이들이 어떻게 결합하는 지를 통해

    서로간의 관계를 좀 더 면밀히 파악해야 함.

    특히 inner join에 대해서 익숙해질 필요!


     

     

    댓글