Database/개념

[DATABASE] SELECT 의 WHERE 절이란? 비교 연산자, SQL 연산자, 논리 연산자란?

꽁담 2018. 10. 31. 23:48

WHERE 조건절의 개요


자료를 검색할 때 SELECT 절과 FROM 절만을 사용하여 기본적인 SQL 문장을 구성한다면, 테이블에 있는 모든 자료가 출력되기 때문에

실제로 원하는 자료를 확인하기 어렵습니다.

따라서 WHERE 절을 사용하여 원하는 자료들로 결과를 제한할 수 있습니다.

SELECT [DISTINCT/ALL] 컬럼명 [ALIAS명]
FROM 테이블명
WHERE 조건식;

WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성됩니다.

1. 컬럼명 ( 보통 조건식의 좌측에 위치 )

2. 비교 연산자

3. 문자, 숫자, 표현식 ( 보통 조건식의 우측에 위치 )

4. 비교 컬럼명 ( JOIN 사용 시)



연산자의 종류


WHERE 절에 조건식을 사용할 때, 사용되는 연산자 입니다.


 구분

 연산자

 의미

 비교 연산자

 =

 같다.

 

 >

 보다 크다.

 

 >=

 크거나 같다.

 

 <

 보다 작다.

 

 <=

 작거나 같다.

 SQL 연산자

 BETWEEN a AND b

 a 와 b 의 값 사이에 있으면 된다. (a 와 b 값이 포함)

 

 IN (list)

 리스트에 있는 값 중에서 어느 하나라도 일치하면 된다.

 

 LIKE '비교문자열'

 비교문자열과 형태가 일치하면 된다. (%, _ 사용)

 

 IS NULL

 NULL 값인 경우

 논리 연산자 AND 앞의 조건과 뒤의 조건을 동시에 만족해야 한다.
  OR

 앞 뒤 조건 중 하나만 만족하면 된다.

  NOT 뒤에 오는 조건에 반대되는 결과를 되돌려 준다.
 부정 비교 연산자

 !=

 같지 않다.
  ^= 같지 않다.
  <> 같지 않다.
  NOT 칼럼명 = ~와 같지 않다.
  NOT 칼럼명 > ~보다 크지 않다.
 부정 SQL 연산자

 NOT BETWEEN a AND b

 a 와 b 의 값 사이에 있지 않다. (a 와 b 값을 포함하지 않음)

 

 NOT IN (list)

 list 값과 일치하지 않는다.
  IS NOT NULL

 NULL 값을 갖지 않는다.


연산자의 우선순위

1. 괄호 ( )

2. NOT 연산자

3. 비교 연산자, SQL 비교 연산자

4. AND

5. OR


비교 연산자 ( 부정 비교 연산자 )


문자 유형간의 비교 조건이 발생하는 경우 처리 방법입니다.

1. 비교 연산자의 양쪽이 모두 CHAR 타입인 경우

 - 길이가 서로 다른 CHAR 형 타입이면 작은 쪽에 SPACE 를 추가하여 길이를 같게 한 후에 비교합니다.

 - 서로 다른 문자가 나올 때까지 비교합니다.

 - 달라진 첫 번째 문자의 값에 따라 크기를 결정합니다.

 - BLANK 의 수만 다르다면 서로 같은 값으로 결정합니다.

2. 비교 연산자의 한쪽이 CHAR, 한쪽이 VARCHAR 타입인 경우

 - 서로 다른 문자가 나올 때까지 비교합니다.

 - 길이가 다르다면 짧은 것이 끝날 때까지만 비교한 후에 길이가 긴 것이 크다고 판단합니다.

 - 길이가 같고 다른 것이 없다면 같다고 판단합니다.

 - VARCHAR 는 NOT NULL 까지 길이를 말합니다.

3. 상수값과 비교하는 경우

 - 상수 쪽을 변수 타입과 동일하게 바꾸고 비교합니다.

 - 변수 쪽이 CHAR 유형 타입이면 위의 CHAR 유형 타입의 경우를 적용합니다.

 - 변수 쪽이 VARCHAR 유형 타입이면 위의 VARCHAR 유형 타입의 경우를 적용합니다.



SQL 연산자 ( 부정 SQL 연산자 )


LIKE 비교문자열에서 % 와 _ 의 의미입니다.

1. % : 0 개 이상의 어떤 문자를 의미

2. _ : 1개인 단일 문자를 의미


IS NULL 연산 특성입니다.

1. NULL 값과의 수치연산은 NULL 값을 리턴한다.

- NULL 값과의 비교연산은 거짓(FALSE)를 리턴한다.

- 어떤 값과 비교할 수 없으며, 특정 값보다 크다, 적다라고 표현할 수 없습니다.



ROWNUM, TOP 의 사용



ROWNUM


ORACLE, GOLDILOCKS 에서 지원되는 Pseudo Column 으로써 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호입니다.

테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용합니다.

SELECT [DISTINCT/ALL] 컬럼명 [ALIAS명]
FROM 테이블명
WHERE ROWNUM <= 3;



TOP


MS-SQL 은 TOP 절을 사용하여 결과 집합으로 출력되는 행의 수를 제한할 수 있습니다.


TOP 절의 표현식은 다음과 같습니다.

TOP (Expression) [PERCENT] [WITH TIES]

1. Expression : 반환할 행의 수를 지정하는 숫자입니다.

2. PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타냅니다.

3. WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며, TOP N(PERCENT)의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있습니다.

SELECT TOP(3) 컬럼명 FROM 테이블명;




이 내용은 'SQL 전문가 가이드, 한국데이터베이스 진흥원' 에서 공부한 내용입니다.