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%';
'Oracle > 이론 및 실습' 카테고리의 다른 글
SELECT문 연산식과 정렬 - 자료조회 (2) (4) | 2021.09.03 |
---|---|
기본 SELECT 과 ALIAS - 자료조회 (1) (0) | 2021.09.02 |