-- 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문이 종료됩니다.