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 테이블에서 id
가 1
인 행만 출력해보자.
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
이다.
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로 바꾸면
두개 출력된다!
즉 하나의 페이지가 몇개의 행을 가질까?를 뜻하게 된다.