1. 쿼리 안에 서브쿼리
서브쿼리 : 쿼리 안에 들어 있는 또 다른 쿼리
1.1. 비상관 서브쿼리
- 연산자
- ~ ALL : 서브쿼리의 모든 결과에 대해 ~ 하다.
- ~ ANY : 서브쿼리의 하나 이상의 결과에 대해 ~ 하다.
1.2. 상관 서브쿼리
: 맞물려 돌아간다.
1.3 EXISTS / NOT EXISTS 연산자
2. JOIN - 여러 테이블 조립하기
2.1 JOIN (INNER JOIN ) - 내부 조인
- 양쪽 모두에 값이 있는 행을 반환
- 테이블에 있는 중복된 행에 대해서 이 행을 가져올 테이블을 지정하지 않으면 오류 발생.
- 하나의 테이블에만 있는 행이면 굳이 테이블을 지정하지 않아도 된다.
- 여러 테이블을 JOIN할 수 있다.
- SELF JOIN : 같은 테이블끼리 조인한다.
- 대응하는 값이 없으면 가져오지 않는다.
2.2 LEFT, RIGHT OUTER JOIN -외부 조인
- 해당 데이터에 대응하는 값이 없어도 가져온다. 빈 칸은 NULL
SELECT
E1.EmployeeID, CONCAT_WS(' ', E1.FirstName, E1.LastName) AS Employee,
E2.EmployeeID, CONCAT_WS(' ', E2.FirstName, E2.LastName) AS NextEmployee
FROM Employees E1
LEFT JOIN Employees E2
ON E1.EmployeeID + 1 = E2.EmployeeID
ORDER BY E1.EmployeeID;
2.3 CROSS JOIN - 교차 조인
- 조건 없이 모든 조합을 반환한다.
3. UNION - 집합으로 다루기
3.1 연산자
- UNION : 중복을 제거한 집합
- UNION ALL : 중복을 제거하지 않은 집합
3.2 합집합
3.3 교집합
3.4 차집합
SELECT CategoryID AS ID
FROM Categories
WHERE
CategoryID > 4
AND CategoryID NOT IN (
SELECT EmployeeID
FROM Employees
WHERE EmployeeID % 2 = 0
);
3.5 대칭차집합
SELECT ID FROM (
SELECT CategoryID AS ID FROM Categories
WHERE CategoryID > 4
UNION ALL
SELECT EmployeeID AS ID FROM Employees
WHERE EmployeeID % 2 = 0
) AS Temp
GROUP BY ID HAVING COUNT(*) = 1;
'독학 > [책 + 인강] SQL' 카테고리의 다른 글
[얄코 MySQL] 섹션 4 MySQL 더 깊이 알아가기 (0) | 2024.04.05 |
---|---|
[얄코 MySQL] 섹션 3 데이터 조작하기 (0) | 2024.04.05 |
[얄코 MySQL] 섹션 1 SELECT 기초 - 원하는 정보 가져오기 (2) | 2024.03.25 |
[SQL Server] Do it SQL 입문 5장 다양한 SQL 함수 사용하기 (0) | 2024.02.19 |
[SQL Server] Do it SQL 입문 4장 테이블을 서로 조합하는 조인 알아보기 (0) | 2024.02.04 |