본문 바로가기
Back-End/Database

[SQL] where 조건절

by 찐코딩 2021. 10. 4.

WHERE 조건절

사용자가 원하는 데이터만 조회할 경우에 사용 (모든 컬럼 데이터 조회할 때는 select 사용)
★ WHERE절은 FROM 테이블 이름 뒤에 기술해야 함.
형식) SELECT 컬럼명1, 컬럼명2.... FROM 테이블명 WHERE 조건식;


 1) = : 조건이 같은가?
 2) < : 조건이 작은가?
 3) <= : 조건이 작거나 같은가?

 4) > : 조건이 큰가?
 5) >== : 조건이 크거나 같은가?
 6) != : 조건이 같지 않은가?
 7) <> : 조건이 같지 않은가? !=와 같은 의미.
 8) BETWEEN A AND B : A와 B 사이에 있는가?
    주의) 작은 값을 앞에 기술하고 큰 값을 뒤에 기술해야 함.
 9) IN(LIST) : LIST 값 중에 어느 하나와 일치하는가?
 10) NOT BETWEEN A AND B : A와 B 사이에 있지 않은가?(A,B 값 포함하지 않음)
 11) NOT IN(LIST) : LIST 값과 일치하지 않는가?

 

-- emp 테이블에서 담당업무가 'MANAGER'인 사원의 모든 정보를 화면에 보여주세요
select *
from emp
where job = 'MANAGER';

JOB이 manager인 사람만 나타난 것을 볼 수 있다.

 

-- [문제1] emp 테이블에서 담당업무가 'CLERK'인 사람의 사번, 이름, 담당업무, 급여 출력
SELECT empno, ename, job, sal FROM emp WHERE job = 'CLERK';

 

 -- [문제2] emp 테이블에서 1982년 1월 1일 이후에 입사한 사원의
 -- 사번, 이름, 담당업무, 급여, 입사일자를 화면에 보여주세요.
 select empno, ename, job, sal, hiredate from emp where hiredate > '82/01/01';

 

 -- [문제3] emp 테이블에서 급여가 1300 ~ 1500 사이인 사원의
 -- 이름과 담당업무, 급여, 부서번호를 화면에 보여주세요.
 select ename, job, sal, deptno from emp where sal >= 1300 and sal<=1500;	--방법 1
 select ename, job, sal, deptno from emp where sal between 1300 and 1500;	--방법 2

 

 -- [문제4] emp 테이블에서 사번이 7902, 7788, 7566인 사원의
 -- 사번, 이름, 담당업무를 화면에 보여주세요.
 select empno, ename, job from emp where empno in (7902, 7788, 7566);

 

 -- emp 테이블에서 업무가 salesman과 clerk인 직원의 이름, 업무, 보너스를 화면에 보여주시오
 select ename, job, comm from emp where job in ('SALESMAN','CLERK');

보면 이렇게 null과 0을 가진 값도 필터링 없이 바로 나타난다.

null 값과 0을 제외한 결과만 보고싶다면 아래처럼 하면 된다.

 

-- 이렇게 출력할 경우 null값만 제외하고 나타남.(0은 나타남)
select ename, job, comm from emp 
where job in ('SALESMAN','CLERK') 
and comm is not null; 

-- 이렇게 출력하면 null, 0값 제외하고 출력
select ename, job, comm from emp 
where job in ('SALESMAN','CLERK') 
and comm is not null and comm!=0;

 

댓글