- HOME
- [종료]구루비 DB 스터디
- 2013년 하반기 - 오라클 트러블슈팅 스터디
- 5.WHERE 절
- WHERE 조건절 개요
- 연산자의 종류
- 비교 연산자
- SQL 연산자
- IN (list) 연산자
- LIKE 연산자
- BETWEEN a AND b 연산자
- IS NULL 연산자
- 논리 연산자
- 부정 연산자
- ROWNUM, TOP 사용
- ROWNUM(오라클)
- TOP 절(SQL Server)
WHERE 조건절 개요
- 테이블에 있는 모든 자료가 아닌 원하는 자료만을 검색하기 위해 사용
- 두개 이상의 테이블에 대한 조인조건이나 결과를 제한하기 위한 조건 기술 가능
- WHERE 조건절 없이 모든 자료를 검색하게 되면 FULL TABLE SCAN이 발새하게 되어 CPU, MEMORY, 네트워크를 과다하게 사용한다.
- 구문
- 조건식: 컬럼명(조건식의 좌측), 비교 연산자, 문자,숫자,표현식(조건식의 우측)/비교 컬럼명(조인시)
연산자의 종류
- 연산자의 종류
- 연산자의 우선순위
- 우선순위를 놓쳐 실수하지 않기 위해 괄호 사용을 권고한다.
비교 연산자
- 예제
- TEAM ID라는 팀명의 데이터 타입은 CHAR(3) 인데 비교 연산자 오른쪽에 K02의 값을 작은따옴표(' ')나 큰따옴표(" ")와 같은 인용 부호로 묶어서 처리하지 않았기 때문에 발생하는 에러
- NUMERIC과 같은 숫자형 형태의 값은 인용부호를 사용하지 않는다.
- 문자 유형간의 비교 조건이 발생하는 경우
- 예제
- WHERE HEIGHT )= 170 조건을 WHERE HEIGHT ) = '170' 이라고 표현하더라도,HEIGHT라는 칼럼이 숫자 유형의 변수이므로 내부적으로 ' 170'이라는 문자열을 숫자 유형 170으로 바꾸어 처리
SQL 연산자
- SQL 문장에서 사용하도록 기본적으로 예약되어 있는 연산자로서 모든 데이터 타입에 대해서 연산이 가능한 4 가지 종류가 있다.
IN (list) 연산자
- 예제1
- 예제2
- 다중 리스트를 이용한 IN 연산자는 SQL 문장을 짧게 만들어 주면서도 성능측면에서도 장점을 가질 수 있는 매우 유용한 연산자이므로 적극적인 사용을 권고
- 아래와는 다른 결과를 가지는 것 유의
LIKE 연산자
- 와일드카드(한 개 혹은 0개 이상의 문자를 대신해서 사용하기 위한 특수문자)를 활용
- 예제
BETWEEN a AND b 연산자
- 예제
IS NULL 연산자
- NULL(ASCII 00)은 값이 존재하지 않는 것으로 확정되지 않은 값을 표현할 때 사용한다.
- 어떤 값보다 크거나 작지도 않고 ' '(공백, ASCII 32) 이나 O(Zero, ASCII 48)과 달리 비교 자체가 불가능한 값이다.
- NULL 값과의 수치 연산은 NULL 값을 리턴한다
- NULL 값과의 비교연산은 거짓(FALSE)을 리턴한다.
- NULL 값의 비교 연산은 IS NULL, IS NOT NULL 이라는 정해진 문구를 사용해야 제대로 된 결과를 얻을 수 있다.
- 예제
- 문법 에러는 나지 않지만 WHERE 절의 조건이 거짓(FALSE) 이 되어 WHERE 절의 조건을 만족하는 데이터 를 한건도 얻지 못하게 된 것으로 의 미 없는 SQL이 된다.
논리 연산자
- 비교 연산자나 SQL 비교 연산자들로 이루어진 여러 개의 조건들을논리적으로 연결시키기 위해서 사용되는 연산자
- 논리 연산자의 종류
- 예제
소속팀이 삼성블루원즈이거나 전남드래곤즈에 소속된 선수들이어야 하고
포지션이 미드필더 (MF:Midfielder) 이어야 한다.
키는 170 센티미터 이상이고 180 이하여야 한다.
- 포지션이 미드필더가 아닌 선수들이 출력된 것은 논리 연산자의 우선 순위 때문이다.(OR 논리 연산자보다 AND 논리 연산자를 먼저 실행)
- 괄호를 사용해 우선 순위를 올바르게 수정한다.
- SQL 비교 연산자인 ' IN'과 논리 연산자인 ' OR'은 결과도 같고 내부적으로 처리하는 방법도 같다
부정 연산자
- 부정 연산자 종류
- 예제
삼성블루왕즈 소속인 선수들 중에서 포지션이 미드필더 (MF: Midfielder) 가 아니고, 키가 175 센티미터
이상 185 센티미터 이하가 아닌 선수들의 자료를 찾아본다.- 쿼리1
- 쿼리2
ROWNUM, TOP 사용
ROWNUM(오라클)
- 컬럼과 비슷한 성격의 Pseudo Column으로써 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호
- 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1
- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;
TOP 절(SQL Server)
- 결과 집합으로 출력되는 행의 수를 제한
- SELECT TOP(l) PLAYER_NAME FROM PLAYER;
- SELECT TOP(N) PLAYER NAME FROM PLAYER;
- 표현식
- Expression 반환할 행의 수를 지정하는 숫자이다.
- PERCENT 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨 을 나타낸다.
- WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며. TOP N(PERCENT) 의 마지막 행과 같은 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.
- SQL 문장에서 ORDER BY 절이 사용되지 않으면 Oracle의 ROWNUM과 SQL Server의 TOP 절은 같은 기능을 하지만. ORDER BY 절이 같이 사용되면 기능의 차이가 발생한다.
- HOME
- [종료]구루비 DB 스터디
- 2013년 하반기 - 오라클 트러블슈팅 스터디
- 5.WHERE 절