프로그래머/SQL(Oracle)

SQL)Oracle_SELECT_관계연산자와 LIKE연산자

FourthWay 2023. 3. 13. 12:50
728x90
반응형

[관계 연산자 : AND, OR]

 

--1) 20번 부서원 중에 급여가 2000 이상인 사원을 검색하세요

 

SELECT *
 FROM emp;

SELECT *
 FROM emp;
 
SELECT *
 FROM emp
 WHERE dno='20';
 
SELECT *
 FROM emp
 WHERE sal >= 2000;
 
SELECT *
 FROM emp
 WHERE dno='20' AND sal >= 2000;

 

--2) 30번 부서원 중에 급여가 2000 이상이고 개발 업무를 담당하는 사원을 검색하세요

 

SELECT *
 FROM emp;
 
SELECT *
 FROM emp
 WHERE dno='30';
 
SELECT *
 FROM emp
 WHERE dno='30' AND sal >= 2000;
 
SELECT *
 FROM emp
 WHERE dno='30' AND sal >= 2000 AND job='개발';

 

 

--3) 관계 연산자 우선순위
NOT > AND > OR

 

--10번 부서이거나 월급이 1600초과하는 사 원 중에
--보너스가 600을 초과하는 사원
--=> 실제로는
--10번 부서이거나 또는 월급이 1600초과하면서 보너스가 600 초과하는 사원

 

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 '김%';

아래는 김퍼센트를 찾으므로 잘못되었다.


SELECT *
 FROM emp
 WHERE ename = '김%';

 

 

--5) 이름이 '하늘'인 사원

 

SELECT *
 FROM emp
 WHERE ename LIKE '%하늘';

 

6) 성과 이름이 각각 한 글자인 사원을 검색하세요

 

SELECT *
 FROM emp
 WHERE ename LIKE '__';

 

 

[Example]

--1) 유공과와 생물과, 식영과 학생을 검색하라

SELECT sname 이름, major 학과
 FROM student
 WHERE major IN('유공','생물','식영')
 ORDER BY major;

 

--2) 화학과가 아닌 학생중에 1학년 학생을 검색하라

SELECT sname 이름, major 학과,
 FROM student
 WHERE major NOT IN ('화학')
 AND syear IN(1);

--3) 물리학과 3학년 학생을 검색하라

SELECT sname 이름, major 학과
 FROM student
 WHERE major IN ('물리학')
 AND syear IN(3);


--4) 평점이 2.0에서 3.0사이인 학생을 검색하라

\SELECT sname 이름, avr 평점
FROM student
WHERE avr>=2.0 AND avr<=3.0;


--5) 교수가 지정되지 않은 과목중에 학점이 3학점인 과목을 검색하라

SELECT pno, cname 과목
FROM course
WHERE pno IS NULL AND ST_NUM = 3.0;


--6) 화학과 관련된 과목중 평점이 2학점 이하인 과목을 검색하라

SELECT cname
FROM course
WHERE cname LIKE'%화학'
AND st_NUM<=2;

--7) 화학과 정교수를 검색하라

SELECT section 학과, orders 지위
FROM professor
WHERE section IN('화학') AND orders IN('정교수');

--8) 물리학과 학생중에 성이 사마씨인 학생을 검색하라

SELECT sname 이름, major 학과
FROM student
WHERE sname LIKE('사마%') AND major IN('물리');

--9) 부임일이 1995년 이전인 정교수를 검색하라

SELECT pname 이름, orders 지위
FROM professor
WHERE orders IN('정교수') AND hiredate < '1995/01/01';

--10) 성과 이름이 각각 1글자인 교수를 검색하라

SELECT pname 이름
FROM professor
WHERE pname LIKE('__');

728x90
반응형