Database/Oracle

Oracle [ 행읽기 READ , 행과 컬럼 제한하기 , 정렬과 페이징 ]

유정♡ 2024. 2. 14. 17:21

1. SELECT * FROM topic;  -> 모든 컬럼과 모든 행을 가져오는 명령어 SELECT * FROM topic; 여기서 * 는 모든 컬럼을 뜻 함.

 

2. SELECT id, title, created FROM topic; -> 컬럼을 제한하는 방법. 모든 컬럼을 나타내는 * 대신 원하는 컬럼 id, title, created을 입력.

 

3. SELECT * FROM topic WHERE id = 1; -> id가 1인 행만을 가져오는 방법.

 

4. SELECT * FROM topic WHERE id > 1; -> id가 1보다 큰 것을 가져오는 방법.

 

5. SELECT id, title, created FROM topic WHERE id = 1;   -> 행을 제한하는 것과 컬럼을 제한하는 것을 동시에 하는 법. id,title,created와 id=1만 보고 싶은 경우

 

6. SELECT * FROM topic ORDER BY id DESC; -> 정렬하는 방법 DESC명령어는 id 를 기준으로 해서 정렬을 하는데 큰 숫자가 먼저 나오게 하는 명령어, 반대로 ASC 명령어는 작은 숫자가 먼저 나오게 하는 것.  

 

7. SELECT * FROM topic ORDER BY title ASC; -> 알파벳이 작은 순 부터 A ~ Z 순으로 출력이 됨.

 

8. SELECT * FROM topic OFFSET 1 ROWS;  -> OFFSET 이란 의미는 0번째 이후에 나오는 행들을 가져온 것. 즉, 0번째인 id 1이후의 것들을 불러옴. 만약, 2 ROWS로 바꾼다면 1번째 이후인 id 3만 나옴. 데이터베이스의 데이터가 1억건이 넘게 있는 경우에는 SELECT * FROM topic; 을 사용하여 어마어마한 양의 데이터를 다 끌어오게 된다면 데이터베이스가 과부하가 됨. 이때 사용하는 명령어가 PAGE ( 한장의 종이에 담는 다는 의미 )

 

9. SELECT * FROM topic OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;  -> 가져올려고 하는 대상 중에서 0번째 이후에 1개만 가져오겠다는 의미. FETCH는 이중에서 몇개를 가져올 것이냐?  만약 OFFSET 1로 바꾸면 2번째 데이터 부터 하나의 행만 가져오겠단 의미. 만약 FETCH NEXT 2로 바꾼다면 2개의 행을 가져오겠단 의미. 

OFFSET은 몇번째 페이지 인가 ? 

FETCH는 하나의 페이지가 몇개의 행을 가질까?

 


결론, SELECT는 가장 기본적인 형태.

 

1. 어떤 테이블로 부터 가져올 것인가? = SELECT * FROM topic;  ( 여기서 topic은 테이블 이름 )

2. 어떤 컬럼을 가져올 것인가 ? 직접 언급할 수도 있고 = SELECT id, title, created FROM topic;

3. WHERE 문을 통해서 어떤 행을 가져올 것인가를 선택할 수도 있고 = SELECT * FROM topic WHERE id = 1;

4. ORDER BY를 통해 정렬을 할 수 있고 = SELECT * FROM topic ORDER BY id DESC;   

5. FETCH를 통해 PAGE 기능을 구현할 수 있다. OFFSET은 몇번째 페이지 인가 ?  FETCH는 하나의 페이지가 몇개의 행을 가질까?

 

* 데이터베이스의 데이터가 1억건이 넘게 있는 경우에는 SELECT * FROM topic; 을 사용하여 어마어마한 양의 데이터를 다 끌어오게 된다면 데이터베이스가 과부하가 됨.

이때 사용하는 명령어가 PAGE ( 한장의 종이에 담는 다는 의미 , OFFSET,  FETCH )

728x90