본문 바로가기
DBMS(SQL)

SQL 조인 연산, 집합 (8일차)

by JoinInNoetic 2023. 10. 9.

◆ 조인 연신

    - SELECT와 더불어 가장 많이 사용하는 옵션

    - 두 개 이상의 테이블을 묶어서 하나의 결과 집합으로 만들어 내는 것

    - 즉, 서로 다른 테이블에서 가져올 때 사용하는 것

    - 분류

        ● INNER JOIN

            - 조인하는 테이블의 조건이 일치하는 결과만 출력

ex)

> table emp

> table dept

> inner join

 

        ● LEFT OUTER JOIN

            - 조인 연산을 할 때 왼쪽 테이블을 기준으로 조인

ex)

> left outer join

 

        ● RIGHT OUTER JOIN

            - 조인 연산을 할 때 오른쪽 테이블을 기준으로 조인

ex)

> right outer join

 

◆ 집합

    ● 합집합(Full Outer Join)

        - 집합 A에 속하거나 집합 B에 속하는 모든 원소로 이루어진 집합

        - 두 SELECT 문의 결과를 모두 포함하는 최종 결과를 반환

ex)

> table tableA

> table tableB

> full outer join(tableA, tableB)

  # 중복 제거

   # 중복 허용

 

    ● 교집합

        - 두 집합 A와 B가 공통으로 포함하는 원소로 이루어진 집합

        - INNER JOIN과 동일

        - 합집합, left, right join, inner join으로 구현 가능

ex)

> table tableA

> table tableB

> 교집합(곱집합으로 구현)

 

    ● 차집합

        - 집합 A에는 속하지만 집합 B에는 속하지 않는 원소들로 이루어진 집합

        - left, right join / 서브쿼리로 구현 가능

ex)

> table tableA

> table tableB

> 차집합(서브쿼리로 구현)

* str not in => not exists 도 가능

> table tableA

> table tableB

> 차집합(left join으로 구현)

 

    ● 대칭 차집합

        - 둘 중 한 집합에는 속하지만 둘 모두에는 속하지 않는 원소들의 집합

ex)

> table tableA

> table tableB

> 대칭 차집합(group by + 합집합 이용)

> 대칭 차집합(서브쿼리 + 합집합 이용)

> 결과

 

    ● 곱집합

        - 두 집합 A, B의 모든 요소들을 곱한 결과

 

◆ SQL 심화

    ● DCL

        - 프로그래밍 보다는 MySQL 내부의 데이터를 제어하는 언어

        - 데이터의 보안, 무결성, 회복 등을 정의하는 데 사용

        - GRANT, REVOKE, COMMIT, ROLLBACK이 있음

        - COMMIT, ROLLBACK은 TCL로 구분됨

    ● MySQL 사용자

        - MySQL 사용자 계정을 추가해줄 수 있음

        - 사용자를 추가하기 전에는 먼저 현재 존재하고 있는 사용자 계정을 확인하고 추가해야 함

        - 사용자 추가 및 삭제 실습

            ▶ 안전모드 해제 및 user 목록 확인

            ▶ 추가

            ▶ 삭제

    ● GRANT 구문

        - 사용자에게 권한을 주는 구문

            GRANT [권한 타입] ON [데이터베이스.테이블명] TO 유저ID@localhost;

    ● REVOKE 구문

        - 사용자에게 주었던 권한을 해제(회수)하는 구문

            REVOKE [권한 타입] ON [데이터베이스.테이블명] FROM 유저ID@localhost;