카테고리 없음

SQLD 요약 - Where 절

비뀨_ 2023. 2. 11. 21:18

원본

Where is my Watch !!?  = 내 시계 어디있어!?

 

위에서 보듯이 Where은 무언가를 찾는데 많이 쓴다

DB에서 Select와 From만으로 Query를 작성한다면 테이블의 모든 Row들이 결과로 나온다.

DB는 여러 곳에서 동시에 접속하기 위해 사용하는 것인데, 원하는 Row가 아닌, 모든 Row를 출력하면

DB의 CPU, Memory를 비효율적으로 사용하게 된다.

때문에 원하는 것을 찾기 위해 Where 절을 이용해 결과로 출력되는 자료들을 제한할 수 있다.`

 

기본 사용법

SELECT [DISTINCT 또는 ALL] 칼럼명 [ALIAS 명] FROM 테이블명 WHERE 조건식;

 

WHERE 연산자 종류

아래의 기본 연산자는 프로그래밍 언어를 배웠다면 어느정도 알고 있을테니 외우려고 하지말고, 

이해만 하면서 다른걸 써보면서 익숙해지자.

구분 연산자 설명
비교 연산자  =  같다
> 보다 크다
>= 크거나 같다.
< 보다 작다
<= 보다 작거나 같다.
SQL 연산자 BETWEEN a AND b a와 b 사이 ( a <= x <= b)
IN (목록) 리스트에 있는 값 중에서 하나라도 일치하면 됨
e.g ) id  IN(1, 2, 3, 4) 
LIKE '비교문자열' 비교문자열과 형태가 일치 ( '%' , '_'  사용) 
IS NULL NULL 값인 경우 
논리 연산자 AND a AND b ( a조건과 b 조건이 모두 참이어야 함)
OR a OR b  ( a조건의 값이 참이거나, b 조건이 참)
NOT 뒤 조건에 반대되는 결과를 되돌려 줌.
부정 비교 연산자 != 같지 않다.
^= 같지 않다.
<> 같지 않다 (iso 표준)
NOT 칼럼명 = ~와 같지 않다.
NOT 칼럼명 > ~보다 크지 않다.
부정 SQL 연산자 NOT BETWEEN a AND b a와 b 사이의 값이 아니다.
NOT IN (목록) 목록안의 내용과 일치하지 않는다.
IS NOT NULL NULL 값을 갖지 않는다

 

 

WHERE 연산자 우선순위

  1. 괄호 사이의 조건   ( )
  2. NOT 연산자
  3. 비교 연산자, SQL 비교 연산자
  4. AND
  5. OR

 

문자 유형 비교 방법

 

구분 비교 방법
비교연산자의
양쪽이 모두
CHAR 타입인 경우
길이가 서로 다른 CHAR형 타입이면 작은 쪽에 SPACE를 추가하여 길이를 같게 한 후에 비교한다.
서로 다른 문자가 나올 때까지 비교
달라진 첫 번째 문자의 값에 따라 크기를 결정한다.
BLACNK의 수만 다르다면 서로 같은 값으로 결정한다.
비교 연산자의
한 쪽이 VARCHAR
타입인 경우
서로 다른 문자가 나올 때까지 비교한다.
길이가 다르면 짧은 것이 끝날 때까지만 비교한 후에 길이가 긴 것이 크다고 판단한다.
길이가 같고 다른 것이 없으면 같다고 판단한다.
VARCHAR는 NOT NULL까지 길이를 말한다.
상수 값과 비교할 경우 상수 쪽을 변수 타입과 동일하게 바꾸고 비교한다.
변수 쪽이 CHAR 타입이면 위의 CHAR 타입의 경우를 적용
변수 쪽이 VARCHAR 타입이면, VARCHAR 타입의 경우를 적용한다.

 

 

목록에서 개수를 정해 가져오기 ( ROWNUM, TOP )

Rownum

Oracle의 Rownum은 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때, Where 절에서 행의 개수를 제한할 때 사용한다.

SELECT 컬럼명 FROM 테이블명 WHERE ROWNUM [<= 또는= , > 등등] 가져올 행 숫자;

 

TOP

SQL Server는 TOP 절을 사용해 결과 행의 개수를 제한할 수 있다.

SELECT TOP(n) 컬럼명 FROM 테이블명