본문 바로가기

별걸다하는 IT/데이터베이스 Database

[오라클 MySQL 기초] BETWEEN, NOT BETWEEN 쿼리 결과 범위 조회하는 법, 비트윈사용법

반응형

[데이터베이스 목차]

안녕하세요 여러분 양햄찌 블로그 주인장입니다.

오늘은 아무 생각없이 포스팅을 쓰기 위해... 초보자를 위해 아주 기본적인 쿼리조회 방법에 대해 포스팅해보려고 해요. 

오늘 포스팅 주인공은 BETWEEN입니당. 아주 간단한 포스팅이 될거예요.

BETWEEN 사용법

BETWEEN은 뜻에서 바로 체감할 수 있듯이, 특정 값의 범위를 조건으로 결과를 조회하고 싶을 경우 사용합니다.

아주 간단한 문법이죠? 

값1부터 값2까지 범위에는 값1 값2 모두 포함되어있습니다.

값1 ≤ 조건 ≤ 값2 라는거죠~ 

BETWEEN문법은 또 다른 SQL문법으로, 'SELECT * FROM [테이블명] WHERE 값1 <= 컬럼명 AND 컬럼명 <값2'로 적을 수 있습니다. 똑같아요

이렇게 BETWEEN과 NOT을 같이 이용할 수도 있습니다.

간단하게 사용예시 보고 마칠게요~

사용 예시

■ 숫자 범위 검색

검색조건: employees테이블에서 employee_id 가 150과 155 범위에 있는 결과들을 추출해줘!

select *
from employees
where employee_id between 150 and 155; 

EMPLOYEE_ID 타입은 NUMBER입니다. 위와 같이 쿼리를 짤 수 있겠죠?

150과 155까지 결과가 조회된 것을 확인할 수 있어요.

 

■ 날짜 범위 검색

검색조건: 01년 01월 01일부터 02년 12월 31일까지 입사한 사원들을 추출하시오 

select *
from employees
where hire_date BETWEEN TO_DATE('010101', 'YYMMDD') AND TO_DATE('021231','YYMMDD');

이번에 검색 조건으로 사용해본 타입은 DATE타입입니다.

DATE타입으로 저장되어있는 값의 날짜비교를 위해 TO_DATE함수를사용해줬어요.

총 8개의 데이터가 뽑혔네요.

SELECT last_name, job_id, hire_date
FROM employees 
WHERE hire_date between DATE '2007-02-20' and DATE '2007-05-01'
ORDER BY hire_date;

TO_DATE가 너무 기니 또는 간단하게 요렇게도 조회할 수 있겠죠?

'2007-02-20일과 2007-05-01사이에 입사한 직원들의 이름과 직무, 그리고 입사일을 출력하라' 쿼리입니다.

 

■ 문자 범위 검색

문자데이터 또한 숫자문자열로 들어가 있다면 BETWEEN으로 검색할 수 있습니다. 다만 자릿수가 동일해야하고 데이터마다 자릿수가 다르다면 TO_NUMBER로 형변환시켜준다음에 비교를 진행해야해요.

검색조건: 폰번호 시작번호 3자리가 500~600 범위에 속하지 않는 직원 번호를 추출해라

select *
from employees
WHERE SUBSTR(PHONE_NUMBER, 1, 3) NOT BETWEEN '500' and '600';

여기서 PHONE_NUMBER는 VARCHAR2의 타입을 가지고 있습니다.

590.423.4569이런식으로 저장된 레코드도 있고 011.44.1346.329~ 이런식으로 저장되어있는 번호도 있어요. 

SUBSTR로 첫 세자리를 추출해 길이를 고정했기 때문에 그냥 BETWEEN AND로 비교했습니다. 그런데 조건이 '않는!' 이니까 NOT을 붙여줬습니다.

※ 연습문제

1. 다음 중 ... WHERE seq BETWEEN A AND B를 논리연산자로 잘 표시한 것은?

① seq > A AND seq < B

seq >= A AND seq < B

seq >= A AND seq <= B

seq > A AND seq < B

답: 3번 

 

오늘은 초간단 포스팅이었어요~!

그럼 다들 좋은하루 되세요~!!

반응형