👨🏻💻 WHERE 조건문
SELECT 문을 사용할 때 WHERE 문을 사용하면 보다 더 복잡한 조건의 조회문을 조회할 수 있습니다.
SELECT 문에 WHERE 조건을 추가하면 조건을 만족하는 행만 조회할 수 있습니다.
조건절을 사용할 땐 비교연산자를 활용하여 조건을 추가합니다.
❓ 비교연산자
비교연산자는 등호, 부등호로 이루어진 연산자입니다.
연산자 | 설명 |
= | 같으면 TRUE (자바 진영의 언어는 == 가 비교이지만, SQL 문에서는 = 가 비교입니다.) |
<, >, <=, >= | 비교를 수행하고, 그 조건에 맞으면 TRUE |
!=, <>, ^= | 다르면 TRUE |
AND | 그리고 (앞의 조건과 뒤의 조건이 모두 일치해야 하는 조건으로 조회가 가능) |
OR | 또는 (앞의 조건과 뒤의 조건 둘 중 하나라도 일치하면 조회가 가능) |
NOT | 해당 조건이 아닌경우를 조건으로 조회가 가능 |
BETWEEN A AND B | 해당 컬럼의 값이 A이상 B이하인 조건으로 조회가 가능 |
컬럼명 IN (A, B, C, ...) | ()안의 내용에 값이 있다면 조회가 가능 |
❗ 비교연산자 예시
1. 모든 employees 들 중에서 salary 가 10000 을 넘는 사람만 조회
2. 모든 employees 들 중에서 salary 가 17000 인 사람을 조회
3. 모든 employees 들 중에서 first_name 컬럼만 조회하는데, first_name 이 알파벳 상으로 'P' 보다 큰 사람들을 조회
※ '>' 는 초과 기호인데 P는 왜 들어가있냐 라고 생각할 수 있습니다.
이 'P' 는 기본적으로 첫글자에서 초과 하는 경우를 비교하는 것이지만,
두번째 글자에서도, 세번째 글자에서도 서로 비교하는 것으로 생각해주셔야 합니다.
그렇게 생각해보면 'Pa'는 'P' 보다 큰 것으로 생각할 수 있으니 Pat, Peter,... 이러한 것들이 조회가 가능해집니다.
조회문에서 조건을 'Pb' 보다 큰 것으로 조회 하였더니 Pat은 조회가 되지 않는 것으로 확인이 되었습니다.
4. 고용일이 2008/01/01 자 이후인 사람들을 조회 (날짜/시간 타입의 조회가 가능)
5. 고용일이 2007/01/01 ~ 2009/12/31 인 사람들을 조회 (and 조건문 사용)
6. JOB_ID 가 'IT_PROG' 이거나 'ST_CLERK' 인 사람들을 조회 (or 연산자 사용)
7. not 연산자 사용
8. BETWEEN A AND B 조건
9. IN 조건
10. employee_id 가 2로 나눈 나머지가 0인 사람들을 조회
오라클에서는 % 연산을 하는 대신 mod 함수를 사용해서 나머지 연산을 수행합니다.
👨🏻💻 NULL 값을 비교하여 조회
null 값은 일반적인 비교연산자로 크기 비교가 불가능 합니다.
where 절에 조건을 넣어도 어떤 비교 연산자도 비교가 되지 않기 때문에 사용할 수 없습니다.
다만 null 인 값들을 조회하고 싶을 때 is NULL 을 사용하면 그 컬럼의 null 값이 있는 행들을 조회합니다.
null 이 아닌 행들만 조회하고 싶을 땐 NOT 비교 연산자를 사용하면 됩니다.
NOT 은 비교 연산자 이기 때문에 제일 앞에서 부정하는 조건을 넣거나
IS 와 NULL 사이에 NOT을 넣어서 부정하는 조건을 줄 수 있습니다.
👨🏻💻 Like 와 와일드카드 (%, _) 로 조회하기
데이터의 일부분으로 원하는 내용을 검색할 수 있고,
문자 타입과 날씨/시간 타입에 사용할 수 있습니다.
% | 길이 제한 없이 아무 문자나 와도 상관없는 자리 |
_ | 하나의 문자가 반드시 와야 하는 자리, 데이터 값을 제대로 비교하는 것이 아니라 보여지는 형태로 검색 |
- % 사용 예시
- _ (언더바) 사용 예시
아까 K% 로 조회했을 땐
이렇게 자릿수가 상관없이 조회개 됐었는데,
언더바를 사용한 쿼리문에서는 조회되는 행이 fisrt_name에서의 자릿수가 5자리로 결정난 모습을 보입니다.
👨🏻💻 Lower, Upper 사용
데이터를 조회할 땐 알파벳의 대문자와 소문자를 구분합니다.
이름의 e가 두 개 이상 포함된 사원들의 모든 정보를 조회하고 싶을 때
%e%e% 를 조회하면 대문자 E 가 제일 앞에 있는 사람은 조회가 되지 않습니다.
그래서 조회할 때 E와 e 의 모든 경우를 OR 연산자로 연결해주는 방법으로 조회를 합니다.
그런데 or 로 연산을 하게되면 조금 더 복잡한 조건을 달려고 할 때
일일히 손으로 여러번 or 로 연결해줘야 하니 쿼리문이 길어집니다.
E와 e 를 구분하고 싶지 않을 때 lower, upper 를 사용하는 것이 해결책이 될 수 있습니다.
lower 나 upper 은 우선 컬럼의 문자값을
전부 소문자로 변경하거나, 대문자로 변경하는 작업을
프로그램 내부에서 수행합니다.
그 다음 LIKE 조건을 읽어서 해당 조건을 만족하는 행들을 결과로 보여줍니다.
(upper도 결과가 똑같아 lower 의 결과만 올립니다.)
WHERE 조건문 정리(비교 연산자/NULL값 비교 조건 조회/LIKE/와일드카드/LOWER,UPPER)
'Java (국비지원 당시 공부했던 글) > SQL - Oracle' 카테고리의 다른 글
[SQL - Oracle] 2. SELECT문 정리(type 정리/컬럼명 바꾸기/산술연산자 계산/ 중복된 데이터 한 번만 조회) (0) | 2022.08.19 |
---|---|
[SQL - Oracle] 1. 데이터베이스란 (0) | 2022.05.30 |
[SQL - Oracle] Oracle 11g, sql Developer 설치, CLI, GUI 확인, sys(관리자) 계정 접속, HR(연습용)계정 접속 (0) | 2022.05.27 |