코딩항해기
[DBMS/Oracle] WHERE절과 연산자 본문
WHERE절
WHERE절은 SELECT문으로 데이터를 조회할 때 특정 조건을 기준으로 원하는 행을 출력할 수 있게 한다.
이때 연산자를 사용하면 더욱 세밀한 데이터 조회가 가능하다.
SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 >= 30;
-- 대상 컬럼의 수가 30보다 크거나 같은 데이터만 조회된다. (true 결과물만 출력)
-- 즉, WHERE절에는 조건식이 온다.
연산자
AND (+BETWEEN), OR (+ IN)
WHERE절에서 사용되는 연산자 중 AND, OR은 '그리고', '또는'의 역할로 사용된다.
여러 조건을 '그리고', '또는'으로 연결하고 싶을 때 사용한다.
AND (+BETWEEN)
SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 >= 30 AND 대상컬럼 <= 50;
-- 대상 컬럼의 수가 30 이상, 50 이하인 데이터만 조회된다.
이처럼 특정 범위를 조회할 때는 BETWEEN연산자를 사용할 수 있다.
SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 BETWEEN 30 AND 50;
--30과 50을 포함해 조회된다. 즉, 이상 이하의 조건이다.
OR (+ IN)
SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 = 30 OR 대상컬럼 = 40 OR 대상컬럼 = 50 ;
-- 대상 컬럼의 수가 30이거나, 40이거나, 50인 데이터만 조회된다.
여러 OR을 사용해 =연산자를 사용할 때는 IN 연산자를 활용하여 가독성을 높여줄 수 있다.
SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 IN (30, 40, 50) ;
산술 연산자
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
비교 연산자
A = B | A와 B가 같다. (다른 언어에서 사용되는 ==. ===과 다르게 SQL에서는 =을 사용한다.) |
A <> B | A와 B가 같지 않다. (!=으로도 조회된다.) |
A >= B | A가 B보다 크거나 같다. |
A <= B | A가 B보다 작거나 같다. |
A > B | A가 B보다 크다. |
A < B | A가 B보다 작다. |
집합 연산자
UNION | 위 아래의 SELECT문의 결과 값을 합집합으로 묶어주며, 중복값은 제외된다. |
UNION ALL | 위 아래의 SELECT문의 결과 값을 합집합으로 묶어주며, 중복값도 전부 보여준다. |
MINUS | 위 아래의 SELECT문의 결과 값을 차집합으로 묶어주며, 상단 테이블의 결과 값 중 존재하지 않는 데이터만 하단 테이블에서 조회된다. |
INTERSECT | 위 아래의 SELECT문의 결과 값을 차집합으로 묶어 조회된다. |
컬럼(가로)으로 합쳐지는 JOIN과 달리 로우(세로)로 합쳐진다.
그 때문에 두 SELECT문의 컬럼 개수와 자료형이 순서대로 일치해야 가능하다.
상단의 컬럼명은 상단의 위치한 SELECT문을 기준으로 보여진다.
SELECT 컬럼1, 컬럼2 FROM 테이블
UNION ALL
SELECT 컬럼1, 컬럼2 FROM 테이블;
--위 아래의 SELECT문의 결과 값을 세로로 합쳐 합집합으로 묶어주며, 중복값도 전부 보여준다.
그 외 연산자
IS NULL | IS NULL | NULL값은 비교연산자로 비교할 수 없기 때문에 IS NULL을 사용한다. = 연산자가 IS로 대체되고 != 연산자가 IS NOT으로 대체된다고 생각하면 된다. |
논리 부정 연산자 | NOT (조건) | 뒤에 오는 조건의 반대로, 조건식의 TRUE, FALSE가 서로 바뀌게 된다. |
LIKE 연산자 | LIKE '%N%' | 대상 컬럼의 값에 대문자 N이 포함되어있다면 조회된다. (%는 와일드 카드라고 한다.) |
와일드카드
_ | 어떤 값이든 상관없이 한 개의 문자 데이터를 의미한다. 자리 수를 표현할 때 사용된다. |
% | 길이와 상관없이 (문자가 없는 경우도 포함) 모든 문자데이터를 의미한다. %N 이라면 N으로 끝나는 모든 문자, N%이라면 N으로 시작하는 모든 문자, %N%이라면 N을 포함하고 있는 모든 문자가 된다. |
'DBMS > Oracle' 카테고리의 다른 글
[DBMS/Oracle] 서브쿼리 (0) | 2024.07.30 |
---|---|
[DBMS/Oracle] 오라클 함수 (문자, 숫자, 날짜, 형변환 등) (0) | 2024.07.29 |
[DBMS/Oracle] SELECT문 (+DISTINCT, AS, ORDER BY) (0) | 2024.07.27 |
[DBMS/Oracle] 데이터 모델링 (0) | 2024.07.08 |
[DBMS/Oracle] 식별자 (0) | 2024.07.08 |