특정 데이터를 뽑아낼 수 있도록 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';
괄호로 우선순위 설정도 가능하다.