Programming/SQL 기초

[ SQL ] 데이터베이스 #4 오라클

yul_S2 2022. 12. 7. 13:13
반응형

오라클

< 오라클의 테이블 >

오라클은 Tablespace, Segment, Extent, Data Block 이라는 형태로 나누어 관리한다.

 

1. 테이블 스페이스(Tablespace)

  • 논리적으로 서로 관련된 데이터가 저장된 파일들을 묶어놓은 단위이다.
  • 데이터 파일 경로와는 관계가 없다.
  • 실제 파일인 물리적인 파일과 논리적인 저장 단위를 서로 분리하는 역할을 한다
  • 데이터베이스의 논리적 저장 구조 중에 가장 포괄적이고 넓은 범위를 가진 형태다.
  • 실제 데이터베이스 각각의 물리적 파일들은 테이블 스페이스에 N:1 형태로 연결되어 있다.
  • 테이블 스페이스는 논리적으로 서로 관련된 데이터가 저장된 파일들을 묶어놓은 단위이다.

 

2. 세그먼트(Segment)

  • 데이터베이스를 사용할 때 가장 많이 접근하게 되는 것은 테이블이다.
  • 테이블 스페이스 내에 특정 유형의 논리적 저장 구조로 할당된 영역이다.
  • 테이블, 인덱스 등이 세그먼트에 포함된다.
  • 저장 공간을 가지는 객체이며 각각의 테이블이다.

 

3. 익스텐트(Extent)

  • 하나 이상의 연속된 데이터 블록의 모임이다.
  • 세그먼트에 대한 공간 할당 단위이기도 하다.
  • 테이블 스페이스는 여러 개의 물리적 파일로 이루어지지만, 익스텐트는 하나의 데이터 파일에만 존재할 수 있다.

 

4. 블록(Data Block )

  • 오라클의 기본 입출력 단위로서 모든 데이터는 블록으로 이루어져 있다.
  • 데이터베이스에서 데이터를 검색할 때 아주 작은 데이터 하나만을 찾으려고 할 때도 최소한 하나의 블록에 저장된 전체 데이터에 대해서는 스캔이 이루어진다.
  • 운영체제에 따라 블록 크기의 시스템 기본설정이 다르며 최소는 2KB 이고 최대는 64KB 이다. 블록은 톱다운(Top-Down) 방식으로 헤더 정보가 증가하고 보텀업(Bottom-Up) 방식으로 데이터가 증가한다.

 

 

< 사용자 데이터 저장 >

오라클에서는 여러 가지 방법으로 사용자 데이터를 저장할 수 있다.

 

 

 

 

 

1. 클러스터

  • 테이블 데이터를 저장하기 위해 선택적인 방식을 제공한다.
  • 같은 데이터 블록을 공유하는 테이블 또는 테이블 그룹으로 구성된다.
  • 함께 저장되어야 하는 행을 식별하는 데 사용되는 클러스터 키를 가진다.
  • 클러스터 키는 하나 이상의 열로 구성할 수 있다.
  • 클러스터의 테이블은 클러스터 키에 대응하는 열을 가진다.
  • 클러스터는 테이블을 사용하는 응용 프로그램에 그대로 적용되는 방식이다.

 

2. 인덱스 구성 테이블   

 

  • 하나 이상의 열에 기본키 인덱스를 가진 힙 테이블과 유사하다.
  • 인덱스 구성 테이블에서는 정확한 일치와 범위 검색을 포함한 질의에 대해 빠른 키 기반의 테이블 데이터 액세스를 제공한다.
  • 인덱스 구성 테이블의 키 열이 테이블과 인덱스에서 중복되지 않으므로 필요한 저장 영역이 감소한다.

 

3. 분할 테이블

  • 분할 테이블에서는 크기를 조정할 수 있는 응용 프로그램을 구축할 수 있다.
  • 분할 테이블에는 하나 이상의 분할 영역이 있으며 각 분할 영역은 범위 분할, 해시 분할, 조합 분할, 목록 분할을 사용하여 분할된 행을 저장한다.
  • 분할 테이블의 각 분할 영역은 세그먼트이며 다른 테이블 스페이스에 있을 수 있다.
  • 분할 테이블의 분할 영역은 여러 프로세스를 동시에 사용하여 질의하거나 조작할 수 있는 대형 테이블에 유용하다.
  • 분할 테이블 내의 분할 영역 관리에 특수 명령을 사용할 수 있다.

 

