본문 바로가기
CS/DataBase

WHERE 조건 절을 활용한 데이터 검색

by gamxong 2023. 3. 14.

  • 사용자가 원하는 데이터를 조회할 때 사용하는 것이 WHERE 절
  • ‘어디에서 어떻게’ 데이터를 가져올지 정함

 

SELECT 열 이름
FROM 테이블 이름
WHERE 원하는 조건;

논리순서
1. 참조하려는 테이블로부터(FROM)
2. 해당 조건식으로(WHERE)
3. 열을 선택(SELECT)하여 조회

연산자 종류

비교 연산자 : 조건을 비교 ( =,<,> 등)

SQL 연산자 : 조건 비교를 확장 ( BETWEEN, IN 등)

논리 연산자 : 조건 논리를 연결 ( AND, OR 등)

 

 

1. 비교연산자 : 비교 조회 조건 주기

비교연산자 종류

  • = : 같다
  • <>(!=) : 같지 않다.
  • 이 외는 동일

예시 1 : employee_id가 100인 직원 정보 출력

SELECT *
FROM employees
WHERE employee_id = 100;

예시 2 : employees 테이블에서 first_name이 David인 직원 정보 출력

SELECT *
FROM employees
WHERE first_name = 'David';  // 대소문자 구분

 

2. SQL연산자 : 조회 조건 확장하기

SQL 연산자의 종류

  • BETWEEN a AND b : a와 b 사이에 값이 있다. (a,b 포함)
  • IN(list) : list 중 어느 값이라도 일치한다.
  • LIKE ‘비교 문자’ : 비교 문자와 형태가 일치한다
  • IS NULL : null 값을 갖는다.

BETWEEN 연산자

예시 1 : employees 테이블에서 salary가 10,000 이상 20,000 이하인 직원 정보 출력

SELECT *
FROM employees
WHERE salary BETWEEN 10000 AND 20000;

IN 연산자 : “=”연산자와 달리 데이터 값을 여러 개 지정 가능

예시 2 : employees 테이블에서 salary가 10,000 17,000 24,000인 직원 정보 출력

SELECT *
FROM employees
WHERE salary IN(10000,17000,20000);

LIKE 연산자

  • 조회 조건 값이 명확하지 않을 때 사용
  • %와 _ 같은 기호 연산자와 함께 사용
  • 조건에는 문자나 숫자를 포함할 수 있음
  • % : 모든 문자
  • _ : 한 글자

예시 3 : employees 테이블에서 job_id 값이 AD를 포함하는 모든 데이터를 조회

SELECT *
FROM employees
WHERE job_id LIKE 'AD%';
  • %는 ‘~라는’ 의미로 이해해보자

예시 4 : employees 테이블에서 AD를 포함하면서 AD 뒤에 따라오는 문자열이 3자리인 데이터 값을 갖는 직원 정보 조회

SELECT *
FROM employees
WHERE job_id LIKE 'AD___';  // "_" 3번함
💡 웹 게시판에서 ‘제목으로’, ‘내용으로’ 하는 검색 방법이 이 원리이다.

 

IS NULL 연산자

  • 데이터 값이 null인 경우를 조회하고자 할 때 사용

예시 5 : employees 테이블에서 manager_id가 null 값인 직원 정보 출력

SELECT *
FROM employees
WHERE manager_id IS NULL;

 

3. 논리 연산자 : 조건 논리를 계속 연결하기

  • 여러 조건을 논리적으로 연결할 때 사용

논리 연산자의 종류

  • AND, OR, NOT

AND

예시 : employees 테이블에서 salary가 4000을 초과하면서, job_id가 IT_PROG인 값을 조회

SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG';

OR

예시 : employees 테이블에서 salary가 4000을 초과하면서, job_id가 IT_PROG이거나 FI_ACCOUNT인 값을 조회

SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT';
💡 OR 연산자는 대용량 데이터베이스에서 조회 성능에 많은 영향을 줄 수 있으므로 주의!

 

부정 연산자의 종류

부정 비교

  • != : 같지 않다
  • <> : 같지 않다
  • NOT 열 이름 = : ~와 같지 않다.
  • NOT 열 이름 > : ~보다 크지 않다.

부정 SQL

  • NOT BETWEEN a AND b : a와 b 사이에 값이 없다.
  • NOT IN (list) : list 값과 일치하지 않는다.
  • IS NOT NULL : null 값을 갖지 않는다.

예시 : employees 테이블에서 employee_id가 105가 아닌 직원 조회

SELECT *
FROM employees
WHERE employee_id <> 105;

예시 : employees 테이블에서 employee_id가 null이 아닌 직원 조회

SELECT *
FROM employees
WHERE employee_id IS NOT NULL;

'CS > DataBase' 카테고리의 다른 글

[DB] 제 3 정규화 vs BCNF  (0) 2023.05.29
관계대수에서 assignment 과 rename의 차이?  (0) 2023.03.14
SQL 함수  (0) 2023.03.14
SELECT 문의 기본 문법  (0) 2023.03.14
SQL 용어 정리  (0) 2023.03.14

댓글