Programming/SQL

[SQL] WHERE 문으로 조건에 맞는 데이터 검색

지윤이글스 2022. 9. 25. 23:32

WHERE 문

시스템의 부하를 줄이려면 필요한 데이터만 검색해야 한다. 필요한 열만 검색하려면 SELECT FROM 구문을 쓰면 된다. 그렇지만 행 전체가 검색이 되므로 아직 필요한 데이터만 검색 했다고 볼 수는 없다ㅠ

실무에서 사용하는 데이터베이스는 엄청난 양의 데이터가 저장되므로 매번 전체 행을 가져오면 안될것이다. 원하는 조건에 맞는 꼭! 필요한 데이터만 가져오는 방법을 알아보자.

WHERE 문의 기본형식은 이렇다 

SELECT [열] FROM [테이블] WHERE [열] = [조건값]

--> WHERE 뒤에 있는 [열] 은 조건을 적용할 열을 입력하는 곳이다. [조건값]은 사용자가 조건값을 입력하는 곳이다.조건값에 있는 내용이 true 인 데이터들만 나오게 된다.

 

#비교연산자 

조건에 해당하는 값과 같은 값을 찾으려고 = 을 쓰는것인데, =만 쓰는것이 아니다. >, <. <=, >=, <>, !=, !<, !> 도 쓸 수 있다. 여기서<>, !=, !<,  !> 은 생소할 것이다. <> 과 != 은 필터링 조건과 같지 않은 값을 검색할 때 쓴다. 한마디로 다른값을 검색할 때 쓴다. !> 는 필터링 조건보다 크지 않은 값을 검색한다. !<은  필터링 조건보다 작지 않은 값을 검색한다. 

 

#논리연산자

논리연산자는 참, 거짓을 판별하며 더 복잡한 조건문이 필요한 경우 비교연산자와 조합해 많이 사용한다.

다음은 논리 연산자를 표로 정리한것이다.

연산자 설명
ALL 모든 비교 집합이 TRUE dlaus TRUE
AND 두 부울 표현식이 모두 TRUE 이면 TRUE
ANY 비교 집합 중 하나라도 TRUE 이면 TRUE
BETWEEN 피연산자가 범위 내에 있으면 TRUE
EXISTS 하위 쿼리에 행이 포함되면 TRUE
IN 피연산자가 리스트 중 하나라도 포함되면 TRUE
LIKE 피연산자가 패턴과 일치하면 TRUE
NOT 부울 연산자를 반대로 실행
OR 하나의 부울식이 TRUE 이면 TRUE
SOME 비교 집합 중 일부가 TRUE 이면 TRUE
더보기

--> 2010년 ~ 2011년 범위에 해당하는 값을 검색

SELECT * FROM nasdaq_company WHERE year BETWEEN 2010 AND 2011

 

-->Symbol 열의  A~B 범윗값 검색 

SELECT * FROM nasdaq_company WHERE symbol BETWEEN 'A' AND 'B'

 

--> sector 가 'Finance' 이면서 industry 가 'Major Banks' 인 데이터를 검색

SELECT * FROM nasdaq_company WHERE sector = 'Finance' AND sector = 'Major Banks'

 

-->symbol이 'MSFT' 또는 'XXXX' 인 데이터를 검색

SELECT * FROM nasdaq_company WHERE symbol = 'MSFT' OR symbol = 'XXXX'

 

-->sector가 'Technology' 또는 'Consumer Service' 이면서 symbol이 'MSFT', 'AMD', 'AMZN' 인 데이터 검색

SELECT * FROM nasdaq_company WHERE (sector = 'Technology' OR sector='Consumer Service')

AND symbol IN('MSFT', 'AMD', 'AMZN')

--소괄호를 사용해 우선순위를 먼저 처리해준다.