티스토리 뷰

반응형

안녕하세요!

오늘은 SQL의 다양한 연산자에 대해서 공부해보도록 해요!


아직 Select, From, Where 절 사용이 미숙하시다면 아래 글들을 참고해주세요!

[SQL] SELECT, FROM 으로 데이터 조회하기  <- 이동




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 캠퍼스 머신러닝기반의 빅데이터분석 양성과정

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday