<11, 12>
[관계 연산자 : AND, OR]
--1) 20번 부서원 중에 급여가 2000이상인 사원을 검색하세요
SELECT *
FROM emp
WHERE dno = '20'
AND sal >= 2000;
--2) 30번 부서원 중에 급여가 2000이상이고 개발 업무를 담당하는
-- 사원을 검색하세요
SELECT *
FROM emp
WHERE dno='30'
AND sal >= 2000
AND job='개발';
--3) 관계 연산자 우선순위
NOT > AND > OR
SELECT *
FROM emp
WHERE dno='10' OR sal > 1600 AND comm > 600;
SELECT *
FROM emp
WHERE (dno='10' OR sal > 1600) AND comm > 600;
[LIKE 연산자]
; a. 문자열 검색시 사용
b. '_' : 반드시 한개의 문자를 대체
'%' : 문자열을 대체(문자가 없는 경우도 포함)
c.
LIKE '경%' => '경'으로 시작하는 모든 문자열
경, 경제, 경영학과
LIKE '%과' => '과'로 끝나는 모든 문자열
과, 다과, 화학과, 물리학과
LIKE '%김%' => '김'이란 글자가 들어간 문자열
김, 김씨, 돌김, 되새김질
LIKE '화_' => '화'로 시작하는 두 글자 단어
화학, 화약, 화장
LIKE '__화' => '화'로 끝나는 세글자 단어
무궁화, 해당화, 운동화, 들국화
LIKE '_동_' => '동'이 가운데 들어간 세글자 단어
원동기, 전동차
--4) 김씨 성을 가진 사원을 검색하세요
SELECT *
FROM emp
WHERE ename LIKE '김%';
--5) 이름이 '하늘'인 사원
SELECT *
FROM emp
WHERE ename LIKE '%하늘';
6) 성과 이름이 각각 한 글자인 사원을 검색하세요
SELECT *
FROM emp
WHERE ename LIKE '__';
연습문제
--1) 유공과와 생물과, 식영과 학생을 검색하라
SELECT * FROM student;
SELECT *
FROM student
WHERE major='화학'
OR major='생물'
OR major='식영';
--2) 화학과가 아닌 학생중에 1학년 학생을 검색하라
SELECT *
FROM student
WHERE major != '화학'
AND syear = '1';
--3) 물리학과 3학년 학생을 검색하라
SELECT *
FROM student
WHERE major ='물리'
AND syear ='3';
--4) 평점이 2.0에서 3.0사이인 학생을 검색하라
SELECT *
FROM student
WHERE 2.0 <= avr
AND avr <= 3.0
ORDER BY major, avr;
--5) 교수가 지정되지 않은 과목중에 학점이 3학점인 과목을 검색하라
select * from course ;
SELECT *
FROM course
WHERE pno IS NULL
AND st_num='3';
--6) 화학과 관련된 과목중 평점이 2학점 이하인 과목을 검색하라
SELECT *
FROM course
WHERE cname LIKE '%화학%'
AND st_num <= '2';
--7) 화학과 정교수를 검색하라
SELECT *
FROM professor
WHERE orders= '정교수'
AND section ='화학';
--8) 물리학과 학생중에 성이 사마씨인 학생을 검색하라
SELECT *
FROM student
WHERE major = '물리'
AND sname LIKE '사마%';
--9) 부임일이 1995년 이전인 정교수를 검색하라
SELECT *
FROM professor
WHERE orders = '정교수'
AND hiredate < '1995.01.01';
--10) 성과 이름이 각각 1글자인 교수를 검색하라
SELECT *
FROM professor
WHERE pname LIKE '__';
<13, 14>
[BETWEEN 연산자]
--1)급여가 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 BETWEEN 2000 AND 1000; -- -> 오류. 작은 조건이 반드시 먼저 나와야 한다.
--3)10, 20번 부서 사원
SELECT *
FROM emp
WHERE dno BETWEEN '10' AND '20';
SELECT *
FROM emp
WHERE dno BETWEEN '10' AND '20'; -- = (dno>='10' AND dno <= '20';) 그래서 정확하지x
--in연산자가 더 자연스러움
--4) 1992년에서 1996년 사이에 입사한 사원을 검색하시오
--'1992/01/01' ==? '1992/01/01 00:00:00'
--'1996/12/31' ==? '1996/12/31 00:00:00'
--만약 1996년 오전 11시에 입사한 사람은 제외됨.
SELECT * FROM emp;
--시/분/초를 비교할 수 있는 포맷으로 변경한다
ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS'; --꼭 엔터로 set을 해 줘야함
SELECT *
FROM emp
WHERE hdate BETWEEN '1992/01/01' AND '1996/12/31'
ORDER BY hdate;
SELECT *
FROM emp
WHERE hdate BETWEEN '1992/01/01:00:00:00'
AND '1996/12/31:23:59:59'
ORDER BY hdate;
[IN 연산자]
--5) 10, 20번 부서 사원
SELECT *
FROM emp
WHERE dno IN ('10', '20')
ORDER BY dno;
--6) 개발이나 관리 업무를 담당하는 사원
SELECT *
FROM emp
WHERE job IN ('개발', '회계')
ORDER BY job;
연습문제
--1) 평점이 3.0에서 4.0사이의 학생을 검색하라
SELECT *
FROM student
WHERE avr BETWEEN 3.0 AND 4.0
ORDER BY avr;
--2) 1994년에서 1995년까지 부임한 교수의 명단을 검색하라
ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS';
SELECT *
FROM professor
WHERE hiredate BETWEEN '1994/01/01:00:00:00'
AND '1995/12/31:23:59:59'
ORDER BY hiredate;
--3) 화학과와 물리학과, 생물학과 학생을 검색하라
SELECT *
FROM student
WHERE major IN ('화학', '물리', '생물');
--4) 정교수와 조교수를 검색하라
SELECT *
FROM professor
WHERE orders IN ('정교수', '조교수')
--oders=정교수 OR orders= 조교수
ORDER BY orders;
--5) 학점수가 1학점, 2학점인 과목을 검색하라
SELECT * FROM course;
SELECT *
FROM course
WHERE st_num IN ('1', '2');
--6) 1, 2학년 학생 중에 평점이 2.0에서 3.0사이인 학생을 검색하라
SELECT *
FROM student
WHERE syear IN ('1', '2')
AND avr BETWEEN '2.0' AND '3.0'
ORDER BY syear, avr;
--7) 화학, 물리학과 학생 중 1, 2 학년 학생을 성적순으로 검색하라
SELECT *
FROM student
WHERE major IN ('화학', '물리')
AND syear IN ('1', '2')
ORDER BY major, syear, avr DESC;
'DB > Oracle SQL Developer' 카테고리의 다른 글
<19, 20> Natural Join / Using Join (0) | 2020.12.02 |
---|---|
<17, 18> 자기 참조 조인(Self Join ) / 외부 조인(Outer Join) (0) | 2020.12.02 |
<15, 16> JOIN : 등가조인, 비등가조인, 잘못된 조인(Cross Join) (0) | 2020.12.02 |
<1 ~ 10 > Oracle SQL 기초 ~ WHERE 절 (0) | 2020.12.02 |
Oracle SQL 1 (0) | 2020.11.27 |
댓글