본문 바로가기
Do it! SQL 입문/이론

SQL 시작하기

by Hwanii_ 2023. 6. 15.
728x90

03-2 WHERE 문으로 조건에 맞는 데이터 검색하기

p.60 ~ 74

 

1.

시스템의 부하를 줄이려면 필요한 데이터만 검색 해야 한다.

필요한 열만 검색하는 방법은,

SELECT 열 FROM 테이블명 으로 검색이 가능하다.

 

하지만, 행 전체가 다 검색되므로, 아직 필요한 데이터만 검색했다고 볼 수는 없다.

 

그래서 WHERE 문을 사용 한다.

 

2.

WHERE 문의 기본 형식

 

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

 

1) [열] : 조건을 적용할 열을 입력.

 

2) = : 조건을 적용할 연산자 종류를 입력.

 

3) [조건값] : 사용자 조건값을 입력.

 

3.

WHERE 문에 명시한 = 조건에 해당하는 데이터만 검색을 하게 된다.

이렇게 필요한 데이터를 필터링 하면 원하는 데이터만 빠르게 검색이 가능 하다.

 

뿐만아니라, 시스템의 부하를 줄일 수도 있다.

 

WHERE 문에는 다양한 연산자를 사용할 수 있다.

 

<

<=

=

>

>=

<>, !=

!<

!>

 

4.

정렬이 중요한 데이터는 ORDER BY 문을 사용하는 것이 좋다.

 

5.

WHERE 문에서 논리 연산자 사용하기.

 

논리 연산자는 조건의 참, 거짓을 판단한다.

더 복잡한 조건문이 필요한 경우, 비교 연산자와 조합해서 많이 사용한다.

 

ALL : 모든 비교 집합이 TRUE 이면 TRUE

AND : 두 부울 표현식이 모두 TRUE 이면 TRUE

ANY : 비교 집합 중 하나라도 TRUE이면 TRUE

BETWEEN : 피연산자가 범위 내에 있으면 TRUE

EXISTS : 하위 쿼리에 행이 포함되면 TRUE

IN : 피연산자가 리스트 중 하나라도 포함되면 TRUE

LIKE : 피연산자가 패턴과 일치하면 TRUE

NOT : 부울 연산자를 반대로 실행

OR : 하나의 부울식이 TRUE이면 TRUE

SOME : 비교 집합 중 일부가 TRUE이면 TRUE

 

6.

BETWEEN을 이용한 데이터 검색.

BETWEEN은 WHERE 문과 함께 사용되며 검색하는 값의 범위를 지정 한다.

보통은 날짜형 데이터에 사용하지만,

문자열형이나 숫자형 데이터에도 사용할 수 있다.

 

SELECT * FROM 테이블명 WHERE 칼럼명 BETWEEN 조건값 AND 조건값

 

>> 조건값을 포함해서 데이터를 검색한다.

 

 

7.

날짜형 데이터에도 BETWEEN 사용이 가능 하다.

 

예를들어,

 

SELECT * FROM 테이블명 WHERE 칼럼명

BETWEEN '2023-05-02' AND '2023-06-15' 

 

구문과 같이 사용이 가능 하다.

 

사실, 날짜형 데이터를 검색할 때는 밀리초를 고려해야 한다.

 

위와 같이 조건값을 사용하면 실제로는

2023-05-02 00:00:00.000이 조건문에 사용된다.

 

만약, 정교한 날짜형 비교가 필요하면 이 개념을 알고 있으면 된다.

 

시, 분, 초는 적절히 생략하면서 사용하면 된다.

 

8.

AND와 OR을 이용한 데이터 검색.

WHERE 문에 하나의 조건만 사용 가능한게 아니다.

현업에서 매우 다양한 조건을 적용해야 하는 경우가 많다.

논리 연산자인 AND와 OR을 사용해 여러 조건을 결합 한다.

 

AND는 입력한 2개의 조건이 모두 만족하는 데이터만 검색.

OR은 입력한 두 조건 중 하나라도 만족하는 데이터를 모두 검색한다.

 

 

 

칼럼명 NUM의 row는 1003보다 크거나 같아야 하고,

칼럼명 CNT의 row는 500보다 크거나 같아야 하고,

칼럼명 PRICE의 row는 3000보다 작거나 같아야 하는

3가지 조건을 모두 만족하는 데이터를 검색된것을 확인 할 수 있다.

 

9.

OR을 2개 이상 사용한 데이터 검색.

이런 경우에는 OR을 반복해 쓰면 비효율적 이기 때문에,

IN을 사용 한다.

IN은 OR과 같은 역할을 하지만, 쉼표를 사용한다는 점에서 사용 방법만 다른 것이다.

 

 

 

IN을 사용하기에 적합한 상황은 아니긴 할 수 있지만,

구문을 어떻게 사용하는지 보기 위한 예시 이다.

 

10.

논리 연산자의 우선순위를 고려 해야 하는 상황이 생긴다.

이런 경우는 소괄호로 ( ) 우선순위를 지정해서 검색 한다.

 

11.

어떤 결과를 얻는 코드에는 정답이라는 코드가 없다.

좋은 코드, 좋은 쿼리란 가독성을 포함해 요구 사항을 정확히 반영하면서,

성능도 효율적인 코드를 말한다.

 

코드를 다양하게 쳐보도록 노력해 보자.

 

12.

NULL 데이터 검색.

DB에서 데이터를 검색하다 보면 NULL 값을 포함하는 열을 자주 보게 된다.

NULL은 데이터가 없는 상태를 말한다.

그렇다고 숫자 0 또는 공백 문자를 의미하는게 아니라,

아예 정의되지 않은 값을 의미 한다.

 

NULL을 필터링 하는 방법은

IS NULL 또는 IS NOT NULL을 사용해서 필터링 한다.

 

= 연산자로 사용하는게 아니다.

NULL은 정의되지 않은 상태이므로 = 연산자로 사용을 하면 잘못 사용하게 되는 구문이다.

(syntax 에러가 뜨는것은 아니지만)

 

칼럼명이 PRICE인 row중에 NULL 인 데이터가 있어 ?

 

칼럼명이 PRICE인 row중에 NULL이 아닌 데이터가 있어?

 

반응형

'Do it! SQL 입문 > 이론' 카테고리의 다른 글

SQL 시작하기  (1) 2023.06.16
SQL 시작하기  (0) 2023.06.15
SQL 시작하기  (0) 2023.06.15
데이터베이스와 SQL의 기초  (0) 2023.06.11
데이터베이스와 SQL의 기초  (0) 2023.06.11