혼자 공부하는 SQL 3주차 - JOIN & SQL 프로그래밍

2022. 7. 24. 22:45공부/혼자 공부하는 SQL

반응형

두 테이블을 묶는 조인 - JOIN

  • 2개의 테이블을 묶어서 하나의 결과를 만들어 내는 것
  • INNER JOIN / OUTER JOIN으로 나누어진다.

내부 JOIN ( INNER JOIN )

  • 특별한 명이 없는 JOIN --> (INNER) JOIN
  • 테이블 간의 관계 :: 일대다 관계
  • 두 테이블에 모두 데이터가 있어야만 결과 출력 가능
  • ☆ 칼럼 SELECT 시에는 테이블을 명확히 선택해주어야 한다.
    • 예시) 테이블.칼럼 // buy.mem_id
SELECT 열 목록
FROM 첫 번째 테이블
(INNER) JOIN 두 번째 테이블
      ON 조인될 조건
WHERE 검색 조건
더보기
내부 JOIN SELECT
-- buy TABLE과 member TABLE 내부 JOIN
SELECT * FROM buy
INNER JOIN member
	ON buy.mem_id = member.mem_id;
내부 JOIN SELECT - WHERE 조건 추가
-- market_db DATABASE 사용하기
USE market_db;

-- buy TABLE과 member TABLE 내부 JOIN
-- mem_id가 GRL인 조건만 SELECT
SELECT * FROM buy
INNER JOIN member
	ON buy.mem_id = member.mem_id
WHERE buy.mem_id = 'GRL';
내부 JOIN SELECT - WHERE 조건 추가 & 테이블에 AS 추가
SELECT 
	  B.mem_id
	, M.mem_name
	, B.prod_name
	, M.addr
	, CONCAT(M.phone1, M.phone2) '연락처'
FROM buy B
INNER JOIN member M
	ON B.mem_id = M.mem_id;
p.183 손코딩
SELECT 
	  DISTINCT M.mem_id
	, M.mem_name
	, M.addr
FROM buy B
INNER JOIN member M
	ON B.mem_id = M.mem_id
ORDER BY M.mem_id;

외부 JOIN ( OUTER JOIN )

  • LEFT OUTER JOIN :: LEFT 테이블을 기준으로 OUTER JOIN 수행
  • RIGHT OUTER JOIN :: RIGHT 테이블을 기준으로 OUTER JOIN 수행
  • FULL OUTER JOIN :: 둘 중 한 테이블에만 데이터가 있으면 JOIN 수행
  • 한쪽에만 데이터가 있어도 결과가 출력됨
SELECT 열 목록
FROM 첫 번째 테이블(LEFT 테이블)
LEFT/RIGHT/FULL OUTER JOIN 두번째 테이블(RIGHT 테이블)
      ON 조인될 조건
WHERE 검색 조건;

p.194 ~ 195 확인문제

1. 두 테이블이 일대다의 관계로 연결하기 위한 관계의 전제 조건

  • 기본 키 - 외래 키 관계

 

2 - 1. 가장 많이 사용되는 조인, 일반적으로 부르는 조인.

  • 내부 조인

2 - 2. 한쪽 테이블에만 데이터가 있어도 결과가 나오는 조인.

  • 외부 조인

2 - 3. 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인.

  • 상호 조인

2 - 4. 한 개의 테이블이 자신과 조인되는 것.

  • 자체 조인

 

3. 외부 조인의 종류

  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • FULL OUTER JOIN

 

4. 회원으로 가입만 하고 한 번도 구매한 적이 없는 회원의 목록

SELECT 
	  DISTINCT M.mem_id
	, B.prod_name
	, M.mem_name
	, M.addr
FROM member M
LEFT OUTER JOIN buy B
	ON M.mem_id = B.mem_id
WHERE B.prod_name IS NULL
ORDER BY M.mem_id;

 

5. 용어 설명

상호 조인은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능을 말합니다. 그래서 상호 조인 결과의 개수는 두 테이블 개수를 곱한 개수가 됩니다. 자체 조인은 자신이 자신과 조인된다는 의미입니다. 그래서 자체 조인은 1개의 테이블을 사용합니다.

 


 

SQL 프로그래밍

IF문

  • 조건식이 참이면 SQL문장들을 실행, 그렇지 않으면 그냥 넘어감.

 

  • IF문
  • IF ~ ELSE 문
IF 조건식 THEN SQL문장들
END IF;

CASE문

  • 2가지밖에 없는 IF문과 다르게 다중으로 처리 가능함.
CASE WHEN 조건1 THEN SQL문장들1
           WHEN 조건2 THEN SQL문장들2
           ...
           ELSE SQL문장들
END 별칭;

WHILE문

  • 조건식이 참인 동안에 SQL문장들 계속 반복
WHILE 조건식 DO SQL문장들
END WHILE;

p.212 ~ 213 확인문제

1. 스토어드 프로시저를 묶어주는 구분 문자를 부르는 용어

  • DELIMITER

2. 변수의 값이 100과 같은 경우를 구분하는 IF문

-- myNum 선언
DECLARE myNum INT;
-- myNum에 값 세팅
SET myNum = 200;
-- IF문 사용
IF myNum = 100 
	THEN SELECT '100입니다.';
	ELSE SELECT '100이 아닙니다.';
END IF;

3. CASE문의 형식

CASE 
	WHEN 조건1 THEN SQL문장들1
	ELSE SQL문장들4
END CASE;

4. WHILE / ITERATE / LEAVE 설명

WHILE은 조건식이 참인 동안에는 'SQL 문장들'을 계속 반복합니다. ITERATE는 지정한 레이블로 가서 계속 진행합니다. LEAVE는 지정한 레이블을 빠져나갑니다. 즉 WHILE문이 종료됩니다.
728x90
반응형