특정 데이터를 뽑아낼 수 있도록 where라는 키워드를 통해 조건을 설정할 수 있다.


◆ DB 조건 설정 ( WHERE )

명령문 뒤에 where 문을 이용하여 특정 데이터를 조회, 삭제, 수정 등을 할 수 있다.

▶ 특정 데이터 조회

//baby 테이블에서 gender 값이 2 데이터들만 조회
select * from baby where gender='2';


▶ 특정 데이터 수정

//baby테이블의 gender값이 1 데이터들의 report null 초기화
update baby set report=null where gender='1';


▶ 특정 데이터 삭제

//baby테이블의 gender값이 2 데이터들을 삭제
delete from baby where gender='2';


◆ where문에서 사용할 수 있는 조건

▶ = (equal)

같은 데이터인지?

// gender값이 2 
where gender='2';


▶ != (not equal)

같지 않은 데이터인지?

// gender값이 2 아닌것
where gender!='2';


▶ is null , is not null

null인지 null이 아닌지?

// gender값이 null 
where gender is null;
// gender값이 null 아닌 
where gender is not null

gender=null 또는 gender!= null 은 불가능


▶ > (greater than) , >= (greater than or equal)

이상 또는 초과인가?

where weight > 3.2;
where weight >= 3.2;

문자와 시간도 비교가 가능하다.
ex ) 가 < 나 , 2018-01-01 < 2018-01-02


▶ < (lesr than) , <= (less than or equal)

이하 또는 미만인가?

where weight > 3.2;
where weight >= 3.2;


▶ between and

사이의 값들을 구함

// 2017-11-01(포함) 에서 2018-01-01(포함) 사이의 데이터
select * from baby where birth between '2017-11-01' and '2018-01-01';

=> 단, 앞의 값이 무조건 작아야 한다.
따라서 where birth between ‘2018-11-01’ and ‘2017-01-01’;은 안됨
=> select * from baby where birth >= ‘2017-11-01’ and birth<= ‘2018-01-01’; 도 가능


▶ in

in 안의 값들 중 같은 데이터가 있는 데이터

// gender값이 2또는 1 
select * from baby where gender in ('2', '1');


▶ like

특정 문자 패턴인 데이터, like에서만 사용하는 특별한 문자들이 있다.

  • ‘%’ (퍼센트)
    많거나 없거나
  • ‘_’ (언더바)
    하나만
select * from baby where name like '지%';
=> name  '지' 시작하는 데이터 ( , 지수, 지리지 )
select * from baby where name like '지_';
=> name  '지' 시작하는  글자 데이터 ( 지수, 지코 )
select * from baby where birth like '%01%';
=> birth  1월달로 설정 돼있는 데이터
# '%희', '김__', '_지%' 등의 형식도 가능

between , in , like 는 = 을 붙이지 않는다.


◆ 조건 연결

▶ not (like, between, in )

like, between, in 의 조건과 일치하지 않는 데이터( not like, not between, not in )

// weight값이 4.08 또는 3.02 아닌것
select * from baby where weight not in ('4.08', '3.02');


▶ and

and 로 묶이는 조건을 모두 만족

// birth 2017-11-01이후이면서 2018-01-01 이전인것
select * from baby where birth >= '2017-11-01' and birth<= '2018-01-01';


▶ or

or 로 묶이는 조건 중 하나이상 만족

// birth 2017-11-01이후 거나, 2018-01-01 이전이거나
select * from baby where birth >= '2017-11-01' or birth<= '2018-01-01';

괄호로 우선순위 설정도 가능하다.