티스토리 뷰
[SQLD] 2024 개정 SQLD 2과목 - SQL 기본(WHERE, GROUPBY, HAVING, ORDER BY, JOIN, 표준조인)
sikaro 2024. 2. 27. 21:35https://www.youtube.com/watch?v=_f_WZYuNr7A&t=8s
WHERE 절
- 테이블의 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶을 경우 사용한다.
- NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용(= 연산자로 조회 불가능하다)
BETWEEN a AND b -a와 b 사이값(이상 이하)
IN(a,b,c) - a이거나 b이거나 c인 조건
LIKE - 특정 패턴을 가지고 있는 조건(문자열)
NOT A - A가 아닌 모드 조건
WHERE ENAME(컬럼명) IN ('SAM', 'SUNG');
LIKE 연산자는 %와 _와 함께 사용된다
1) % : 자리수 제한 없는 모든
2) _ : _하나 당 한 자리수를 의미하며, 모든 값을 표현한다.
LIKE 'S%' : 이름이 S로 시작하는
LIKE '%S%' : 이름에 S를 포함하는
LIKE '%S' : 이름이 S로 끝나는
LIKE '_S%': 이름의 두번째 글자가 S인
LIKE '__S__' : 세번째 자리가 S이며, 이름의 길이가 5글자이다.
GROUP BY 절
-각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식
-그룹에 대한 조건은 WHERE 절에서 사용할 수 없다.
- GROUP BY 절을 사용하면 데이터가 요약되므로, 요약되기 전 데이터와 함께 출력할 수 없음
GROUP BY의 잘못된 사용
GROUP BY에 쓴 컬럼이 아닌 컬럼은 그룹함수랑 같이 쓰지 않으면 출력 불가
HAVING 절
- 그룹 함수 결과를 조건으로 사용할 떄 사용하는 절
즉, WHERE을 사용할 수 없을 때, GROUP BY 테이블이 나온 상태에서 조건을 더 추가하고 싶을 때 사용한다.
- SELECT 절에서 선언된 Alias 사용 불가
HAVING 절이 GROUP BY 절 앞에 올 수는 있지만 뒤에 쓰는 걸 권장한다.
ORDER BY 절
-출력되는 행의 순서를 변경하고자 할 때 사용
- 복합 정렬도 가능하다. 1차 정렬한 값이 같은 경우, 그 값 안에서 2차 정렬 컬럼값의 정렬이 일어난다.
- 컬럼 별칭 가능하다.
JOIN
- 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조 할 경우 사용
- FROM 절에 조인할 테이블을 나열한다
- 동일한 열 이름이 여러 테이블에 존재할 경우, 열 이름 앞에 테이블 이름이나 테이블 Alias 붙임
- N 개의 테이블을 조인하려면 최소 N-1개의 조인 조건이 필요하다.
EQUI JOIN : 그냥 부르는 것. JOIN 조건이 동등 조건인 경우
NON EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우
1. INNER JOIN
2. OUTER JOIN
3. NATURAL JOIN : 조인 조건 생략 시, 두 테이블에 같은 이름으로 자연 연결(컬럼명이 같을 때)
4. CROSS JOIN : 조인 조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력(FULL OUTER JOIN)
5. SELF JOIN : 하나의 테이블을 두 번 이상 참조하여 연결하는 조인
EQUI JOIN(등가 JOIN)
조인 조건이 '=' 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 얻는 조인 방법
WHERE 테이블1.컬럼 = 테이블2.컬럼
즉, 조인을 명시하지 않고 조인하는 것
SELF JOIN
테이블명이 중복되므로 반드시 테이블 별칭 사용
표준 조인
ANSI 표준으로 작성되는 INNER,CROSS,NATURAL,OUTER JOIN을 말한다.
ANSI 표준에서는 JOIN일고 하면 바로 조인된다.
조건의 형태면 ON 절이나 USING을 필수적으로 사용
USING은 조인할 컬럼명이 같을 경우 사용한다.
-Alias나 테이블 이름 같은 접두사 붙이기 불가능하다
-괄호 필수
테이블 1 JOIN 테이블 2
USING (동일컬럼명);
NATURAL JOIN
- 두 테이블 간의 동일한 이름을 가지는 모든 컬럼들에 대해 EQUI JOIN을 수행
- USING, ON, WHERE 절에서 조건 정의 불가능
- JOIN에 사용된 컬럼들은 데이터 유형이 동일해야 하며, 접두사를 사용불가능하다.
NATURAL JOIN을 할 떄는 한 개의 컬럼만 사용하기 때문에, 같은 컬럼명이 두 개 이상이면 어느 쪽을 사용할 지 명시해줘야 한다.
CROSS JOIN
카타시안곱 출력 - 모든 경우의