- patients 테이블 안에 'patient_id' --> PK
- admissions 테이블 안에 'patient_id' --> FK
- 따라서 공통되는 patient_id를 기준으로 join하게 됨
a. INNER JOIN (내부 조인)

SELECT ... FROM table_A INNER JOIN table_B ON A.key = B.key
- FROM: 기준이 되는 첫 번째 테이블
- INNER JOIN: 붙이고 싶은 두 번째 테이블
* ON: 두 테이블을 연결할 고리(조건식)
b. LEFT (OUTER) JOIN (외부 조인)
SELECT A.col1, A.col2, B.col3 FROM table_A LEFT JOIN table_B ON A.key = B.key
c. RIGHT (OUTER) JOIN
SELECT * FROM A RIGHT JOIN B ON A.비교대상 = B.비교대상;
d. FULL (OUTER) JOIN

SELECT * FROM A FULL JOIN B ON A.비교대상 = B.비교대상;
‼️"데이터를 관리하기 편하게 쪼개놓는 것은 정규화, 필요할 때 다시 합쳐서 보는 것은 JOIN"!
SELECT A.col1, A.col2, B.col3 FROM table_A
INNER/LEFT JOIN table_B ON A.key = B.key
WHERE 조건
WHERE는 SELECT보다 먼저 실행됨
실행 순서:
FROM
WHERE
GROUP BY
HAVING
SELECT ← 여기서 alias 생성됨
ORDER BY
ALIAS
SELECT * From patients as p;
SELECT visitors2025 as vis25,
visitors2026 as vis26 from patients;
SELECT visitors2025 + visitors2026 AS total fron patients;
.
-> patients 테이블의 이름이 p로 변경됨 (쿼리 안에서만 변경됨, 실제 테이블 이름은 안 바뀜)
-> 컬럼들의 이름이 vis25, vis26으로 변경됨
-> 위에 처럼 단순 계산 시 → alias 필요 없으나, 복잡한 쿼리를 사용할 때 alias 없으면 지옥됨.
- AS 생략 가능
SELECT a.name, b.name
FROM employees a
JOIN employees b
ON a.manager_id = b.id;
SELECT DISTINCT 환자명 FROM 환자정보;
SELECT DISTINCT 지역, 성별 FROM 환자정보;
- 여러 개의 컬럼을 적으면, 모든 컬럼의 값이 동일한 행을 하나로 취급
- DISTINCT 지역, 성별은 "지역이 같고 성별까지 같아야" 똑같은 데이터로 취급
-> (서울, 남성)과 (서울, 여성)은 서로 다른 데이터로 인식되어 둘 다 출력
SELECT COUNT(DISTINCT 진료과) FROM 진료예약내역;
- ⭐️COUNT(컬럼명) 함수는 기본적으로 NULL을 무시하고 숫자를 셉니다.
-> SELECT COUNT(category) → 5개 (입력된 row의 갯수)
-> SELECT DISTINCT category → 과일, 가전, NULL (3줄)
-> SELECT COUNT(DISTINCT category) → 2 (NULL은 개수에서 제외함)