본문 바로가기
프로그래머/SQL(Oracle)

SQL)Oracle_SELECT_ BEWEEN연산자/IN연산자

by FourthWay 2023. 3. 13.
728x90
반응형

 

[BETWEEN 연산자]

--1) 급여가 1000에서 2000이내인 사원
  -- 1000이상 2000이하

 

SELECT *
 FROM emp
 WHERE sal >= 1000 AND sal <= 2000;
 
SELECT *
 FROM emp
 WHERE sal BETWEEN 1000 AND 2000;

 

 

--2) 급여가 2000에서 1000사이 사원


--작은 조건이 반드시 먼저 나와야 한다
 -- 검색이 안된다

 

SELECT *
 FROM emp
 WHERE sal <= 2000 AND sal >= 1000; 

SELECT *
 FROM emp
 WHERE sal BETWEEN 2000 AND 1000;

 

 

--3) 10, 20번 부서 사원

 

SELECT *
 FROM emp
 WHERE dno BETWEEN '10' AND '20';
 
SELECT *
 FROM emp
 WHERE dno='10' OR dno='20';
 
SELECT *
 FROM emp
 WHERE dno IN ('10', '20');

 

 

--4) 1992년에서 1996년 사이에 입사한 사원을 검색하세요

 

'1992/01/01' => '1992/01/01:00:00:00'
'1996/12/31' => '1996/12/31:00:00:00'
만약 1996년 12월 31일 11시 20분에 30초에 입사한 사원은 검색에서 제외
되는 결과가 나타난다

 

SELECT *
 FROM emp
 WHERE hdate BETWEEN '1992/01/01' AND '1996/12/31';

 

 

--시분초를 비교할 수 있는 포맷으로 변경한다

 

SELECT * FROM emp;

ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS';

ALTER SESSION SET nls_date_format='YYYY/MM/DD';

ALTER SESSION SET nls_date_format='YY/MM/DD';

 

 

--정확한 비교를 위해 아래처럼 한다

 

ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS';

SELECT *
 FROM emp
 WHERE hdate BETWEEN '1992/01/01:00:00:00' AND '1996/12/31:23:59:59';

 

 

[IN 연산자]

--5) 10, 20번 부서 사원

 

SELECT *
 FROM emp
 WHERE dno IN ('10', '20');

 

--6) 개발이나 회계 업무를 담당하는 사원

 

SELECT *
 FROM emp
 WHERE job='개발' OR job='회계';

SELECT *
 FROM emp
 WHERE job IN ('개발', '회계');

 

 

[Example]

1) 평점이 3.0에서 4.0사이의 학생을 검색하라

SELECT sname 학생명, avr 평점
FROM student
WHERE avr>=3.0 AND avr<=4.0;


2) 1994년에서 1995년까지 부임한 교수의 명단을 검색하라

ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS';
SELECT pname 교수명, HIREDATE 부임일
FROM professor
--WHERE HIREDATE>='1994/01/01:00:00:00'AND HIREDATE<='1995/12/31:00:00:00';
WHERE HIREDATE BETWEEN'1994/01/01:00:00:00' AND '1995/12/31:00:00:00';

 

3) 화학과와 물리학과, 생물학과 학생을 검색하라

SELECT sname 이름, major 학과
FROM student
WHERE major IN('화학','물리','생물');

 

4) 정교수와 조교수를 검색하라

SELECT pname 교수명, orders 지위
FROM professor
WHERE orders IN('정교수','부교수')
ORDER BY orders DESC;

 

5) 학점수가 1학점, 2학점인 과목을 검색하라

SELECT ST_NUM
FROM course
--WHERE ST_NUM IN(1,2);
--WHERE ST_NUM IN(1) OR ST_NUM IN(2);
WHERE ST_NUM BETWEEN 1 AND 2;


6) 1, 2학년 학생 중에 평점이 2.0에서 3.0사이인 학생을 검색하라

SELECT sname 이름, syear 학년, avr 평점
FROM student
WHERE syear IN(1,2)
AND avr BETWEEN 2.0 AND 3.0;

 

7) 화학, 물리학과 학생 중 1, 2 학년 학생을 성적순으로 검색하라

SELECT sname 이름, syear 학년, major 학과, avr 평점
FROM student
WHERE syear IN(1,2)
AND major IN ('화학','물리')
ORDER BY avr DESC;

728x90
반응형