[SQL] WHERE 문으로 조건에 맞는 데이터 검색
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')
--소괄호를 사용해 우선순위를 먼저 처리해준다.