[Oracle] 행 읽기 (Select) 및 정렬

당당·2023년 4월 28일
0

Oracle

목록 보기
6/51

https://opentutorials.org/course/3885/26345

📔설명

Read는 데이터를 가져오는 작업이다.

원하는 데이터를 가져오는 방법을 알아보고,
그 데이터를 정렬하거나 해보자!


☝🏻모든 컬럼 읽기

데이터를 가져 올 땐, 어떤 데이터를 가져올 것인지 선택하는 것이 핵심이다.

가장 쉬운 것은 모든 컬럼과 모든 행을 가져오는 것이다.

모든 컬럼 읽기 형식

SELECT * FROM 테이블명;

이것이 가장 기본적인 형식이다.

이전에 만든 테이블로 모든 컬럼을 읽는다 하면 아래와 같은 sql이 작성된다.

SELECT * FROM topic;

sqlplus에 입력하면 위처럼 출력된다! 잘 출력된다.


🚫행과 컬럼 제한

이번에는 컬럼 전체가 아닌 원하는 컬럼만 출력해보자.

컬럼 제한 읽기 형식

SELECT 컬럼명,컬렴명... FROM 테이블명;

우리의 topic 테이블에서 id, title, created 열만 출력해보자.

SELECT id, title, created FROM topic;

description은 보이지 않고 다른것들은 잘 출력되는 것을 확인할 수 있다!

행 제한 읽기 방식

SELECT * FROM 테이블명 WHERE 조건;

조건을 만족하는 행만 출력이 된다.

예를 들어, topic 테이블에서 id1인 행만 출력해보자.

SELECT * FROM topic WHERE id=1;

만약, id가 1보다 큰 것을 가져오고 싶을 땐 아래처럼 작성한다.

SELECT * FROM topic WHERE id>1;

id가 2와 3인 것만 잘 가져오는 것을 볼 수 있다.

행과 컬럼 제한 읽기 형식

SELECT 컬럼명, 컬럼명,.. FROM 테이블명 WHERE 조건;

조건에 맞는 행 중, 선택한 컬럼만을 출력하는 읽기 방식이다.

topic 테이블에서 id가 1인 행의 id, title, created만 출력해보자.

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

원하는 컬럼만 출력되는 것을 볼 수 있다!


정렬과 페이징

출력된 결과의 정렬 상태를 바꾸고, 출력되는 행의 개수를 바꾸는 방법을 배워보자!

정렬 형식

SELECT * FROM 테이블명 ORDER BY 기준컬럼 [ASC|DESC];

기준컬럼을 기준으로 ASC : 오름차순, DESC : 내림차순 으로 정렬하는 것이다.

SELECT * FROM topic ORDER BY id DESC;

id를 기준으로 내림차순(큰 수 먼저) 정렬을 해보자.

id가 3인 것이 먼저 나오는 것을 확인할 수 있다!!
3->2->1 순으로 정렬되었다.


📃페이지

데이터가 만약 1억건일 때는 저렇게 *로 출력하면 데이터베이스에 부하가 간다. 그럴 땐, 원하는 행만 가지고 와야한다.
이런 것을 페이지라고 한다.
페이지 : 데이터를 조각내서 가져오는 것

오프셋 형식

SELECT * FROM 테이블명 OFFSET 출력기준행번호 ROWS;

topic 테이블에 적용시켜보자.

SELECT * FROM topic OFFSET 1 ROWS;

1을 제외한 2와 3의 행만 출력된 것을 알 수 있다.

컴퓨터는 0부터 센다.
OFFSET 1이라고 하는 것은 0번째 이후에 있는 행들만 가져온다는 뜻이 된다. 즉, 1번 행 부터 출력한다.

SELECT * FROM topic OFFSET 2 ROWS;

2번 행부터 출력해서 2번행인 id가 3인것만 출력된 것을 알 수 있다.

Fetch 형식

이제 어디서부터 가져오는 지는 알겠지만, 그 중 몇개를 가져오는지 결정하는 것이 Fetch이다.

SELECT *
FROM 테이블명 
OFFSET 출력기준행번호 ROWS
FETCH NEXT 출력개수 ROWS ONLY;

topic 테이블로 적용해서 살펴보자!

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

이것은 0번째 행을 기준으로 하나만 가져오겠다는 것이다.

0번째 행인 id값이 1인 것만 출력된다.

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

2로 바꾸면

두개 출력된다!

즉 하나의 페이지가 몇개의 행을 가질까?를 뜻하게 된다.

profile
MySQL DBA 신입

0개의 댓글