728x90
--JOIN(결합)
USE GameDB;
CREATE TABLE testA
(
a INTEGER
)
CREATE TABLE testB
(
b VARCHAR(10)
)
-- A(1, 2, 3)
INSERT INTO testA VALUES(1);
INSERT INTO testA VALUES(2);
INSERT INTO testA VALUES(3);
-- B(A,B,C)
INSERT INTO testB VALUES('A');
INSERT INTO testB VALUES('B');
INSERT INTO testB VALUES('C');
--CROSS JOIN (교차 결합)
SELECT*
FROM testA
CROSS JOIN testB;
SELECT*
FROM testB, testA;
- 교차 결합의 결과물
결합의 예시.
USE BaseballData;
SELECT*
FROM players
ORDER BY playerID;
SELECT*
FROM salaries
ORDER BY playerID;
INNER JOIN (실제로 많이 쓰이는 문법)
-- INNER JOIN (두 개의 테이블을 가로로 결합 + 결합 기준을 ON으로)
-- 결합 기준은 playerID(공통된)
--> playerID가 players, salaries 양쪽에 다 있고, 일치하는 애들만 결합한다.
SELECT*
FROM players AS p
INNER JOIN salaries AS s
ON p.playerID = s.playerID
OUTER JOIN
-LEFT JOIN
--OUTER JOIN (외부 결합)
-- LEFT / RIGHT
-- 어느 한쪽에만 존재하는 데이터 -> 정책?
-- LEFT JOIN (두 개의 테이블을 가로로 결합 + 결합 기준을 ON으로)
-- playerID가 왼쪽(Left)에 있으면 무조건 표시, 오른쪽(salaries)에 없으면 오른쪽 정보는 NULL로 채움.
-- 왼쪽에 해당되는 playerID 및 정보를 표시한다. 만약 playerID가 오른쪽에 있다면 데이터를 표시, 없다면 NULL로 채운다.
SELECT*
FROM players AS p
LEFT JOIN salaries AS s
ON p.playerID = s.playerID
-RIGHT JOIN
-- RIGHT JOIN (두 개의 테이블을 가로로 결합 + 결합 기준을 ON으로)
-- playerID가 오른쪽(Right)에 있으면 무조건 표시, 왼쪽(players)에 없으면 정보는 NULL로 채움.
SELECT*
FROM players AS p
RIGHT JOIN salaries AS s
ON p.playerID = s.playerID
'공부 > 데이터베이스' 카테고리의 다른 글
변수와 흐름제어 (0) | 2022.03.02 |
---|---|
TRANSACTION (0) | 2022.02.16 |
교집합, 합집합, 차집합 (0) | 2022.02.09 |
정규화 / INDEX (0) | 2022.02.07 |
데이터베이스 작성 (0) | 2022.01.27 |