티스토리 뷰

안녕하세요. 오늘은 조건을 지정하여 데이터를 검색하는 방법에 관해 포스팅하려고 합니다. 수많은 데이터들 속에서 필요한 데이터만 검색하기 위해서는 WHERE 구문을 사용합니다. 예를 들면 아래와 같이 사용하면 됩니다.

SELECT 열 FROM 테이블 명 WHERE 조건식

조건식은 참 또는 거짓의 값을 반환하는 식으로 비교 연산자 및 논리 연산자 등을 사용해서 표현합니다. 위의 구문을 이용해서 존재하는 데이터로 예를 들어보겠습니다. sample21의 테이블에서 no 번호가 2인 데이터를 조회하는 쿼리입니다.



그리고 문자열 상수를 검색할때에는 작은 따음표('')를 이용해서 데이터를 감싸줍니다. 이것 또한 아래의 예제 데이터를 통해서 살펴보도록 하겠습니다.



다음은 NULL 값을 조회하는 방법에 대해서 알아보겠습니다. NULL 값인 데이터를 조회하려면 기존과 같이 사용하면 조회할 수 없습니다.

SELECT * FROM sample21 WHERE birthday = NULL;        // 데이터를 조회할 수 없음

SELECT * FROM sample21 WHERE birthday IS NULL;       // IS NULL 구문을 통해 NULL 값인 데이터를 조회 가능

위와 같이 IS NULL 구문을 이용해서 NULL 값인 데이터들을 조회할 수 있고, 예제를 통해 살펴보겠습니다.



다음으로 조건식에 사용하는 비교 연산자 및 논리 연산자에 대해서 간단히 알아보겠습니다.


1) 비교 연산자


연산자 

내용 

사용 예

 = 연산자

 좌변과 우변의 값이 같을 경우 참이 된다. 

 WHERE no = 2; 

 <> 연산자 

 좌변과 우변이 같지 않을 경우 참이 된다. 

 WHERE no <> 2; 

 > 연산자 

 좌변의 값이 우변의 값보다 클 경우 참이된다. 

 WHERE no > 2;

 >= 연산자

 좌변의 값이 우변의 값보다 크거나 같을 경우 참이된다. 

 WHERE no >= 2; 

 < 연산자 

 좌변의 값이 우변의 값보다 작을 경우 참이된다. 

 WHERE no < 2; 

 <= 연산자 

 좌변의 값이 우변의 값보다 작거나 같을 경우 참이된다. 

 WHERE no <= 2; 


2) 논리 연산자


 연산자

내용 

사용 예 

 AND 연산자

 좌, 우의 식이 모두 참일 경우 참이 된다. 집합에서 교집합으로 생각하면 된다.

 WHERE a <>  0 AND b <>0; 

 OR 연산자

 좌, 우의 식 중 하나라도 참일 경우 참이된다. 집합에서 합집합으로 생각하면 된다.

 WHERE a > 0 OR b > 0;

 NOT 연산자

 단항 연산자로 오른쪽에 지정한 조건식의 반대 값을 반환한다. 

 WHERE NOT a < 0; 


마지막으로 조건식에서 사용되는 패턴 매칭을 통한 검색에 대해서 알아보겠습니다. 위에서의 = 연산자를 통해 검색하는 경우에는 셀의 데이터 값이 완전히 동일한지를 비교합니다. 하지만 '특정 문자나 문자열이 포함되어 있는지 검색하고 싶은' 경우에 사용하는 방법으로 '패턴 매칭' 또는 '부분 검색'이라고도 합니다. 여기서는 LIKE 구문을 사용합니다.

SELECT * FROM 테이블 명 WHERE 컬럼명 LIKE '패턴'


여기서 패턴에는 '%' 와 '_' 가 사용되는데,

퍼센트(%)는 임의의 문자열을 나타내고 언더바(_)는 임의의 문자 하나를 의미합니다.


다음 예제를 통해서 사용되는 방법 및 결과 값에 대해서 확인해보겠습니다.



위에서 확인했듯이 패턴의 자리에 '%SQL%'를 넣어줌으로써 SQL을 포함하는 데이터들을 조회할 수 있습니다. 그리고 %의 사용 위치에 따라서 전방일치, 중간일치, 후방일치로 나눌수 있고 각각의 사용 방법으로는 'SQL%'는 전방일치, '%SQL%'는 후방일치, '%SQL'는 후방일치입니다. 퍼센트(%)뿐만 아니라 그 자리에 언더바(_)를 사용해도 되며 필요할 때 선택해서 사용하면 됩니다.


그럼 이것으로 오늘 포스팅을 마무리하도록 하겠습니다 :)