본문 바로가기

공부/데이터베이스

[오라클로 배우는 데이터베이스 입문] 17. 레코드와 컬렉션

1. 자료형이 다른 여러 데이터를 저장하는 레코드

- 레코드란? 자료형이 각기 다른 데이터를 하나의 변수에 저장하는 데 사용

TYPE 레코드 이름 IS RECORD(
변수 이름 자료형 NOT NULL := (또는 DEFAULT) 값 또는 값이 도출되는 여러 표현식
)
레코드 이름: 저장할 레코드 이름 지정
변수 이름: 레코드 안에 포함할 변수 지정, 변수는 여러 개 지정할 수 있으며 쉼표(,)로 구분
자료형: 지정한 변수의 자료형을 지정, 이 자료형 역시 %TYPE,%ROWTYPE 지정이 가능합니다
NOT NULL: 지정한 변수에 NOT NULL 제약 조건을 지정(생략 가능)
:= (또는 DEFAULT) 값 또는 값이 도출되는 여러 표현식: 기본값 지정(생략 가능)

레코드 정의해서 사용하기

- 레코드를 사용한 INSERT

PL/SQL문에서 테이블에 데이터 삽입,수정하는 INSERT, UPDATE문에도 레코드 사용 가능

데이터 삽입할 테이블 생성 및 조회
레코드 사용하여 INSERT한 후 테이블 조회

- 레코드를 사용한 UPDATE (SET절은 ROW키워드와 함께 레코드 제시 해야함)

레코드를 사용한 UPDATE하기

- 레코드를 포함하는 레코드(중첩 레코드) 

REC_DEPT, REC_EMP 두 개 레코드를 사용하고 있으며 REC_EMP레코드는 dinfo변수에 DEC_DEPT레코드를 자료형으로 지정

2. 자료형이 같은 여러 데이터를 저장하는 컬렉션

- 컬렉션은 특정 자료형의 데이터를 여러 개 저장하는 복합 자료형으로 연관 배열, 중첩테이블, VARRAY 총 세가지 사용가능

- 연관 배열(associative array(or index by table): 인덱스라고도 불리는 키, 값으로 구성되는 컬렉션으로 중복되지 않은 유일한 키를 통해 값을 저장하고 불러오는 방식을 사용

TYPE 연관 배열 이름 IS TABLE OF 자료형 [NOT NULL]
INDEX BY 인덱스형;
연관 배열 이름: 작성할 연관 배열 이름 지정
자료형 [NOT NULL] : 연관 배열 옆에 사용할 자료형 지정/VARCHAR2, DATE, NUMBER와 같은 단일 자료형 지정,%TYPE, %ROWTYPE같은 참조 자료형도 사용가능/NOT NULL 옵션 사용할 수 있으며 생략 가능
인덱스형: 키로 사용할 인덱스의 자료형 지정, BINARY_INTEGER,PLS_INTEGER같은 정수 또는 VARCHAR2같은 문자 자료형 사용가능

연관 배열 사용하기

○ 레코드를 활용한 연관 배열

%ROWTYPE으로 연관 배열 자료형 지정하기

- 컬렉션 메서드: 오라클이 사용상 편의를 위해 제공하는 서브 프로그램으로 컬렉션과 관련된 다양한 정보를 조회할 수 있음/컬렉션 내의 데이터 삭제나 컬렉션 크기 조절을 위한 특정 조작도 가능

메서드 설명
EXIST(s) 컬렉션에서 n인덱스의 데이터 존재 여부를 true/false로 반환
COUNT 컬렉션에 포함되어 있는 요소 개수를 반환
LIMIT 현재 컬렉션의 최대 크기를 반환, 최대 크기가 없으면 NULL을 반환
FIRST 컬렉션의 첫번째 인덱스 번호를 반환
LAST 컬렉션의 마지막 인덱스 번호를 반환
PRIOR(n) 컬렉션에서 n인덱스 바로 앞 인덱스 값을 반환, 대상 인덱스 값이 존재하지 않는다면 NULL을 반환
NEXT(n) 컬렉션에서 n인덱스 바로 다음 인덱스 값을 반환, 대상 인덱스 값이 존재하지 않는다면 NULL을 반환
DELETE 컬렉션에 저장된 요소를 지우는 데 사용
- DELETE: 컬렉션에 저장되어 있는 모든 요소 삭제
- DELETE(n): n인덱스의 컬렉션 요소를 삭제
- DELETE(n,m):n인덱스부터 m인덱스까지 요소를 삭제
EXTEND 컬렉션 크기를 증가시킴, 연관 배열을 제외한 중첩 테이블과 VARRAY에서 사용
TRIM 컬렉션 크기를 감소시킴, 연관 배열을 제외한 중첩 테이블과 VARRAY에서 사용
컬렉션 메서드는 컬렉션 형으로 선언한 변수에 마침표(.)와 함께 작성하여 사용할 수 있음

컬렉션 메서드 사용하기