본문 바로가기
스터디/SQL

[정리노트] SQLD 2024년 개정판, WHERE

by 견습생L 2024. 8. 20.

 

 

[정리노트] 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;

 

 

반응형