조건을 통해 컬럼 내에 데이터를 제한
WHERE 절은 FROM 절 바로 뒤에 기술
조건의 대상은 컬럼, 연산자, 수식 등 가능
조건에 이용되는 비교 연산자 : =, <, >, <=, >=, !=, <>
널은 결정된 값이 아니므로 =, < 등의 비교 연산자 사용할 수 없다.
널에 대한 직접적인 검색은 특별한 연산자 사용.
--EXCERCISE1
--사원중에 급여가 4000 이상인 사원의 명단
--이름이 '문시현'인 사원의 정보
--10번 부서 이외 부서 사원의 명단
SELECT ENO 사번, ENAME 이름, SAL 급여
FROM EMP
WHERE SAL >= 4000;
SELECT * FROM EMP WHERE ENAME = '문시현';
SELECT * FROM EMP WHERE DNO != 10;
--EXCERCISE2
--잘못된 조건 검색
SELECT * FROM EMP WHERE DNO = 10;
DNO의 데이터타입은 문자열이므로 "10" 으로 써야되지만, 자동 형변환되어 실행은 됨.
--EXCERCISE3
--연봉이 30,000 이상인 사원의 이름을 검색
SELECT ENO 사번, ENAME 이름, SAL*1.1*12 + NVL(COMM,0) 연봉 FROM EMP WHERE SAL*1.1*12 + NVL(COMM,0) >= 30000 ORDER BY 연봉;
--EXCERCISE4
--보너스가 200 이하인 사원
SELECT ENO 사번, ENAME 이름, COMM 보너스
FROM EMP WHERE COMM <= 200; --COMM 이 NULL 값인 데이터는 검색되지 않음
SELECT ENO 사번, ENAME 이름, COMM 보너스
FROM EMP WHERE NVL(COMM, 0) <= 200; --NULL값을 0으로 취급해서 모두 검색됨
--EXCERCISE5
--입사일이 1996년 이후인 사원 정보 검색
ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD';
SELECT * FROM EMP WHERE HDATE >= '1996/01/01'; --날짜도 대소구분 가능!
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD'; --데이터타입 변경
SELECT * FROM EMP WHERE HDATE >='1996/01/01';
--EXCERCISE6
--보너스 컬럼이 널인 사원 검색
SELECT * FROM EMP WHERE COMM IS NULL;
SELECT COUNT(*) FROM EMP WHERE COMM IS NULL; --COUNT( ) : 행의 개수 카운팅