티스토리 뷰
5절 WHERE 절
WHERE 절
SELECT * FROM [WHERE 조건문]
원하는 자료만을 검색하기 위해 검색 조건을 설정
WHERE 절에 조건이 없는 FTS(Full Table Scan)은 SQL 튜닝 1차 검토 대상
※ 병렬 처리 등을 이용해 FTS를 유용하게 사용하는 경우도 있음
연산자
- 비교연산자 : =, >, >=, <, <=
- SQL연산자
- BETWEEN a AND b : a와 b 사이에 있는 값들
- IN (list) : 리스트에 있는 값중에서 하나라도 일치 여부. 리스트값은 쉼표로 구분
- LIKE '비교문자열' : 형태 일치 여부, 와일드 카드사용
- % : 0개 이상의 문자열 (이름이 S로 시작하면, LIKE 'S%')
- _ : 1개의 단일 문자 (두번째 글자가 A라면 LIKE '_A')
- IS NULL : NULL 값인지의 여부
- 논리연산자
- AND : 두 조건 모두 TRUE일 경우 TRUE
- OR : 두 조건 중 한개라도 TRUE라면 TRUE
- NOT : 뒤에 오는 조건절에 반대되는 결과 반환
- 부정비교연산자 : <>(ANSI/ISO 표준. !=, ^=도 사용가능), NOT 컬럼명 =, NOT 컬럼명 >
- 부정SQL연산자 : NOT BETWEEN a AND b, NOT IN (list), IS NOT NULL
우선순위 : ( ) → NOT → 비교연산자, SQL연산자 → AND → OR
문자 유형간 비교
비교 연산자의 양쪽이 모두 CHAR 타입
- 길이가 서로 다르다면 작은쪽 맨 뒤에 공백을 추가하여 같은 길이로 변경
- 서로 다른 문자가 나올 때까지 비교
- 달라진 첫 문자의 값에 따라 크기를 결정
- 맨 뒤의 공백의 수만 다르다면 서로 같은 값으로 결정
비교 연산자 중 어느 한쪽이 VARCHAR 타입
- 서로 다른 문자가 나올 때 까지 비교
- 길이가 다르다면 짧은 쪽이 끝날때까지만 비교, 길이가 긴 것이 크다고 판단
- 길이가 같고 다른 것이 없다면 같다고 판단
상수값과 비교할 경우
- 상수 쪽을 변수 타입과 동일하게 바꾸고 비교
ROWNUM, TOP
--Oracle
SELECT 컬럼명 FROM 테이블명 ROWNUM <= N or ROWNUM < N;
--SQL Server
SELECT TOP(N) 컬럼명 FROM 테이블명;
SELECT TOP(N) 컬럼명 FROM 테이블명 ORDER BY 컬럼명 DESC WITH TIES;
WHERE절에서 행의 갯수를 제한하는 목적
- ROWNUM은 1부터 동작하기 때문에, N이 2 이상인경우 ROWNUM = 2 와 같이 = 연산자를 사용할 수 없음
- Oracle은 ROWNUM으로 고유키나 인덱스 생성가능하지만 추천되지 않음
(ex) UPDATE 컬럼명 SET 컬럼명 = ROWNUM)
SQL Server는 PERCENT(결과 집합의 처음 몇% 행)도 제공
- WITH TIES(ORDER BY절이 있으면 마지막 행 같은 값 추가 출력)사용 가능하지만, ORDER BY 등으로 정렬하지 않으면 큰 의미가 없음
최종 수정일 : 2025/03/05
틀린 사항이 있다면 댓글로 알려주시면 감사하겠습니다.
'SQL > SQLD 이론' 카테고리의 다른 글
| [SQLD] SQL 기본 : 7절 GROUP BY, HAVING (0) | 2025.03.07 |
|---|---|
| [SQLD] SQL 기본 : 6절 함수 (0) | 2025.03.06 |
| [SQLD] SQL 기본 : 4절 트랜잭션 제어어 (0) | 2025.03.05 |
| [SQLD] SQL 기본 : 3절 데이터 조작어 (0) | 2025.03.05 |
| [SQLD] SQL 기본 : 2절 데이터 정의어 (0) | 2025.03.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- db의 역사
- 입출력
- Scanner
- 테이블
- 자료구조
- dialect
- 레코드
- 배열
- 알고리즘
- oracle
- db오브젝트
- SQL
- BufferedWriter
- DB
- BufferedReader
- Java
- APS
- DBMS
- SQL이란
- 데이터베이스
- StringBuilder
- 필드
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함