BETWEEN ~ AND 예제
Q. 커미션(COMM)이 300 혹은 500 혹은 1400인 사원이 있는지 검색하시오
SELECT * FROM emp WHERE comm = 300 OR comm = 500 OR comm = 1400;
SELECT * FROM emp WHERE comm IN(300,500,1400);
Q. 사원번호가 7521도 아니고 7654도 아니고 7844도 아닌 사원을 검색하는
2가지 쿼리문을 작성하시오.
SELECT * FROM emp WHERE empno <> 7521 AND empno != 7654 AND empno ^= 7844;
SELECT * FROM emp WHERE empno NOT IN(7521, 7654, 7844);
Q. 사원 이름이 FORD인 사원의 이름, 월급, 입사일을 출력하시오
SELECT ename, sal, hiredate FROM emp WHERE ename = 'FORD';
LIKE , 와일드카드 예제
Q. 이름의 마지막 글자가 'N'인 사원들을 출력하시오
SELECT * FROM emp WHERE ename LIKE '%N';
Q. 이름의 첫번째 글자가 'T'인 사원의 월급과 부서번호를 출력하시오
SELECT ename, sal, deptno FROM emp WHERE ename LIKE 'T%';
Q. 이름에 'A'를 갖고있는 사원들을 출력하시오
SELECT * FROM emp WHERE ename LIKE '%A%';
Q. 이름이 5글자인 사원을 출력하시오.
SELECT * FROM emp WHERE ename LIKE '_____';
Q. 이름의 세번째 글자가 'R'자이고 , 30번 부서에서 일하는 사원을 출력하시오.
SELECT * FROM emp WHERE ename LIKE '__R%%' AND deptno = 30;
Q. 입사일이 '81/04/02'인 사원의 월급을 500원 인상하시오
SELECT ename "이름" , sal "월급", sal + 500 "인상된 월급" FROM emp WHERE hiredate = '81/04/02';
SELECT * FROM emp WHERE ename LIKE '%_%'; = '%_%'가 와일드카드(만능문자)다.
SELECT * FROM emp WHERE ename LIKE '%\%'; = \뒤에오는 문자를 찾겠다는 뜻.
NULL 예제
Q. 커미션(COMM)을 받지 않는 사원들을 출력하시오.
SELECT * FROM emp WHERE comm IS NULL;
Q. 상관이 없는 사원을 출력하시오.
SELECT * FROM emp WHERE mgr IS NULL;
Concatenation / DISTINCT 예제
Q. emp 테이블에서 직급이 중복되어 출력되지 않은 결과를 출력하시오.
SELECT DISTINCT job FROM emp;
Q. emp 테이블에서 보너스를 받는 사원중에 500과 1400이 아닌
사원들의 이름과 보너스 금액을 출력하시오.
SELECT ename, comm FROM emp WHERE NOT comm IN(500, 1400);
SELECT ename, comm FROM emp WHERE comm IS NOT NULL AND comm NOT IN(500, 1400);
(comm IS NOT NULL AND를 빼도 연산이 가능하다.)
NULL값인 사람들도 나오게 하고 싶다면? NVL 값을 써주도록 한다.
SELECT ename, comm FROM emp WHERE NVL(comm,0) NOT IN(500, 1400);
Q. 30번 부서의 사원들의 연봉을 20% 인상한 후,
이름, 부서번호, 월급, 인상된 연봉 순으로 출력하시오.
SELECT ename "이름" , deptno "부서번호" , sal"월급" , sal*12*1.2 "인상된 연봉" FROM emp WHERE deptno = 30;
// "" 안써도 됨! ""는 공백이 있을 때 반드시 써야하는 것이고, 공백이 없다면 ""를 안써도 된다.