[DB] 다중 테이블 검색 💫

박정현·2023년 10월 26일
0

💽 데이터베이스

목록 보기
10/11
post-thumbnail

1. 다중 테이블 검색

데이터를 분해하는 방법으로 정규화기법 사용 통합하는 기법으로 다중테이블에 대한 검색어 사용

(조인,서브쿼리, 집합연산자)

1. 서브쿼리(subquery)

하나의 sql문에 또 다른 sql문 작성 **join

  1. 하나의 쿼리안에 괄호()로 감사서 사용
  2. 서브쿼리는 Order by를 사용하지 못한다.

2) 서브쿼리 사용이 가능한곳

select

from

where

having

order by

insert의 values절

update의 set절

2. JOIN

1) join(조인): JOIN(INNER, OUTER, CROSS, SELF JOIN) **inner join이 핵심

  • 결합을 의미: 테이블과 테이블이 결합(2개 이상의 테이블 결합)
  • 관계형데이터베이스에서의 조인의 교집합 결과를 가지는 결합방법을 의미
  • 두테이블의 공통값을 이용하여 칼럼을 조합하는 수단
  • 논리적 조인과 물리적 조인이 잇다.
  • 내부조인(inner join)과 외부조인(outer join)이 있다. sub query

2) join을 쓰면 두 개의 테이블을 엮어서 둰하는 데이터를 추출할 수 있다.

  • 조인은 두 개의 테이블을 서로 묶어서 하난의 결과를 만들어 내는 ㅓㄳ을 말한다.
  • inner join(내부 조인): 두 테이블을 조인할 때. 두 체이블에 모두 지정한 열의 데이터가 이썽야 한다.
  • outer join(외부 조인); 두 테이블을 조읺 라 때. 1개의 테이블에만 데니터가 있어도 결과가 나온다.
  • cross join(상호 조인): 한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인한느 기능이다,
  • self join(자체 조인): 자신과 조인한다는 의미로 1개의 테이블을 사용한다.

3) inner join(내부조인)

두 테이블을 연결할 대 가장 많이 사용하는 것이 내부 조인이다.

그냥 조인이라고 부르면 내부조인을 의미합니다.

select <열 목록> from 테이블1 inner join 테이블2 on <조인될 조건>

inner join을 join이라고만 써도 inner join으로 인식한다.

select m.userId, b.board_no from member2026_1 m join board0626_2 b no m.userId=b.board_title;

select m.userId, b.board_no

from member0626_1 m

inner join board0626_2 b

on m.userId=b.board_title;

** 테이블간의 연관 관계 주테이블 1연관테이블 N

→ 외래키 설정 FK 1: N 주키

→ inner join → 일반적인 join ***두 테이블은 연관관계에 있다.

2) outer join

  • 외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.

INNER(내부) JOIN 과 대비하여 OUTER(외부) JOIN이라고 불리며, JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용합니다.

즉 A, B 테이블을 JOIN 할 경우, 조건에 맞지 않는 데이터도 표시하고 싶을 때 OUTER JOIN을 사용합니다.

*조인 조회값이 없어도 출력

OUTER JOIN의 종류

  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
    --left ouster join
    --왼쪽 테이블을 기준으로 오른쪽 값이 없는 것도 가져온다.(null확인)
    select m.custno, n.pcost
    from member_07 m left outer join money_07 n 
    on m.custno = n.custno;
  • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
    select m.custno, n.pcost
    from member_07 m right outer join money_07 n 
    on m.custno = n.custno;
  • FULL OUTER JOIN: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인

cross join(상호조인)

  • 한쪽 테이블의 모든 해과 다른 쪽 테이블의 모든 행을 조인시키는 기능이다.
  • 상호 조인 결과의 전체 행 개수는 두 테이블ㅇㄹ이 각 행의개수를 곱한 수만큼 된다,.
  • 카티션 곱(Cartesian product)이라고도 한다.
  • 정보관련시험에서 출제됨

자체조인

  • chat bot(Web socket, Sromp, Komoran, Komoran+Open Api+DB)
  • 자체 조인은 자기 자신과 조인하므로 1개의 테이블을 사용한다.
  • 별도의 문법이 있는 것은 아니고 1개로 조인하면 자체조인이 된다.
profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글