티스토리 뷰
안녕하세요!
오늘은 SQL의 다양한 연산자에 대해서 공부해보도록 해요!
아직 Select, From, Where 절 사용이 미숙하시다면 아래 글들을 참고해주세요!
3. 다양한 연산자
SQL에는 다양한 연산자가 있는데요,
여러 SQL문을 통해 알아보아요!
select ENAME, SAL, SAL*1.1
from EMP;
=> emp테이블에서 현재 직원의 10%인상된 급여를 출력
select ENAME, SAL, SAL*1.1
from EMP
where SAL*1.1 >= 1000;
=> 10%인상된 급여가 1000만원 이상인 직원의 모든 정보 출력
연산자를 이용하여 출력하고싶다면 select문에,
연산자를 이용하여 조건을 검색하고싶다면 where절에 사용하면 되겠죠?
select *
from EMP
where SAL >= 1000
and SAL <= 2000;
=> emp 테이블에서 급여가 1000이상 2000이하인 직원의 정보 출력
이 SQL문은 똑같은 결과, 똑같은 성능으로 간단하게 작성할 수 있어요.
---------------------------------------------------------------------------------
1. and에 대한 축약형, between and 연산자
select *
from EMP
where SAL between 1000 and 2000;
=> emp 테이블에서 급여가 1000이상 2000이하인 직원의 정보 출력
여기서 not을 사용해주면 부정의 의미를 갖게 되요.
select *
from EMP
where SAL not between 1000 and 2000;
=> emp 테이블에서 급여가 1000이상 2000이하가 아닌 직원의 정보 출력
select *
from EMP
where DEPTNO = 10
or DEPTNO = 30;
=> emp 테이블에서 부서번호(DEPTNO)가 10번 혹은 30번인 직원의 정보 출력
이 SQL문도 간단하게 작성할 수가 있는데요.
---------------------------------------------------------------------------------
2. or에 대한 축약형, in 연산자
select *
from EMP
where DEPTNO in (10,30);
=> emp 테이블에서 부서번호(DEPTNO)가 10번 혹은 30번인 직원의 정보 출력
select *
from EMP
where DEPTNO not in (10,30);
=>emp 테이블에서 부서번호(DEPTNO)가 10번 혹은 30번이 아닌 직원의 정보 출력
---------------------------------------------------------------------------------
3. like 연산자, %(퍼센트), _(언더바)
like 연산자 같은 경우는 이름이 특정 문자로 시작하는 직원의 정보를 추출할 때 쓰여요.
여기서 %(퍼센트)는 글자수 제한이 없고, _(언터바)는 언더바 하나당 한 글자를 의미합니다.
SQL문을 작성해보면
select *
from EMP
where ENAME like 'S%';
=> S로 시작하고 그 뒤에 어떤 문자가 몇 자 나와도 상관없는 이름을 가진 직원
select *
from EMP
where ENAME like 'S_';
=> emp 테이블에서 이름이 S로 시작하고 이후 무조건 하나의 문자,
즉, 이름이 S로 시작하고 이름이 2자인 직원 모두 출력
select *
from EMP
where ENAME like '%S';
=> emp테이블에서 이름이 s로 끝나는 직원의 정보 출력
select *
from EMP
where ENAME like '%S%';
=> emp테이블에서 이름에 s를 포함하는 직원의 정보 출력
select *
from STUDENT
where JUMIN like '______1%';
=> student 테이블에서 주민등록번호(JUMIN) column을 사용하여 남학생의 정보만 모두 출력
(주민등록번호의 7번째 자리가 1인 학생 출력)
이것은 추후에 substr이라는 함수를 배우면 더 쉽게 작성할 수 있어요!
-----------------------------------------------------------------------------
Like 함수 사용 시 주의할 점이 있는데요.
만일 EMP 테이블에서 1982년도에 고용된 직원들의 모든 정보를 조회한다고 해봅시다!
select *
from EMP
where HIREDATE like '1982%';
보통 위와 같은 SQL문을 떠올리셨을 것입니다. 하지만... 1982%로 사용할 때 조회가 안 될 겁니다..
조회가 안 되는 이유는!!
원본 데이터의 날짜 포맷은 yy/mm/dd 형태이지만 Orange Tool 에서는 날짜 표현 형식 포맷이 yyyy/mm/dd로 지정되어있어서 그렇답니다. 그렇기때문에 원본에 저장되어있는 포맷 형식에 맞게 적용하는것이 중요해요!!
oracle의 날짜 포맷은 yy/mm/dd 형식으로 되어있으므로 98%로 like를 해주어야 합니다.
select *
from EMP
where HIREDATE like '82%';
DBMS마다 deafult format 형식이 다르기 때문에 먼저 확인 후 날짜 데이터를 사용하는게 좋겠죠?
나중에는 이러한 원본 날짜 데이터 포맷 형식에 제한받지않고 데이터를 조회하는 방법이 있다니 조금만 기다려봅시다.. 날짜 함수를 배우면 정말 유용하대요~!
---------------------------------------------------------------------------------
4) is null
is null은 테이블에서 column의 값이 null인 데이터를 조회할 때 사용해요.
null은 문법상 '=' 로 비교가 불가능해서 is를 사용하여 비교합니다.
select *
from EMP
where EMPNO is null;
=> emp 테이블에서 empno의 값이 null인 데이터 조회
select *
from EMP
where EMPNO is not null;
=> emp 테이블에서 empno의 값이 null이 아닌 데이터 조회
조금 응용해보면
select *
from EMP
where COMM is null;
=> emp 테이블에서 보너스를 확정받지 못한 직원 조회
---------------------------------------------------------------------------------
여기까지가 SQL문의 다양한 연산자였습니다 !!
참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정
'SQL' 카테고리의 다른 글
[SQL] 숫자 함수 나머지, 최대 최소 근접값 - MOD, FLOOR, CEIL (0) | 2018.12.18 |
---|---|
[SQL] 숫자 함수 반올림, 버림 - ROUND, TRUNC (0) | 2018.12.18 |
[SQL] WHERE 로 원하는 조건에 해당하는 데이터 조회하기 (0) | 2018.12.17 |
[SQL] SELECT, FROM 으로 데이터 조회하기 (1) | 2018.12.17 |
[SQL] 문자 함수로 데이터 가지고 놀기 - ORDER BY, INITCAP, LOWER, UPPER, LENGTH, LENGTHB, SUBSTR, INSTR, LPAD, RPAD, TRIM, REPLACE, TRANSLATE (1) | 2018.12.15 |