2020. 4. 30.

[Oracle] 5. where 절을 이용한 조건 검색 정리


조건 검색

SQL> select [distinct | all] 컬럼, 컬럼… from 테이블 where 조건 order by 컬럼 [asc/desc], 컬럼 [asc/desc]

예제 1. 다음 조건에 맞는 정보를 검색한다.

  • 사원 중에 급여가 4000이상인 사원의 명단
  • 이름이 '문시현' 사원의 정보
  • 10 부서 이외 부서 사원의 명단

SQL> select eno 사번, ename 이름, sal 급여 from emp where sal >=4000;


SQL> select * from emp where ename = '문시현';


SQL> select * from emp where dno !='10';


예제 2. 잘못된 조건 검색

SQL> select * from emp where dno = 10;


예제 3. 연봉이 30,000 이상인 사원의 이름을 검색한다.

SQL> select eno 사번, ename 이름, sal*12+nvl(comm,0) 년봉 from emp where sal*12+nvl(comm,0) >= 30000;


예제 4. 보너스가 200 이하인 사원을 검색한다.

SQL> select eno 사번, ename 이름, comm 보너스 from emp where comm <= 200;


SQL> select eno 사번, ename 이름, comm 보너스 from emp where nvl(comm,0) <=200;


예제 5. 입사일이 1996 이후인 사원의 정보를 검색한다.

SQL> alter session set nls_date_format='YY/MM/DD';


SQL> select * from emp where hdate >= '1996/01/01';


SQL> alter session set nls_date_format='YYYY/MM/DD';


SQL> select * from emp where hdate >= '1996/01/01';


널과 비교 연산

  • 널은 결정된 값이 아님으로 '=','<'등의 비교 연산자를 사용할 없다.
  • 널에 대한 직접적인 검색은 다음과 같이 특별한 연산자를 이용한다.
  • IS NULL : 널을 검색
  • IS NOT NULL : 널이 아닌 값을 검색한다.

예제 6. 보너스 컬럼이 널인 사원을 검색한다.

SQL> select * from emp where comm is null;


실습

 1. 화학과 학생을 검색한다.

select * from student where major ='화학';
# student 테이블의
# major 컬럼중 화학이 들어간
# 모든 정보 출력


 2. 평점이 2.0 미만인 학생을 검색한다.

select * from student where avr < 2.0;


 3. 권현 학생의 평점을 검색한다.

select * from student where sname='권현';


 4. 정교수의 명단을 검색한다.

select * from professor where orders='정교수';


 5. 화학과 소속 교수의 명단을 검색한다.

select * from professor where section ='화학';


 6. 송강 교수의 정보를 검색한다.

select * from professor where pname ='송강';


 7. 학년별로 화학과 학생의 성적을 검색한다.

select avr from student where major = '화학' order by syear;


 8. 2000 이전에 부임한 교수의 정보를 부임일순으로 검색한다.

select * from professor where hiredate < '20000101' order by hiredate;
# professor 테이블의
# hiredate 컬럼중 20000101 날짜보다 빠른
# 모든 정보를 출력하고
# hiredate 기준으로 정렬한다.


 9. 담당 교수가 없는 과목의 정보를 검색한다.

select * from course where pno is null;

#pno 컬럼이 널인것을 찾는다.


 10. 보너스가 급여의 10% 이상인 사원을 검색한다.

select * from emp where (sal*0.1) <= comm;







댓글 없음:

댓글 쓰기