INNER JOIN: 두 개의 테이블에서 조인 조건에 일치하는 데이터만 가져옵니다.
LEFT JOIN: 왼쪽 테이블의 모든 데이터와 오른쪽 테이블에서 일치하는 데이터를 가져옵니다. 오른쪽 테이블에 일치하는 데이터가 없으면 NULL 값이 반환됩니다.
SELECT * FROM Orders o
INNER JOIN Users u
ON o.user_id = u.user_id;
orders o, users u로 표시한 것은 저번에 Alias를 활용하여 어떤 테이블의 user_id 인지 구분하고 쿼리를 작성하기 위함입니다.
SELECT u.name, count(u.name) AS Count_name FROM Orders o
INNER JOIN Users u
ON o.user_id = u.user_id
WHERE u.email like '%gmail.com'
GROUP BY u.name
1. FROM Orders o: Orders 테이블의 데이터를 전부 가져오고 o라는 별칭(ALIAS)을 붙입니다.
2. INNER JOIN Users u ON o.user_id = u.user_id : Users 테이블을 Orders 테이블에 연결(Join)하는데, Orders 테이블의 user_id와 같은 데이터 값인 Users 테이블의 user_id를 연결합니다. Users 테이블에도 u라는 별칭(ALIAS)을 붙입니다.
3. WHERE u.email like '%gmail.com': Users 테이블 email 필드값이 gmail.com으로 끝나는 값을 불러옵니다.
4. GROUP BY u.name: Users 테이블의 name값이 같은 값들을 묶어줍니다.
5. SELECT u.name, count(u.name) AS Count_name : Users 테이블의 name필드와 name 필드를 기준으로 묶여진 갯수를 보여줍니다.
위 쿼리는 FROM → JOIN → WHERE → GROUP BY → SELECT 순서로 진행됩니다.
SELECT column1, column2, column3 FROM Table1
UNION ALL
SELECT column1, column2, column3 FROM Table2;
위 쿼리는 Union을 사용할 때에 기본적인 틀이며 Table1 과 Table2의 결과를 중복 허용하여 결합합니다.
Fruit1
name price
apple 1.99
orange 2.49
banana 0.99
pear 1.79
kiwi 3.99Fruit2
name price
orange 2.49
banana 0.99
grape 2.99
peach 1.99
mango 4.99
SELECT name, price FROM fruit1
UNION
SELECT name, price FROM fruit2;
Result
name price
apple 1.99
banana 0.99
grape 2.99
kiwi 3.99
mango 4.99
orange 2.49
peach 1.99
pear 1.79
Union을 사용시 Order by와 같은 내부 정렬이 적용되지 않습니다!😱