메뉴 건너뛰기

bysql.net

제5절_WHERE_절

2012.03.10 19:14

보라빛고양이 조회 수:14879

1. WHERE 조건절 개요

 사용자들은 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE 절을 이용하여 자료들에 대하여 제한할 수 있다.

 

 WHERE 절에는 두 개 이상의 테이블에 대한 조인 조건을 기술하거나 결과를 제한하기 위한 조건을 기술할 수도 있다.

 

 현실의 데이터베이스는 많은 사용자나 프로그램들이 동시에 접속하여 다량의 트랜잭션을 발생하고 있다. WHERE 조건절을 사용하지 않고 필요 없는 많은 자료들을 데이터베이스로부터 요청하는 SQL 문장은 대량의 데이터를 검색하기 위해 데이터베이스가 설치되어 있는 서버의 CPU나 MEMORY와 같은 시스템 자원(Resources)들을 과다하게 사용한다. 또한 많은 사용자들의 QUERY에 대해 바로바로 처리를 해주지 못하게 되고, 또한 검색된 많은 자료들이 네트워크를 통해서 전달됨으로써 문제점들을 발생시킨다.

 

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

WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성된다.

- 칼럼(Column)명 (보통 조건식의 좌측에 위치)

 - 비교 연산자 - 문자, 숫자, 표현식 (보통 조건식의 우측에 위치)

- 비교 칼럼명 (JOIN 사용시)

2. 연산자의 종류

- 비교 연산자 (부정 비교 연산자 포함) - SQL 연산자 (부정 SQL 연산자 포함) - 논리 연산자

연산자의 우선순위를 살펴보면 다음과 같다.

- 괄호로 묶은 연산이 제일 먼저 연산 처리

- 연산자들 중에는 부정 연산자(NOT)가 먼저 처리

- 비교 연산자(=,>,>=,<,<=), SQL 비교 연산자(BETWEEN a AND b, IN (list), LIKE, IS NULL)가 처리

- 논리 연산자 중에서는 AND, OR의 순으로 처리

 

3. 비교 연산자

 

 

4. SQL 연산자

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

5. 논리 연산자

논리 연산자는 비교 연산자나 SQL 비교 연산자들로 이루어진 여러 개의 조건들을 논리적으로 연결시키기 위해서 사용되는 연산자라고 생각하면 된다. [표 Ⅱ-1-21]울 보고 실제로 적용되는 예를 통해 사용방법을 이해한다.

 

 예제 2.jpg

예제 2답.jpg 예제 1.jpg 예제 1 답.jpg

6. 부정 연산자

비교 연산자, SQL 비교 연산자에 대한 부정 표현을 부정 논리 연산자, 부정 SQL 연산자로 구분할 수 있다.

 

7. ROWNUM, TOP 사용

  • ROWNUM

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

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

 

1건의 행만 가져오고 싶을 때

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1; 

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= 1; 

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM < 2; 처럼 사용

 

두 건 이상의 N 행을 가져오고 싶을 때는 ROWNUM = N; 처럼 사용할 수 없음

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM <= N;

- SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM

추가적인 ROWNUM의 용도로는 테이블 내의 고유한 키나 인덱스 값을 만들 수 있다.

- UPDATE MY_TABLE SET COLUMN1 = ROWNUM;

  • TOP 절

SQL Server는 TOP 절을 사용하여 결과 집합으로 출력되는 행의 수를 제한할 수 있다. TOP 절의 표현식은 다음과 같다.

TOP (Expression) [PERCENT] [WITH TIES]

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

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

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

 

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

- SELECT TOP(1) PLAYER_NAME FROM PLAYER; 처럼 사용

 

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

- SELECT TOP(N) PLAYER_NAME FROM PLAYER; 처럼 출력되는 행의 개수를 지정

SQL 문장에서 ORDER BY 절이 사용되지 않으면 Oracle의 ROWNUM과 SQL Server의 TOP 절은 같은 기능을 하지만, ORDER BY 절이 같이 사용되면 기능의 차이가 발생

번호 제목 글쓴이 날짜 조회 수
58 Front Page file 운영자 2012.02.21 186700
57 Week1_이진우 [5] ljw 2012.07.16 46278
56 제1절_성능_데이터_모델링의_개요 file ljw 2012.03.04 44546
55 제4절_고급_조인_기법 suspace 2012.06.05 31240
54 제1절_Lock balto 2012.05.05 25259
53 제1절_데이터_모델의_이해 실천하자 2012.03.04 22594
52 제5절_식별자 file ljw 2012.03.04 18958
51 제1절_표준_조인(STANDARD_JOIN) file ljw 2012.03.19 15924
50 제3절_반정규화와_성능 file ljw 2012.03.04 15292
» 제5절_WHERE_절 file 보라빛고양이 2012.03.10 14879
48 제4절_관계(Relationship) [1] 실천하자 2012.03.04 13028
47 제5절_그룹_함수(GROUP_FUNCTION) file balto 2012.03.31 12458
46 제2절_소트_튜닝 file ljw 2012.06.04 12024
45 제2절_DDL(DATA_DEFINITION_LANGUAGE) [1] file balto 2012.03.09 11722
44 제7절_GROUP_BY_HAVING_절 suspace 2012.03.12 11531
43 제1절_데이터베이스_아키텍처 [2] ljw 2012.04.23 11523
42 제4절_서브쿼리 오예스 2012.03.27 11516
41 제1절_관계형_데이터베이스_개요 balto 2012.03.09 10446
40 제2절_정규화와_성능 file ljw 2012.03.04 10394
39 제2절_인덱스_튜닝 balto 2012.05.18 9904