03.11 학습! JOIN! 🟥🟧🟨🟩🟦🟪🟫⬜⬛🫢🔔😎😊🤔😭⭐
⭐ NULL값을 집계하지 않음에 주의!
COUNT, SUM, AVG, MAX, MIN
컬럼을 명시하면 null 없어짐, *을 쓰면 행의 수를 알 수 있다
🔔 WHERE 절에는 집계 함수를 사용할 수 없음!
⭐ SELECT 절에 기술한 컬럼 중, 집계 함수에 사용되지 않은 컬럼은 GROUP BY절에 사용 불가!
ROLLUP, CUBE, GROUPING SET
🔔 ROLLUP을 사용하면 총계 때 NULL이 나오는데 이게 원래 NULL인지 ROLLUP 때문에 나온 NULL인지 구분하기 위해서 GROUPING함수가 나옴!
GROUPING() 값이 0이면 집계한 것이 아니다! 1이면 집계!
N개의 테이블 조인 시 N-1개 이상의 조인 조건 필요
⭐ 참조무결성
조건에 따른 구분
EQUI JOIN , NON-EQUI JOIN
INNER JOIN, OUTER JOIN
조건 생략 시
NATURAL JOIN - 두 테이블 연결 역할 -> 공통 컬럼(이름같은) 양쪽에 존재 해야지만! ⭐
CROSS JOIN - 가능한 모든 조합
그외
SELF JOIN - 계층형의 성질을 가진 테이블에서 이루어짐
조건을 작성하는 방법 2가지!
USING절 - 반드시 이름이 같은 공통 컬럼이 있어야 한다! -> 테이블명, 테이블 별칭 사용불가! ⭐ AND로 연결됨
ON절 - 조건을 기술
함축형 WHERE절로 간단하게 만드는 방식
join 앞이 생략되면 inner join
⭐ join 시 SELECT에서 선택할 때 별칭 무조건 쓰기! e.ename , e.job 이런 식으로

DB 안에 있는 것은 FILE이다!
DB와 통신할때 잘 찾아갈 수 있도록 해주는 것이 DBMS = SQL이다!
SCHEMA = DATABASE
테이블 구조라는 것을 잊으면 안된다.
AGGREGATION - MAX, MIN, AVG, COUNT, SUM, - 결과가 SCALAR 이다!
TABLE과 SCALAR는 자체가 다르다!
TABLE과 SCALAR가 합쳐지면 TABLE이 아니다 -> 이걸 TABLE로 만들어주고 싶은데?
GROUP BY ~당 -> 직사각형으로 만들어서 관리 가능!
특징 AS 가 먹힌다.
GROUP BY -> WHERE X HAVING O
ORDER BY -> 1,2,3 쿼리 날리는 거에 대한 번호를 사용할 수 있다!
JOIN => CONSTRAINTS (PK,FK,Unique,Notnull) (not null) + TRX
PK,FK,Unique -> Integrity
⭐ JOIN 순서
1. COLUMN 나열
2. TABLE 나열 (ambiguaus 상태 조심!)
3. table도 alias col도 alias.col
4. JOIN T1, T2 ON T2.FK = T1.PK
⭐ subQuery
1. 가장 먼저 실행된다!
2. 괄호를 열어줘야 한다
3. column이 하나면 비교하는 것도 하나여야 한다(칼럼 수 맞추기)
4. 일반적으로 칼럼 하나를 가져와서 비교!
5. ⭐ from 뒤에 서브쿼리는 반드시 alias를 명시해야 한다! ⭐
6. alias를 명시하면 inline뷰 가 되어서 명칭으로 활용하고 join 가능하다!
b형 준비 시작!