티스토리 뷰
WHERE 절
INSERT 를 제외만 DML 구문에서 원하는 데이터만 골라서 원하는 명령어를 실행할수 있도록 지정할 수 있는 구문이다.
WHERE 절 비교 연산자
| 연산자 | 의미 | 예시 |
| = | 같음 | where num = 10 |
| < | 작음 | \where num < 10 |
| <= | 작거나 같음 | where num <= 10 |
| > | 큼 | where num > 10 |
| >= | 크거나 같음 | where num >= 10 |
WHERE 절에 쓰이는 부정 연산자
| 연산자 | 의미 | 예시 |
| != | 같지 않음 | where num != 10 |
| ^= | 같지 않음 | where num ^= 10 |
| <> | 같지 않음 | where num <> 10 |
| not 컬럼명 = | 같지 않음 | where not num = 10 |
| not 컬럼명 > | 크지 않음 | where not num > 10 |
| not 컬럼명 < | 작지 않음 | where not num < 10 |
WHERE 절에 쓰이는 연산자
| 연산자 | 의미 | 예시 |
| BETWEEN A AND B | A와 B의 사이(A, B 포함) | where num between 1 and 10 |
| LIKE '비교 문자열' | 비교문자를 포함 | 아래 설명 |
| IN (LIST) | LIST 중 하나와 일치 | WHERE NAME IN ('준호', '민재', '수정') |
| IS NULL | NULL 값인지 | WHERE NAME IS NULL |
| LIKE '비교문자열' | 해당하는 문자가 있을때 | WHERE NAME LIKE '블랙핑크' |
| LIKE '%비교문자열' | 뒤에 해당하는 문자가 있을때 | WHERE NAME LIKE '%핑크' |
| LIKE '비교문자열%' | 앞에 원하는 문자가 있을때 | WHERE NAME LIKE '블랙%' |
| LIKE '%비교문자열%' | 가운데 원하는 문자가 있을때 | WHERE NAME LIKE '%랙핑%' |
| LIKE '_비교문자열' | 2번쨰 부터 원하는 문자가 있을때 | WHERE NAME LIKE '_랙핑크' |
| LIKE '__비교문자열'; | 3번째부터 원하는 문자가 있을때 | WHERE NAME LIKE '__핑크' |
| LIKE '비교문자열__' | 마지막에서2번쨰부터 원하는 문자가 있을때 | WHERE NAME LIKE '블랙핑_' |
| LIKE '비교_문자열' | 가운데하나를띄우고 원하는 문자가 있을때 | WHERE NAME LIKE '블랙_크' |
| LIKE '%#%%' escape '#' | 이스케이프시 %나 _는 그냥 문자열로 취급 | WHERE NAME LIKE '%#%#_%' ESCAPE '#' |
부정 SQL
| 연산자 | 의미 | 예시 |
| NOT BETWEEN A AND B | A와 B의 사이가 아님(A, B 미포함) | where num not between 1 and 10 |
| NOT IN (LIST) | LIST 중 일치하는 것이 없음 | where name not in ('민재', '지훈', '수정') |
| IS NOT NULL | NULL 값이 아님 | where name is not null |
논리 연산자
| 연산자 | 의미 | 예시 |
| AND | 모든 조건이 TRUE 여야함 | WHERE NUM > 1 AND NUM < 10 |
| OR | 하나이상이 TRUE | WHERE NUM = 1 OR NUM != 1 |
| NOT | TRUE FALSE 반전 | WHERE NOT NUM > 5 |
| 논리연산자 우선순위 | () -> NOT -> AND -> OR |
GROUP BY, HAVING 절
GROUP BY 는 데이터를 그룹으로 묶을때 사용하는 구문이다. GROUP BY 뒤에는 그룹핑의 기준이 되는 컬럼이 오게 된다.
집계함수
| 집계 함수 | 설명 |
| COUNT(*) | 전체 ROW 의 개수반환 |
| COUNT(컬럼) | 컬럼 값이 NULL 인 ROW 를 제외하고 COUNT 해서 반환 |
| COUNT(DISTINCT 컬럼) | 컬럼값이 NULL 이 아닌 ROW 에서 중복을 제거한 수 개수 반환 |
| SUM(컬럼) | 컬럼값들의 합계 반환 |
| AVG(컬럼) | 컬럼값들의 편균 반환 |
| MIN(컬럼) | 컬럼값중 최소값 반환 |
| MAX(컬럼) | 컬럼값중 최대값 반환 |
HAVING
GROUP BY 절을 사용할 대 사용하는 조건절이다.
!중요 SELECT 문의 실행 순서
| SELECT 문의 논리적 실행 순서 | |
| SELECT | 5 |
| FROM | 1 |
| WHERE | 2 |
| GROUP BY | 3 |
| HAVING | 4 |
| ORDER BY | 6 |
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
HAVING 절은 GROUP BY 이후에 실행되기 때문에 그룹핑 후게 사용한 집계 함수로 조건을 부여할 수 있다.
ORDER BY
| ORDER BY 구문 | 디폴트값은 ASC |
| ASC | 오름차순 |
| DESC | 내림차순 |
JOIN문
EQUI JOIN 은 equal (=) 조건으로 join 하는 것으로 가장 흔히 볼수 있는 조인이다.
NON EQUI JOIN 은 Equal(=) 조건이 아닌 다른 조건(BETWEEN, >, >=, <, <=) 으로 JOIN 하는 방식\
OUTER JOIN
JOIN 에 만족하지 않는 조건도 출력하는 조인 Oracle 에서는 모든 행이 출력되는 테이블의 반대편 테이블의 옆에(+) 기호를 붙여주면 OUTER JOIN 을 할 수 있다.
| OUTER JOIN 종류 | |
| LEFT OUTER JOIN | 왼쪽값이 모두 반영 |
| RIGHT OUTER JOIN | 오른쪽같이 모두 반영 |
| FULL OUTER JOIN | 양쪽값이 모두 반영 |
INNER JOIN
JOIN 의 조건에 맞는 데이터만 조인
NATURAL JOIN
A 테이블과 B 테이블에서 같은 이름을 가진 칼럼들이 모두 동일한 테이터를 가지고 있을 경우 JOIN 이 되는 방식이다. SQL Server(MSSQL) 에서는 지원하지 않는다.
CROSS JOIN
CARTESIAN PRODUCT 라고도 한다
가능한 모든 경우의 수를 만든다.
'데이터' 카테고리의 다른 글
| SQL 심화 1 (서브쿼리, 뷰, 집합연산자) (0) | 2025.03.06 |
|---|---|
| SQL 기본 함수 설명 주의사항 (0) | 2025.03.04 |
| SQL 기본 함수 설명1 (0) | 2025.03.03 |
| 트랜잭션과 NULL (0) | 2025.03.03 |
| 정규화 (0) | 2025.03.03 |
