
- 사용자가 원하는 데이터를 조회할 때 사용하는 것이 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 |
댓글