[SQL] WHERE 절

아래의 명령어들은 모두 Oracle 의 SQL 명령어이다. (SQL Server 명령어의 경우 따로 표시)

👑 WHERE 절

데이터베이스에서 사용자들은 WHERE 절을 사용하여 특정 조건을 만족하는 데이터만

선택할 수 있다. 이를 통해 방대한 데이터 속에서 사용자들은 자신이 원하는 자료만을

검색하여 출력할 수 있다.

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

WHERE 절의 조건식은 칼럼명, 연산자, 문자, 숫자, 표현식, 비교 칼럼명으로 구성된다.


👑 WHERE 절에 사용되는 연산자

💡 비교 연산자

  • =, >, >=, <, <=

  • 부정 비교 연산자인 !=, ^=, <> 는 모두 같지 않다 라는 의미이다.

    • != : 대부분의 DBMS 에서 지원한다.
    • ^= : 특정 DBMS에서만 지원한다.
    • <> : ISO 표준, 모든 운영체제에서 사용 가능
  • NOT 칼럼명 = : ~와 같지 않다.

  • NOT 칼럼명 > : ~보다 크지 않다.

-- e.g.
SELECT PLAYER_NAME, HEIGHT
FROM PLAYER
WHERE HEIGHT >= 180;

-- e.g.
SELECT TEAM_ID, TEAM_NAME
FROM TEAM
WHERE TEAM_ID <> 'T01';


💡 SQL 연산자

  • BETWEEN a AND b : a 이상 b 이하의 값 사이에 있으면 된다.
    NOT BETWEEN a AND b : a 이상 b 이하의 값 사이에 있지 않다.

  • IN (list) : 리스트에 있는 값 중 어느 하나라도 일치하면 된다.
    NOT IN (list) : list 값과 일치하지 않는다.

  • LIKE '비교문자열' : 비교문자열과 형태가 일치하면 된다.

  • IS NULL : NULL 값인 경우
    IS NOT NULL : NULL 값을 갖지 않는다.

-- IN 연산자
SELECT TEAM_NAME, FOUNDED_YEAR
FROM TEAM
WHERE TEAM_ID IN ('T03', 'T05');

-- LIKE 연산자
SELECT TEAM_NAME, FOUNDED_YEAR
FROM TEAM
WHERE FOUNDED_YEAR LIKE '197_'; -- 1970년대에 창단한 팀을 조회

-- WILDCARD (%) : 0개 이상의 어떤 문자
-- WILDCARD (_) : 1개인 단일 문자

-- BETWEEN a AND b 연산자
SELECT PLAYER_NAME, WEIGHT
FROM PLAYER
WHERE WEIGHT BETWEEN 76 AND 82 -- 몸무게가 76 이상 82 이하인 선수 조회

-- IS NULL 연산자
SELECT TEAM_NAME, REGION_NAME
FROM TEAM
WHERE REGION_NAME IS NULL; -- 연고지가 NULL 값인 팀 조회


💡 논리 연산자

  • AND, OR, NOT

  • 논리 연산자들 간의 우선순위 : ()NOTANDOR


👑 ROWNUM, TOP

  • Oracle에서는 ROWNUM을 통해 원하는 만큼의 행만 가져오고 싶을 때,
    WHERE 절에서 행의 개수를 제한할 수 있다.

  • 한 건의 행을 가져올 경우 = 1 이 가능하지만, 두 건 이상의 경우 = N 의 형태는 사용할 수 없다.

    SELECT TEAM_NAME FROM TEAM WHERE ROWNUM <= N;
    
  • SQL Server 의 경우 TOP 절을 통해 출력되는 행의 수를 제한할 수 있다.

    TOP [조회할 행의 ] [컬럼명] FROM [테이블명] WHERE [조건절]
    

Categories:

Updated:

Leave a comment