TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

SQLD 2과목 SQL 기본 및 활용 - WHERE 절

by 기록자_Recordian 2024. 1. 11.
728x90
반응형

SQLD 2과목 SQL 기본 및 활용

<목차>

 

WHERE 절
  • 사용자들이 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용하여 자료들에 대해 제한
  • 두 개 이상의 테이블에 대한 조인 조건을 기술하거나 결과를 제한하기 위한 조건을 기술할 수도 있음.
  • 조회하려는 데이터에 특정 조건을 부여할 목적으로 사용하기 때문에 FROM 절 뒤에 옴.
SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명]
FROM 테이블명
WHERE 조건식;

 

조건식은

  • 칼럼명(보통 조건식의 좌측에 위치)
  • 비교 연산자
  • 문자, 숫자, 표현식 (보통 조건식의 우측에 위치)
  • 비교 칼럼명(JOIN 사용 시)

WHERE 절에 사용되는 연산자의 종류
구분 연산자 연산자의 의미
비교
연산자
= 같다
> 보다 크다
>= 보다 크거나 같다
< 보다 작다
<= 보다 작거나 같다
SQL
연산자
BETWEEN a AND b a와 b의 값 사이에 있으면 된다. (a와 b 값이 포함됨.)
IN(LIST) 리스트에 있는 값 중에서 어느 하나라도 일치하면 됨
LIKE "비교문자열"  비교문자열과 형태가 일치하면 됨 (%, _ 사용)
%: 0개 이상의 어떤 문자를 의미
_: 1개인 단일 문자를 의미
IS NULL NULL 값인 경우
논리
연산자
AND 앞에 있는 조건과 뒤에 오는 조건이 참(True)이 되면 결과도 참(True)이 됨. 즉, 앞의 조건과 뒤의 조건을 동시에 만족해야 함.
OR 앞의 조건이 참(True) 이거나 뒤의 조건이 참(True) 이 되어야 결과도 참(True)이 됨. 즉, 앞뒤의 조건 중 하나만 참(True)이면 됨.
NOT 뒤에 오는 조건에 반대되는 결과를 리턴
부정
비교
연산자
!= 같지 않다
^= 같지 않다
<> 같지 않다 (ISO 표준, 모든 운영체제에서 사용 가능)
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

 

* CHAR 변수나 VARCHAR2와 같은 문자형 타입을 가진 칼럼을 특정 값과 비교하기 위해서는 인용 부호(작은따옴표, 큰 타옴 표)로 묶어서 비교 처리.

하지만 NUMERIC과 같은 숫자형 형태의 값은 인용부호 미사용.


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

논리 연산자의 순서 사례
잘못 해석한 예 조건에 맞게 올바르게 수정한 예
WHERE 소속팀 = 삼성블루윙즈
OR 소속팀 = 전남드래곤즈
AND 포지션 = 미드필더(MF)
AND 키 >= 170 센티미터
AND 키 <= 180 센티미터
WHERE (소속팀 = 삼성블루윙즈
        OR 소속팀 = 전남드래곤즈)
AND 포지션 = 미드필더(MF)
AND 키 >= 170 센티미터
AND 키 <= 180 센티미터

ROWNUM, TOP 사용
  • ROWNUM(Oracle)

- 칼럼과 비슷한 성격의 Pseudo Cloumn 으로써 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호

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

- 테이블 내의 고유한 키나 인덱스 값을 만들 수 있음.  UPDATE MY_TABLE SET COLUMN1 = ROWNUM;

 

ex) 한 건의 행만 가져오고 싶을 때

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1;

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM < 2;

 

ex) 두 건 이상의 N 행을 가져오고 싶을 때

ROWNUM = N;

ROWNUM <= N;

ROWNUM <= N+1; 

 

  • TOP 절 (SQL Server)
TOP (Expression) [PERCENT] [WITH TIES]

- Expression: 반환할 행의 수를 지정하는 숫자

- PERCENT: 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨

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

 

ex) 한 건의 행만 가져오고 싶을 때

- SELECT TOP(1) PLAYER_NAME FROM PLAYER;

 

ex) 두 건 이상의 N 행을 가져오고 싶을 때

- SELECT TOP(N) PLAYER_NAME FROM PLAYER;


이전글

함수(2)

 

다음글

GROUP BY, HAVING 절

 

728x90
반응형