Kim VamPa

[Oracle 기본사용법][03] SELECT(WHERE,ORDER BY, OFFSET, FETCH) 본문

공부/데이터베이스

[Oracle 기본사용법][03] SELECT(WHERE,ORDER BY, OFFSET, FETCH)

Kim VamPa 2020. 4. 5. 09:56
728x90
반응형

"생활코딩 Oracle"을 개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.


목표

  • 저번 '[Oracle 기본사용법][02]'글에서 사용한 SELECT를 기반으로 응용 명령문들을 공부합니다.
  • SELECT에 덧 붙여 WHERE, ORDER BY, OFFSET, FETCH에 대해 이해하고 "SQL Plus"를 사용해서 직접 실습해봅니다.

*해당 글의 실습은 Oracle XE버젼을 환경을 바탕으로 진행 행하였습니다..

목차

1. SELECT & WHERE

2. SELECT & ORDER BY

3. SELECT & OFFSET & FETCH(페이징 명령어)

 

0.  실습에 사용하는 표(Table)

 앞의 글 [02]의 표를 기준으로 하겠습니다.

[표 1]

테이블 이름 : topic

id title description created
1 ORACLE ORACLE is ... 2020.04.03
2 MySQL MySQL is .... 2020.04.03
3 NoSQL NoSQL is ... 2020.04.03

1. SELECT & WHERE

SELECT 검색대상컬럼 FROM 테이블명 WHERE 컬럼조건;
  • 특정 테이블에 조건을 만족하는 대상컬럼을 검색합니다.
  • 조건이 두 개 이상 일시 첫 번째 조건 뒤에 'AND(둘다만족)' / 'OR(둘 중 하나 이상 만족)'을 덧붙이고 조건을 쓰면 됩니다.

실습

1. topic테이블(표1)에서 모든 칼럼을 대상으로 id가 1을 만족하는 행을 검색합니다.

SELECT * FROM topic WHERE id = 1;

그림 1-1

- 결과창을 보면 ID가 1(파랑 밑줄)인 행만 검색된 걸 볼 수 있습니다.

 

2. topic테이블(표1)에서 모든 칼럼을 대상으로 id가 1보다 큰 조건을 만족하는 행을 검색합니다.

SELECT * FROM topic WHERE id > 1;

그림 1-2

- 결과를 보면 id가 1보다 큰 2와 3을 가진 행이 검색된 것을 볼 수 있습니다.

 

 

3. topic테이블(표1)에서 id, title, created칼럼을 대상(description칼럼 제외)으로 id가 1을 만족하는 행을 검색합니다.

SELECT id, title, created FROM topic WHERE id = 1;

그림 1-3

- 결과창을 보시면 id, title, created 칼럼만 검색된 것을 볼 수 있습니다.

- 조건이 id가 1인 행만 검색된 걸 볼 수 있습니다.

 

2. SELECT * ORDER BY

SELECT  검색대상칼럼 FROM 테이블명 ORDER BY 기준칼럼 DESC;
- 기준칼럼을 기준으로 내림차순
SELECT 검색대상칼럼 FROM 테이블명 ORDER BY  기준칼럼 ASC;
- 기준칼럼을 기준으로 오름차순

- ORDER BY 명령을 덧붙이면 정렬(오름차순, 내림차순)돼서 검색이 됩니다.

- ASC는 생략이 가능합니다.(기본값이 ASC 이기 때문입니다.)

 

실습

1. 토픽 테이블(표1)에서 모든 칼럼을 대상으로 id칼럼 기준 내림차순 검색합니다.

SELECT * FROM topic ORDER BY id DESC;

그림 2-1

- id 기준으로 내림차순(3->2->1)필터링된 검색 결과를 보실 수 있습니다.

 

2. 토픽 테이블(표1)에서 모든 칼럼을 대상으로 id칼럼 기준 오름차순 검색합니다.

SELECT * FROM topic ORDER BY id ASC;
SELECT * FROM topic ORDER BY id;

그림 2-2

- id기준으로 오름차순(1->2->3)필텅링된 결과를 보실 수 있습니다.

- ASC를 생략해도 똑같은 결과가 뜹니다.(그림 2-3)

 

 

3. SELECT & OFFSET * FETCH(페이징 명령어)

1. SELECT  검색대상칼럼 FROM 테이블명 OFFSET 숫자 ROWS;

2. SELECT  검색대상칼럼 FROM 테이블명 OFFSET 숫자1 ROWS
    FETCH NEXT 숫자2 ROWS ONLY;

*OFFSET-FETCH 명령어는 Oracle 데이터베이스 12 버전 이후부터 사용이 가능한 명령어입니다.

- 1번 OFFSET은 검색될 결과물(SELECT 검색 대상 칼럼 테이블명)에서 첫행부터 지정 행(숫자 ROWS)까지 제외를 요청하는 명령어입니다.
(EX. '5 ROWS' 일 경우 검색될 결과물에서 5행까지는 제외한 결과물이 검색됩니다.)

- 2번 FETCH는 OFFSET을 실행(SELECT 검색대상칼럼 FROM  테이블명 OFFSET 숫자1 ROWS)한 후 지정 갯수행(숫자2 ROWS)만큼 필터일을 요청하는 명령어입니다.

- FETCH 명령어는 OFFSET 뒤에서만 사용이 가능합니다.

 

실습

1. topic테이블(표1)에서 모든 칼럼을 대상으로 1번째 행을 제외한 결과물 요청합니다.

SELECT * FROM topic OFFSET 1 ROWS;

그림 3-1

- 결과를 보시면 본래는 id칼럼이 1,2,3 인행이 나와야 하지만 첫 번째 행(id =1)인 행을 제외한 결과가 나온 것을 보실 수 있습니다.

 

2. topic테이블(표1)에서 모든 칼럼을 대상으로 0번째 행을 제외한 결과물 중에서 1개의 행을 검색합니다.

SELECT * FROM topic OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;

그림 3-2

- OFFSET 까지 명령어 결과로는 3개의행(id =1,2,3)의 결과가 나와야 합니다

- 그 결과물 중 1개의 행(FETCH NEXT 1 ROWS ONLY)이 검색되신 것을 보실 수 있습니다.

 

Reference

Date

  • 2020.04.05 작성

 

 

 

 

728x90
반응형
Comments