Oracle/이론 및 실습

SELECT문의 WHERE절과 비교연산자- 자료조회(3)

코생아 2021. 9. 4. 12:07
반응형

WHERE 

SELECT 문으로 데이터를 조회할때 조건을 추가하여 그 조건에 해당하는 데이터만 출력할때 사용합니다.

 

예를들어 모든 데이터 조회가 아닌 특정 컬럼 즉 '홍길동'이라는 이름을 가진 사람의 데이터만 조회하고 싶을때 사용합니다. (부서번호가 1번인 사원, 월급이 500 이상인 사원 등등) 

 

기본문법
SELECT [조회할 열이름] FROM [조회할 테이블 이름] WHERE [조건식];

아래는 EMP 테이블을 전체 조회했을때 결과이다.

이 결과에서 만약 ENAME 이 'KING'이라는 사원의 결과만 출력하고싶다면 아래 처럼 작성하면 된다.

SELECT * FROM EMP WHERE ENAME = 'KING';

 

AND, OR 연산자

WHERE절에서 여러개의 조건식을 지정하게 해줄 수 있는 논리연산자 입니다.

AND와 OR은 WHERE절에 추가적으로 조건을 추가한다는 개념으로 이해하시면 편하실꺼 같습니다.

 

EMP 테이블의 DEPTNO(부서번호)가 10번이고 직업이 'MANAGER'인 사원의 정보만 조회

SELECT * FROM EMP WHERE DEPTNO = 10 ADN JOB 'MANAGER';

이처럼 AND를 사용해 여러 개의 조건식을 사용할 수 있습니다. 

 

그리고 JOB 컬럼의 MANAGER, SALESMAN 등 데이터가 대문자로 들어가있기 때문에 조회하실때 대문자로 입력해주셔야 일치하는 행을 조회할 수 있습니다. 

 

비교연산자

비교연산자에는 대소 비교 연산자 즉 부등호와 같은 비교 연산자가 있습니다.

연산자 사용법 설명
> A > B  A 값이 B의 값을 초과하는 경우 참
>=  A >= B  A 값이 B의 값보다 이상이면 참
< A < B  A 값이 B의 값보다 미만이면 참
<=  A <= B  A 값이 B의 값보다 이하이면 참

등가 비교 연산자

연산자 사용법 설명
= A = B  A 값이 B 값과 같은 경우 참
!=  A != B  A 값이 B의 값과 다를경우 참
<> A <> B  A 값이 B의 값과 다를경우 참
^=  A ^= B  A 값이 B의 값과 다를경우 참

EMP 테이블의 사원중 1년 급여가 35000이상인 사원들만 조회

SELECT ENAME, SAL, SAL*12 AS 연봉 FROM EMP WHERE SAL*12 >= 35000;

 

논리 부정 연산자

논리 부정 연산자는 NOT입니다. 즉 단어 뜻 그대로 아닌 것. 을 생각하시면 됩니다.

 

EMP 테이블의 사원중  부서가 'MANAGER'가 아닌 사원들의 정보만 조회

SELECT * FROM EMP WHERE NOT JOB = 'MANAGER';

사실 NOT은 이러한 용도로는 자주 쓰이지 않습니다. WHERE 절의 NOT JOB 이 부분은 사실 WHERE JOB != 'MANAGER'와 같기 때문입니다. NOT은 보통 다음에 배울 BETWEEN, IN, IS NULL 과 같은 연산자에 추가적으로 사용되거나 OR, AND와 같이 조건식이 묶여있는 상황에서 반대값 결과를 얻고 싶을때 사용됩니다.

 

IN연산자

IN연산자를 사용하면 AND, OR을 여러번 사용하지 않아도 되는 장점이 있습니다. 아래 예제를 보시면 쉽게 이해하실 수 있습니다. 

 

EMP 테이블에서 사원의 부서중 CLERK, SALESMAN, MANAGER인 사원의 정보만 조회

SELECT * FROM EMP WHERE JOB = 'CLERK' OR JOB = 'SALESMAN' OR JOB = 'MANAGER';
SELECT * FROM EMP WHERE JOB IN('CLERK', 'SALESMAN', 'MANAGER');

두 쿼리는 같은 결과를 출력합니다.

IN 연산자는 추후 중첩 쿼리문을 사용할때 자주 쓰이는 부분으로 개념을 정확히 이해 하시는게 좋습니다.

 

BEETWEEN 연산자 

A 와 B 의 값 사이에 있는 정보를 조회할때 쓰이는 연산자 입니다. 

 

EMP 테이블의 사원 중 연봉이 20000만 이상 30000이하인 사원의 정보를 조회 

SELECT ENAME, SAL, SAL*12 AS 연봉  FROM EMP WHERE SAL*12 >= 20000 AND SAL*12 <= 30000;
SELECT ENAME, SAL, SAL*12 AS 연봉  FROM EMP WHERE SAL*12 BETWEEN 20000 AND 30000;

역시나 두 쿼리 모두 같은 결과를 출력합니다.

 

LIKE 연산자

이번 게시글의 마지막 연산자인 LIKE입니다. LIKE 연산자는 일부 문자열이 포함된 데이터를 조회할때 사용합니다.

 

포함된 문자열을 검색할때 와일드 카드를 사용하는데 와일드카드는 _ 와 %가 있습니다.

_는 한개의 문자를 의미하며 %는 길이와 상관없이 모든 문자를 의미합니다.

 

EMP테이블의 사원의 이름중 세번째 글자가 R인 사원의 정보를 조회

SELECT * FROM EMP WHERE ENAME LIKE '__R%';

__R% = 3번째 글자는 반드시 R이며 R 앞에는 2 문자가 반드시 와야한다. R 뒤에는 몇 문자가 와도 상관이 없다 라는 뜻입니다. 

 

EMP테이블의 사원 이름중 첫 글자가 A 로 시작하는 사원의 정보를 조회 

SELECT * FROM EMP WHERE ENAME LIKE 'A%';

반응형