[정리노트] SQLD 2024년 개정판, WHERE
WHERE
- 테이블의 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶을 경우 사용 (엑셀의 필터기능과 유사)
- 여러 조건 동시 전달 가능 (AND와 OR로 조건 연결)
- NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용 (=연산자로 조회 불가)
- 연산자를 사용하여 다양한 표현이 가능
- 조건 전달 시 비교 대상의 데이터 타입이 일치하는 것이 좋음
연산자 종류설명
연산자 종류 | 설명 |
= | 같다 |
!=, <> | 같지 않다 |
> | 크다 |
>= | 크거나 같다 |
< | 작다 |
<= | 작거나 같다 |
BETWEEN a AND b | A와 B사이에 있는 범위 값을 모두 검색 |
IN(a,b,c) | A이거나 B이거나 C인 조건을 검색 |
LIKE | 특정 패턴을 가지고 있는 조건을 검색 |
Is NULL / Is NOT NULL | Null 값을 검색 / Null 이 아닌 값을 검색 |
A AND B | A조건과 B 조건을 모두 만족하는 값만 검색 |
A OR B | A조건이나 B조건 중 한가지라도 만족하는 값을 검색 |
NOT A | A가 아닌 모드 조건을 검색 |
문법
SELECT * | 컬럼명 | 표현식
FROM 테이블명 또는 뷰명
WHERE 조회할 데이터 조건
※ 문자나 날짜 상수 표현 시 반드시 홑따옴표 사용 (다른 절에서도 동일 적용)
※ Oracle은 문자 상수의 경우 대소문자를 구분
※ MSSQL은 기본적으로 문자상수의 대소문자를 구분하지 X
ex) 이름이 SMITH인 직원 조회
SELECT EMPNO,ENAME,SAL
FROM EMP
WHERE ENAME = 'SMITH';
ex) SAL이 1500 이상인 사원 정보 조회
SELECT EMPNO,ENAME,SAL
FROM EMP
WHERE SAL >= 1500;
ex) COMM 값이 NULL 인 직원 정보 출력
SELECT EMPNO,ENAME,SAL,COMM
FROM EMP
WHERE COMM IS NULL;
ex) 여러 조건 전달 - AND 연산자 사용 (DEPTNO가 10번이면서 SAL이 2000 이상인 직원 출력)
SELECT ENPNO,ENAME,SAL,COMM,DEPTNO
FROM EMP
WHERE DEPTNO = 10
AND SAL >= 2000;
IN 연산자
- 포함연산자로 여러 상수와 일치하는 조건 전달 시 사용
- 상수를 괄호로 묶어서 동시에 전달(문자와 날짜 상수의 경우 반드시 홑따옴표와 함께)
ex) SMITH와 SCOTT의 직원 정보 출력
SELECT EMPNO,ENAME,SAL,COMM,DEPTNO
FROM EMP
WHERE ENAME = 'SMITH'
OR ENAME = 'SCOTT';
- ENAME이 반복돼야 하는 불편함 있음 → IN 연산자 사용
SELECT EMPNO,ENAME,SAL,COMM,DEPTNO
FROM EMP
WHERE ENAME IN ('SMITH', 'SCOTT')
BETWEEN A AND B 연산
- A보다 크거나 같고 B 보다 작거나 같은 조건 만족
- A와 B에는 범위로 묶을 상수값 전달(문자,숫자,날짜 모두 전달 가능)
- 반드시 A가 B보다 작아야 함 (반대로 작성시 아무것도 출력되지 X)
EX) SAL이 2000 이상, 3000 이하인 직원 정보 출력
SELECT EMPNO,ENAME,SAL,COMM,DEPTNO
FROM EMP
WHERE SAL >= 2000,
AND SAL <= 3000;
BETWEEN 적용
LIKE 연산자
- 정확하게 일치하지 않아도 되는 패턴 조건 전달 시 사용
- %와 _와 함께 사용됨
- %: 자리수 제한 없는 모든이라는 의미
- _: _하나 당 한자리수를 의미하며 모든 값을 표현함
- EX) LIKE 연산자
- ENAME LIKE ‘S%’: 이름이 S로 시작하는
- ENAME LIKE ‘%S%’: 이름에 S를 포함하는
- ENAME LIKE ‘%S’: 이름이 S로 끝나는
- ENAME LIKE ‘_S%’: 이름의 두 번째 글자가 S인(맨 앞이 _인것 주의! %이면 자리수 상관없이 S를 포함하기만 하면 됨)
- ENAME LIKE ‘__S__’: 이름의 가운데 글자가 S이며 이름의 길이가 5글자인
NOT 연산자
- 조건 결과의 반대집함. 즉,여집합을 출력하는 연산자
- NOT 뒤에 오는 연산 결과의 반대 집합 출력
- 주로 NOT IN, NOT BETWEEN A AND B, NOT LIKE, NOT NULL 로 사용
EX) NOT 연산자 사용 (1000이상 3000이하의 반대 집합 → 1000 미만 또는, 3000 초과)
SELECT EMPNO,ENAME,SAL,COMM,DEPTNO
FROM EMP
WHERE SAL NOT BETWEEN 1000 AND 3000;
반응형
'스터디 > SQL' 카테고리의 다른 글
[정리노트] SQLD 2024년 개정판 - HAVING (46) | 2024.08.21 |
---|---|
[정리노트] SQLD 개정판 - GROUP BY (4) | 2024.08.21 |
[정리노트] SQLD 2024년 개정판 - 함수 (49) | 2024.08.20 |
[정리노트] SQLD 2024년 개정판 - SELECT (FROM 포함) (45) | 2024.08.20 |
[정리노트] SQLD 2024년 개정판 - 관계형 데이터베이스 개요 (41) | 2024.08.19 |