컴퓨터/컴퓨터 ETC

데이타베이스(DB)에서 많이 보이는 WHERE 정복하기

푸른바다23 2017. 7. 14. 17:37

데이타베이스(DB)에서 많이 보이는 WHERE  정복하기


오늘은 SELECT, UPDATE, DELETE에서 많이 사용하는 WHERE에 대해서 자세히 알아보겠습니다. 


WHERE은 해당 명령어 작업에 필요한 조건을 걸때 사용하는 명령어입니다.


보통 WHERE A = B 로 구성됩니다.

A는 해당테이블컬럼명을 가르키며 B는 컬럼명이랑 비교할 값을 적습니다.

ex) SELECT * FROM KGON WHERE SEQ = 2



이제 조건이 2개 인경우를 생각해봅시다. 


2개의 조건이 모두 만족하는 경우에는 AND연산자를 사용합니다. 

ex) SELECT * FROM KGON WHERE SEQ = 1 AND TITLE = '케이곤2'

SEQ컬럼이 1이고 TITLE이 '케이곤2'인 정보를 조회합니다.

[즉, 두 조건 모두 만족해야 조회합니다. ]


2개의 조건중 1개이상 만족하는 경우 OR연산자를 사용합니다. 

ex) SELECT * FROM KGON WHERE SEQ = 1 OR TITLE = '케이곤2'

SEQ컬럼이 1이거나 TITLE이 '케이곤2'인 정보를 조회합니다. 

[즉, 두 조건 중 한가지 조건만 만족해도 조회합니다. ]


한컬럼의 값이 어디부터 어디까지 범위적으로 만족하는 경우에는 BETWEEN을 사용합니다. 

ex) SELECT * FROM KGON WHERE SEQ BETWEEN 1 AND 3

SEQ컬럼이 1부터 3까지 만족하는 정보를 조회합니다. 


[BETWEEN은 시작값과 종료값을 사용하며 가운데는 AND를 써줍니다.]

[다른방법으로도 표현할 수 있습니다. ]

ex) SELECT * FROM KGON WHERE SEQ >= 1 AND SEQ =< 3



한컬럼의 값이 여러값 중 하나의 값과 만족하는 경우에는 IN을 사용합니다.

ex) SELECT * FROM KGON WHERE SEQ IN (1,3,5)

SEQ컬럼이 1,3,5 중 하나의 값이 일치하는 정보를 조회합니다. 


[다른방법으로도 표현할 수 있습니다.]

ex) SELECT * FROM KGON WHERE SEQ = 1 OR SEQ = 3 OR SEQ = 5


컬럼값에 NULL값이 있는지 없는지 확인할 떄는 조심해야합니다. 

ex) SELECT * FROM KGON WHERE SEQ = NULL

이렇게 쓸 수 없습니다. 다음과 같이 사용합니다.


ex) SELECT * FROM KGON WHERE SEQ IS NULL 

SEQ가 NULL인 정보를 조회합니다. 


ex) SELECT * FROM KGON WHERE SEQ IS NOT NULL

SEQ가 NULL이 아닌 정보를 조회합니다. 


조건 중 문자열 일부만 일치하는 경우에는 LIKE를 사용합니다. 

ex) SELECT * FROM KGON TITLE LIKE '%KGON%'

KGON테이블에서 TITLE컬럼 내용 중 KGON이라는 단어가 존재하는 정보를 조회합니다. 


LIKE문 조건에 '%'에 위치에 따라 3가지로 구분할 수 있습니다.

ex) SELECT * FROM KGON TITLE LIKE '%KGON' 

'KGON'으로 끝나는 TITLE을 찾아줍니다. 


ex) SELECT * FROM KGON TITLE LIKE 'KGON%' 

'KGON'으로 시작하는 TITLE을 찾아줍니다. 


ex) SELECT * FROM KGON TITLE LIKE '%KGON%' 

'KGON'을 포함하는 TITLE을 찾아줍니다.


LIKE 문을 쓸때와 =를 사용할때의 차이는 무엇인지 확인해봅시다.

TITLE = '케이곤2'를 사용하면 TITLE이 '케이곤2'와 완전 일치하는 정보만 가져옵니다. TITLE LIKE '%케이곤2%'인 경우에는 TITLE에 '케이곤2'가 포함되는 정보만 가져옵니다.  



가끔 보면 WHERE 1=1으로 조건을 써주는 경우가 있습니다. 

조건이 없을때는 안쓰는게 맞지만 추가할 때 WHERE 1=1이 없다면 조건을 추가할 때 마다 있는지 없는지 확인하여 처음에는 WHERE 두번째는 AND 이런씩으로 구분을 해야합니다. 만약 WHERE 1=1 이 있따면 조건 붙을때 첫번쨰인지 두번째인지 확인필요없이 AND 조건만 붙이면 되니깐 편한이점이 있습니다..

[단!!! UPDATE,DELETE에서는 WHERE 1=1 을 쓰지 맙시다. 모든 데이터가 수정되거나 삭제되는 대형사고가 생깁니다. 이 경우 백업본이 없다면 복구가 불가능합니다. 대부분 백업본을 가지고 있는 경우가 없습니다.]


어제 못 알려드린 함수를 알려드립니다.

SELECT부분에 많이 쓰는 함수로 테이블의 데이터 개수를 알고 싶을때는 다음과 같이 사용합니다.

ex) SELECT COUNT(*) FROM KGON

KGON테이블의 정보 개수를 알려줍니다.



긴글 읽어주셔서 감사합니다.

다음에는 화제 전환으로 다른 이야기를 시작해보겠습니다. 


반응형