데이타베이스(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테이블의 정보 개수를 알려줍니다.
긴글 읽어주셔서 감사합니다.
다음에는 화제 전환으로 다른 이야기를 시작해보겠습니다.
'컴퓨터 > 컴퓨터 ETC' 카테고리의 다른 글
맥북 - 공장초기화 (0) | 2018.08.27 |
---|---|
ORACLE과 MYSQL의 비교하자. [차이점] (11) | 2017.07.19 |
데이타베이스(DB)의 종류와 기본적인 명령어들 (0) | 2017.07.13 |
JQUERY (제이쿼리) - select , radio, checkbox 제어 (0) | 2017.07.12 |
JQUERY (제이쿼리) 이정도는 알아두자 [기초, 기본 함수 정리] (0) | 2017.07.11 |