[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;
'프로그래머 > SQL(Oracle)' 카테고리의 다른 글
SQL)Oracle_SELECT_자기참조조인/외부조인 (0) | 2023.03.13 |
---|---|
SQL)Oracle_SELECT_조인 (2) | 2023.03.13 |
SQL)Oracle_SELECT_관계연산자와 LIKE연산자 (2) | 2023.03.13 |
SQL)Oracle_SELECT_WHERE절 (6) | 2023.03.13 |
SQL)Oracle_SELECT_정렬과 묶음검색 (0) | 2023.03.13 |