JOIN

원래벌레·2022년 10월 18일
0
post-custom-banner

🌞 조인

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

  • 종류

    • INNER JOIN
    • OUTER JOIN
    • CROSS JOIN
    • SELF JOIN

cf) 데이터 베이스의 테이블은 중복과 공간 낭비를 피하고 데이터의 무결성을 위해 여러개의 테이블로 분리하여 저장한다. 분리된 테이블들은 서로 관계를 갖는다.

🌞 INNER JOIN

  • 사용형식
SELECT < 목록>
FROM < 번째 테이블>
	INNER JOIN < 번째 테이블>
    ON <조인  조건>
[WHERE <검색조건>]

🌼 ex

SELECT *
FROM buyTBL
	INNER JOIN userTBL
   ON buyTBL.userID = userTBL.userID
WHERE buyTBL.username = 'JYP';
  • 결과

🌼 ex2

SELECT B.userID, U.name, B.prodName, U.mobile1 + U.mobile2 AS '연락처'
FROM	buyTBL B
	INNER JOIN userTBL U
   ON B.userID = U.userID
ORDER BY num;

as를 통해서 U.mobile1과 U.mobile2 항목을 '+' 연산한 결과의 컬럼명을 연락처로 변경하였다.
FROM과 JOIN 명령어를 작성 할 때 테이블 명 뒤에는 alias 값이 들어 올 수 있다.
ORDER BY num을 통해서 num컬럼에 의해서 정렬 되었다.

  • 결과

  • JOIN의 결과는 JOIN하는 테이블의 앞 뒤 순서의 상관없이 같게 나온다.

🌼 ex3

SELECT DISTINCT U.userID, U.name, U.addr
FROM userTbl U
	JOIN buyTbl B
    ON U.userID = B.userID
ORDER BY U.userID ;

결과 : 구매한적이 있는 회원조회
DISTINCT를 사용하면 기본키가 같은 항목들은 하나만 출력한다.


🌼 ex4

SELECT S.stdName, S.addr, C.clubName, C.roomNo
FROM stdTbl S 
	INNER JOIN stdclubTbl SC
	ON S.stdName = SC.stdName
	INNER JOIN clubTbl C 
	ON SC.clubName = C.clubName
ORDER BY S.stdName

세개의 테이블을 JOIN을 하였다.


🌞 OUTER JOIN(외부조인)

  • 조인의 조건에 만족되지 않는 행까지도 포함시키는 것

  • LEFT OUTER JOIN : 왼쪽 테이블의 것은 모두 출력되어야 한다. 라고 해석하면 됨

SELECT < 목록>
FROM <   테이블(LEFT 테이블)>
	<LEFT | RIGHT | FULL> OUTER JOIN < 번째 테이블(RIGHT 테이블)>
    	ON <조인될 조건>
[WHERE 검색조건];

🌼 ex

  • 1학년 학생의 이름과 지도교수명을 출력하라.
    단, 지도 교수가 지정되지 않은 학생도 출력되게 하라.
SELECT	STUDENT.NAME. PROFESSOR.NAME
FROM	STUDENT
	LEFT OUTER JOIN	PROFESSOR
    	ON	STUDENT.PID = PROFESSOR.ID
WHERE	GRADE = 1;

왼쪽 테이블인 STUDENT 테이블 중 PID가 비어 있는 행도 JOIN 통한 결과에는 출력이 돼있다. 빈 부분은 NULL로 채워져 있다.


🌞 CROSS JOIN(상호조인)

  • 한쪽 테이블의 모든 행들과 다른 쪽 테이블의 모든 행을 조인시키는 기능

  • CROSS JOIN의 결과 개수 = 두 테이블 개수를 곱한 개수

  • 테스트로 사용할 많은 용량의 데이터를 생성할 때 주로 사용

  • ON 구문을 사용할 수 없음

  • 대량의 데이터를 생성하면 시스템이 다운되거나 디스크 용량이 모두 찰 수 있어 COUNT(*) 함수로 개수만 카운트

  • EX

SELECT COUNT(*) AS '데이터개수'
	FROM employees
    	CROSS JOIN titles;

🌞 INNER JOIN(자체조인)

  • 자기 자신과 자기 자신이 조인한다는 의미

  • 대표적인 예 : 조직도와 관련된 테이블

  • 직장상사 manager id를 가지고 있는 경우 이를 상관이름으로 대체하거나 할 때 사용 됨

🌞 UNION

  • 두 쿼리의 결과를 행으로 합치는 것
SELECT 문장1
	UNION [ALL]
SELECT 문장2

profile
학습한 내용을 담은 블로그 입니다.
post-custom-banner

0개의 댓글