ROWNUM, ROWID, WITH문
포스트
취소

ROWNUM, ROWID, WITH문

해당 포스트는 SQLD를 학습하며 정리한 내용에 대한 포스트입니다.


이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.


🌈 ROWNUM, ROWID, WITH문

💻 ROWNUM

ROWNUM은 ORACLE 데이터베이스의 SELECT문 결과에 대해서 논리적인 일련번호를 부여한다

ROWNUM은 조회되는 행 수제한할 때 많이 사용된다.

=은 성립될 수 없고 항상 < 조건이나 <= 조건을 사용해야 한다.

ROWNUM은 화면에 데이터를 출력할 때 부여되는 논리적 순번이다.

  • 만약 ROWNUM을 사용해서 페이지 단위 출력을 하기 위해서는 인라인 뷰(Inline view)를 사용해야 한다.

Top-N 쿼리를 작성할 때 주의해야할 사항은 ORDER BY 절이 WHERE 절보다 나중에 수행되기 떄문에 ROWNUM으로 순서를 지정할 때에는 ORDER BY 절 바깥에서 해야한다는 점이다.

ROWNUM과 ORDER BY를 같은 단락에서 작성하게 될 경우 ROWNUM으로 랜덤하게 순서가 지정된 후 ORDER BY로 정렬되기 때문에 사실상 의미 있는 데이터라고 볼 수 없다.

인라인 뷰(Inline view)

  • 인라인뷰는 FROM절에 사용되는 서브쿼리를 의미한다. 인라인 뷰(Inline view)
  • ROWNUM의 값을 1, 2, 3, 4, 5, 6…. 같이 순차적으로 증가하는 ROWNUM 데이터를 얻고 싶을 때 인라인 뷰를 사용하는 것이다. 인라인 뷰(Inline view)
  • 위의 예에서 “ROWNUM < 2”까지는 사용 가능하다.
  • 한 행을 가지고 올 수 있기 때문이다. 인라인 뷰(Inline view)
  • 위와 같이 5건의 행을 조회하기 위해서는 인라인 뷰를 사용하고 ROWNUM에 별칭을 사용해야 한다.


SQL Server의 TOP 구문과 MySQL의 limit 구문

Oracle은 ROWNUM을 사용하지만 SQL Server는 TOP문을 사용하고 MySQL은 LIMIT구를 사용한다.

  • 즉 10명만 인출(Fetch)하고자 할 때에는 다음과 같이 사용한다.

    • SQL SERVER
      • SELECT TOP(10) FROM EMP;
    • MySQL
      • SELECT * FROM EMP LIMIT 10;

ROWNUM을 활용하여 웹 게시판에서 사용되는 쿼리문의 형식

  • ROWNUM을 활용하여 웹 게시판에서 사용되는 쿼리문의 형식이다.

💻 ROWID

ROWID는 ORACLE 데이터베이스 내에서 데이터를 구분할 수 있는 유일한 값이다.

ROWID는 “SELECT ROWID. EMPNO FROM EMP”와 같은 SELECT문으로 확인할 수 있다.

ROWID를 통해서 데이터가 어떤 데이터 파일, 어느 블록에 저장되어 있는 지 알 수 있다.

ROWID는 테이블에 데이터를 입력하면 자동으로 생성되는 값이다.

ROWID 구조

구조길이설명
오브젝트 번호1~6오브젝트별로 유일한 값을 가지고 있으며, 해당 오브젝트가 속해 있는 값이다.
상대 파일 번호7~9테이블스페이스에 속해 있는 데이터 파일에 대한 상대 파일번호이다.
블록 번호10~15데이터 파일 내부에서 어느 블록에 데이터가 있는지 알려준다.
데이터 번호16~18데이터 블록에 데이터가 저장되어 있는 순서를 의미한다.

ROWID

💻 WITH문

WITH구문은 서브쿼리(Subquery)를 사용해서 임시 테이블이나 뷰처럼 사용할 수 있는 구문이다.

서브쿼리 블록에 별칭을 지정할 수 있다.

옵티마이저는 SQL을 인라인 뷰나 임시 테이블로 판단한다.

WITH문

UNION vs UNION ALL

UNION

  • 2개의 테이블을 합해서 출력하며 중복은 제외하는 키워드

UNION ALL

  • 2개의 테이블을 합해서 출력하며 중복된 것을 포함한다.


🎯 추가 내용

👉


📚 레퍼런스

정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.

한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.

SQL 개발자 (SQLD) 자격증 따기 Part.2 / [유용한IT학습]

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.