1. WHERE 조건절 개요
  2. 연산자의 종류
  3. 비교 연산자
  4. SQL 연산자
    1. IN (list) 연산자
    2. LIKE 연산자
    3. BETWEEN a AND b 연산자
    4. IS NULL 연산자
  5. 논리 연산자
  6. 부정 연산자
  7. ROWNUM, TOP 사용
    1. ROWNUM(오라클)
    2. TOP 절(SQL Server)

WHERE 조건절 개요

  1. 테이블에 있는 모든 자료가 아닌 원하는 자료만을 검색하기 위해 사용
  2. 두개 이상의 테이블에 대한 조인조건이나 결과를 제한하기 위한 조건 기술 가능
  3. WHERE 조건절 없이 모든 자료를 검색하게 되면 FULL TABLE SCAN이 발새하게 되어 CPU, MEMORY, 네트워크를 과다하게 사용한다.
  4. 구문
    1. 조건식: 컬럼명(조건식의 좌측), 비교 연산자, 문자,숫자,표현식(조건식의 우측)/비교 컬럼명(조인시)

연산자의 종류

  1. 연산자의 종류

  2. 연산자의 우선순위
    1. 우선순위를 놓쳐 실수하지 않기 위해 괄호 사용을 권고한다.

비교 연산자

  1. 예제
    1. TEAM ID라는 팀명의 데이터 타입은 CHAR(3) 인데 비교 연산자 오른쪽에 K02의 값을 작은따옴표(' ')나 큰따옴표(" ")와 같은 인용 부호로 묶어서 처리하지 않았기 때문에 발생하는 에러
    2. NUMERIC과 같은 숫자형 형태의 값은 인용부호를 사용하지 않는다.
  2. 문자 유형간의 비교 조건이 발생하는 경우
    1. 예제

      1. WHERE HEIGHT )= 170 조건을 WHERE HEIGHT ) = '170' 이라고 표현하더라도,HEIGHT라는 칼럼이 숫자 유형의 변수이므로 내부적으로 ' 170'이라는 문자열을 숫자 유형 170으로 바꾸어 처리

SQL 연산자

  1. SQL 문장에서 사용하도록 기본적으로 예약되어 있는 연산자로서 모든 데이터 타입에 대해서 연산이 가능한 4 가지 종류가 있다.

IN (list) 연산자

  1. 예제1
  2. 예제2

    1. 다중 리스트를 이용한 IN 연산자는 SQL 문장을 짧게 만들어 주면서도 성능측면에서도 장점을 가질 수 있는 매우 유용한 연산자이므로 적극적인 사용을 권고
    2. 아래와는 다른 결과를 가지는 것 유의

LIKE 연산자

  1. 와일드카드(한 개 혹은 0개 이상의 문자를 대신해서 사용하기 위한 특수문자)를 활용
  2. 예제

BETWEEN a AND b 연산자

  1. 예제

IS NULL 연산자

  1. NULL(ASCII 00)은 값이 존재하지 않는 것으로 확정되지 않은 값을 표현할 때 사용한다.
  2. 어떤 값보다 크거나 작지도 않고 ' '(공백, ASCII 32) 이나 O(Zero, ASCII 48)과 달리 비교 자체가 불가능한 값이다.
    1. NULL 값과의 수치 연산은 NULL 값을 리턴한다
    2. NULL 값과의 비교연산은 거짓(FALSE)을 리턴한다.
  3. NULL 값의 비교 연산은 IS NULL, IS NOT NULL 이라는 정해진 문구를 사용해야 제대로 된 결과를 얻을 수 있다.
  4. 예제
    1. 문법 에러는 나지 않지만 WHERE 절의 조건이 거짓(FALSE) 이 되어 WHERE 절의 조건을 만족하는 데이터 를 한건도 얻지 못하게 된 것으로 의 미 없는 SQL이 된다.

논리 연산자

  1. 비교 연산자나 SQL 비교 연산자들로 이루어진 여러 개의 조건들을논리적으로 연결시키기 위해서 사용되는 연산자
  2. 논리 연산자의 종류
  3. 예제
    소속팀이 삼성블루원즈이거나 전남드래곤즈에 소속된 선수들이어야 하고
    포지션이 미드필더 (MF:Midfielder) 이어야 한다.
    키는 170 센티미터 이상이고 180 이하여야 한다.
    1. 포지션이 미드필더가 아닌 선수들이 출력된 것은 논리 연산자의 우선 순위 때문이다.(OR 논리 연산자보다 AND 논리 연산자를 먼저 실행)
    2. 괄호를 사용해 우선 순위를 올바르게 수정한다.
    3. SQL 비교 연산자인 ' IN'과 논리 연산자인 ' OR'은 결과도 같고 내부적으로 처리하는 방법도 같다

부정 연산자

  1. 부정 연산자 종류
  2. 예제
    삼성블루왕즈 소속인 선수들 중에서 포지션이 미드필더 (MF: Midfielder) 가 아니고, 키가 175 센티미터
    이상 185 센티미터 이하가 아닌 선수들의 자료를 찾아본다.
    1. 쿼리1
    2. 쿼리2

ROWNUM, TOP 사용

ROWNUM(오라클)

  1. 컬럼과 비슷한 성격의 Pseudo Column으로써 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호
  2. 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용
    1. SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1
    2. SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;

TOP 절(SQL Server)

  1. 결과 집합으로 출력되는 행의 수를 제한
    1. SELECT TOP(l) PLAYER_NAME FROM PLAYER;
    2. SELECT TOP(N) PLAYER NAME FROM PLAYER;
  2. 표현식
    1. Expression 반환할 행의 수를 지정하는 숫자이다.
    2. PERCENT 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨 을 나타낸다.
    3. WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며. TOP N(PERCENT) 의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.
  3. SQL 문장에서 ORDER BY 절이 사용되지 않으면 Oracle의 ROWNUM과 SQL Server의 TOP 절은 같은 기능을 하지만. ORDER BY 절이 같이 사용되면 기능의 차이가 발생한다.