4. 일반 테이블

(1) 일반 테이블의 개요

  • 테이블이라고 하는 일반 테이블은 사용자 데이터를 저장하는 데 가장 일반적으로 사용되는 폼이며 기본 테이블이다.
  • 데이터베이스 관리자는 일반 테이블의 행 분산에 대해 매우 제한된 제어를 수행한다.
  • 행은 일반 테이블의 작업에 따라 임의의 순서로 저장된다

 

 

(2) 일반 테이블의 조회

select *|columns from [as 별칭] tables; 

테이블이나 명령문에서 컬럼을 select 문으로 조회한다.

컬럼 대신에 *(애스터리스크)를 사용하면 모든 컬럼을 조회할 수 있다.

 

select *|columns from [as 별칭] tables where 조건식; 

as 명령어는 컬럼명의 별칭이나 가상 컬럼을 생성할 수 있으며 as 명령어는 생략할 수 있다.

 

ex) tab 시스템 테이블로 확인

scott계정으로 접속하여 scott계정의 소유 테이블 : tab

SELECT * FROM TAB;

ex) all_users 시스템 테이블로 확인

최고 관리자인 sys 계정으로 접속하여 오라클의 모든 계정 : all_users

SELECT USERNAME FROM ALL_USERS;

 

< 오라클의 함수 >

  • 함수는 사용자가 원하는 데이터를 검색할 때 자주 사용한다.
  • 함수는 구현이 복잡한 기능들을 미리 생성해 두고 손쉽게 사용할 수 있도록 하기 위한 기능이다.
  • 제공되는 함수들은 기본적으로 SQL 문을 더욱 강력하게 해준다.
  • 함수는 데이터값을 조작하는 데 사용된다.
  • 데이터 타입 변환 SQL 함수는 때때로 인수를 받아들일 수 있으며 항상 값을 반환한다.
  • 함수의 특성: 
    * 데이터에 계산을 수행할 수 있다.
    * 개별적인 데이터 항목을 수정할 수 있다.
    * 행의 그룹에 관한 결과를 조작할 수 있다.
    * 출력을 위한 날짜와 숫자 형식을 조절할 수 있다.
    * 열의 데이터 타입을 변환할 수 있다.
  • 함수의 유형은 크게 단일행 함수(single-row function)와 다중행함수(multi-row function)로 이루어져 있다.

 

1. 단일행 함수

(1) 단일행 함수의 개요

  • 단일 행에 대해서만 실행되며 행 당 하나의 결과를 반환한다.
  • 데이터 항목을 조작하고 인수를 받아들이고 하나의 값을 반환한다.
  • 반환되는 각 행에서 실행되고 행 당 하나의 결과를 반환한다.
  • 데이터 유형을 수정할 수 있으며 중첩될 수 있다.
  • 열이나 표현식을 인수로 받아들일 수 있다.
  • 참조되는 유형이 아닌 다른 유형의 데이터 값을 반환할 수 있다.
  • 하나 이상의 인수를 받아들일 수 있다.
  • select 문, where 문 order by 문에서 사용할 수 있고 중첩될 수 있다.

(2) 단일행 함수 사용되는 경우

  • 데이터에 대해 계산을 수행할 경우
  • 각각의 데이터 항목을 변경할 경우
  • 출력할 날짜 형식을 변경할 경우
  • 컬럼 데이터 타입을 변경할 경우

 

 

 

 

 

2. 다중행함수

(1) 다중행 함수의 개요

  • 다중행 함수는 데이터의 다중 행을 대상으로 조회하여 하나의 결과값을 반환한다.
  • 단일행 함수와 달리 다중행 함수는 행 집합에 대해 실행되어 그룹 당 하나의 결과를 산출하고 행 집합은 전체 테이블이나 그룹으로 분할된 테이블로 구성될 수 있다.
  • 다중행 함수는 select 문 뒤에 배치한다.
  • 여러 다중행 함수는 select 문 뒤에 ,(콤마)로 구분하여 함께 사용할 수 있다.
  • 다중행 함수의 집계 관련 함수는 where 문에서는 사용할 수 없다.
  • distinct 명령어를 사용하면 중복되지 않는 값만 사용한다.
  • 다중행 함수의 집계 관련 함수는 group by 문을 사용하지 않으면 일반 컬럼과 사용할 순 없다

 

 

 

반응형