티스토리 뷰

반응형

안녕하세요!

오늘은 SQL의 Where에 대해서 공부해보도록 해요!


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

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




2. WHERE   

    

먼저, where은 어디에, 어디로, 어디에서라는 뜻을 가지고 있죠?

sql에서는 원하는 조건에 해당하는 데이터를 조회하기 위해 사용되요.

 

select는 원하는 일부의 column(열)만 추출한다고 생각하면,

where은 원하는 일부의 row(행)만 추출해주겠죠?

 

작성은 select - from - where 순으로 작성해줘야해요.

 

다시 말해, where문은 where에서 적용한 조건에 만족하는 row만 추출해주는데, where절에 있는 조건으로 데이터를 얼마나 빨리 불러오는지가 sql 튜닝의 중요성이라고 합니다.

온라인 고객 이탈 원인 중에서도 데이터의 속도도 포함이 되는데 만일 온라인 은행 사이트에서 전년도 카드 사용내역을 보려고 정보를 검색했는데 10분이 지나도 검색이되지 않는다면.. 더 이상 이용을 하고싶지 않겠죠?!

 

where절을 활용해서 sql문을 작성해볼까요?!

 

select *

from STUDENT

where GRADE = 4;

=> student 테이블에서 학년이 4학년인 학생 전체 정보 출력

 

select *

from STUDENT

where HEIGHT >= 180;

=> student 테이블에서 키가 180 이상인 학생 전체 정보 출력

 

select *

from EMP

where ENAME = smith;

=> emp 테이블에서 smith라는 직원의 데이터만 조회

  여기서 잠깐! smith는 저장되어있는 데이터이므로 문자열화하여 작성해야합니다. 즉, smith가 문자열로 변경되어야 한다는 말이겠죠?!

 

select *

from EMP

where ENAME = 'smith';

하지만.. 그래도 출력이 되지 않죠? sql문법은 대,소문자를 구분하지 않지만이미 저장되어있는 데이터는 대,소문자를 구분하기 때문입니다. 실제 저장된 smith라는 데이터가 대문자이기 때문에 조건문도 대문자로 작성해주어야 합니다.

 

select *

 from EMP

where ENAME = 'SMITH';

너무 번거롭죠? 원본 데이터도 확인해야하고.. 그래서 원본의 데이터를 대소 구분없이 비교하는 방법도 준비했습니다. ename 컬럼의 모든 데이터를 소문자로 변경해주면 저장된 데이터가 대문자인지 소문자인지 몰라도 추출할 수 있겠죠?

 

select *

from EMP

where lower(ENAME) = 'smith';

 

원본 데이터와 lower 함수를 적용한 데이터를 비교해보세요.

select ENAME, lower(ENAME)

from EMP;

 

날짜도 조건절에 넣을 수 있는데, 대신 홑따움표(' ') 안에 사용해주어야 합니다. 

날짜도 대소비교가 가능하답니다!

select *

from EMP;

where HIREDATE = '1981/02/20';

 

select *

from EMP

where HIREDATE between '1982/01/01' and '1982/12/31';

 

약간의 TMI로 날짜 컬럼을 조건절에서 사용 시 원본 데이터가 어떤 형태로 저장되있던지 YYYY/MM/DD 형태로 사용해야 한다고 합니다! 날짜 형태에 관련해서 나중에 더 자세히 올릴게요!


+ n개의 행만 불러오는 방법 !

(대량의 데이터를 생각없이 불러왔다가 서버가 과부화 되어버리므로.. 중요합니다.)

select *

 from EMP

where rownum <= n  -- n개의 행만 불러오기 (=은 사용 불가)



참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정

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