PL/SQL - 데이터 유형

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 PL/SQL 데이터 유형의 fascineting 세계로 접근해 보겠습니다. 프로그래밍에 처음이라면 걱정 마세요; 이 여정을 단계별로 안내해 드리겠습니다. 이 튜토리얼의 끝을 맺을 때, 여러분은 PL/SQL의 다양한 데이터 유형에 편안하게 느끼고 코딩 여정을 시작할 준비가 되 있을 것입니다!

PL/SQL - Data Types

PL/SQL 스칼라 데이터 유형 및 하위 유형

기본적인 내용부터 시작해 보겠습니다. PL/SQL에서 스칼라 데이터 유형은 우리 프로그램의 기본 블록입니다. 이들은 단일 값을 나타냅니다. 예를 들어 숫자나 텍스트입니다.

스칼라 데이터 유형이란?

스칼라 데이터 유형은 PL/SQL에서 가장 간단한 형태의 데이터입니다. 이들은 우리 프로그래밍 우주의 원자와 같아요 - 작고 분할할 수 없는 단위로, 더 복잡한 구조를 만들기 위해 사용됩니다.

다음은 스칼라 데이터 유형을 설명하는 간단한 예제입니다:

DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('제 이름은: ' || my_name);
END;

이 예제에서 my_nameVARCHAR2 데이터 유형의 변수로, 텍스트를 저장하는 데 사용됩니다. 이에 'John Doe' 값을 할당했습니다. 이 코드를 실행하면 다음과 같은 출력이 나타납니다: "제 이름은: John Doe".

PL/SQL 수학 데이터 유형 및 하위 유형

이제 숫자에 대해 이야기해 보겠습니다. PL/SQL에는 다양한 유형의 숫자를 처리할 수 있는 여러 수학 데이터 유형이 있습니다.

일반 수학 데이터 유형

다음은 일반적인 수학 데이터 유형과 그 예제입니다:

데이터 유형 설명 예제
NUMBER 일반 목적 숫자 NUMBER(10,2)
INTEGER 정수 INTEGER
BINARY_FLOAT 32비트 부동소수점 숫자 BINARY_FLOAT
BINARY_DOUBLE 64비트 부동소수점 숫자 BINARY_DOUBLE

이제 이들을 실제로 사용해 보겠습니다:

DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('답은: ' || my_integer);
DBMS_OUTPUT.PUT_LINE('Pi는 약: ' || my_float);
DBMS_OUTPUT.PUT_LINE('제 연봉은: $' || my_salary);
END;

이 스크립트는 세 가지 다른 수학 유형의 변수를 선언합니다. my_salaryNUMBER(8,2) 유형은 총 8자리까지 저장할 수 있으며, 소수점 이하 2자리입니다.

PL/SQL 문자 데이터 유형 및 하위 유형

텍스트 데이터는 프로그래밍에서 매우 중요합니다. PL/SQL은 텍스트를 효율적으로 처리할 수 있는 여러 문자 데이터 유형을 제공합니다.

일반 문자 데이터 유형

다음은 일반적인 문자 데이터 유형과 그 예제입니다:

데이터 유형 설명 예제
VARCHAR2 가변 길이 문자열 VARCHAR2(100)
CHAR 고정 길이 문자열 CHAR(10)
NVARCHAR2 가변 길이 유니코드 문자열 NVARCHAR2(100)
NCHAR 고정 길이 유니코드 문자열 NCHAR(10)

이제 이들을 실제로 사용해 보겠습니다:

DECLARE
my_varchar VARCHAR2(50) := 'Hello, World!';
my_char CHAR(10) := 'Fixed     ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- 일본어 "Hello"
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || my_char || '(끝)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2: ' || my_nvarchar);
END;

이 스크립트에서 CHAR 유형은 문자열을 고정 길이로 채우기 위해 공백을 추가합니다.

PL/SQL 부울 데이터 유형

부울 데이터 유형은 프로그램에서 결정을 내리는 데 필수적입니다. 부울 데이터 유형은 세 가지 가능한 값을 가질 수 있습니다: TRUE, FALSE, 또는 NULL.

DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('이 사람은 학생입니다.');
END IF;

IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('이 사람은 직업이 없습니다.');
END IF;

IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('이 사람이 결혼했는지 모릅니다.');
END IF;
END;

이 스크립트는 부울 값을 사용하여 프로그램에서 결정을 내리는 방법을 보여줍니다.

PL/SQL 날짜 및 간격 유형

날짜와 시간을 처리할 때, PL/SQL은 이러한 값을 정확하게 처리할 수 있는 특정 데이터 유형을 제공합니다.

일반 날짜 유형

다음은 일반적인 날짜 유형과 그 예제입니다:

데이터 유형 설명 예제
DATE 날짜와 시간 DATE
TIMESTAMP 날짜와 시간 및 소수점 초 TIMESTAMP
INTERVAL YEAR TO MONTH 연도와 월의 기간 INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND 일, 시, 분, 초의 기간 INTERVAL DAY TO SECOND

이제 이들을 실제로 사용해 보겠습니다:

DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;

DBMS_OUTPUT.PUT_LINE('현재 날짜: ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('1년 후 날짜: ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('나이: ' || age_interval);
END;

이 스크립트는 날짜, 타임스탬프 및 간격을 처리하는 방법을 보여줍니다.

PL/SQL 대형 객체(LOB) 데이터 유형

대량의 데이터를 처리할 때, PL/SQL은 LOB(Large Object) 데이터 유형을 제공합니다.

일반 LOB 유형

다음은 일반적인 LOB 유형과 그 예제입니다:

데이터 유형 설명 예제
CLOB 문자 대형 객체 CLOB
BLOB 바이너리 대형 객체 BLOB
NCLOB 국제 문자 대형 객체 NCLOB

이제 이들을 실제로 사용해 보겠습니다:

DECLARE
my_clob CLOB;
BEGIN
my_clob := '이 매우 긴 문자열은 몇 megabytes에 달할 수 있습니다.';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' 문자 길이');
END;

이 스크립트는 CLOB를 생성하고 그 길이를 가져오는 방법을 보여줍니다.

PL/SQL 사용자 정의 하위 유형

PL/SQL은 기존 데이터 유형을 기반으로 자신의 하위 유형을 만들 수 있게 해줍니다. 이는 코드의 가독성과 유지보수성을 높이는 데 도움이 됩니다.

DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('제 연봉: $' || my_salary);

-- 이는 오류를 발생시킬 것입니다:
-- my_salary := -1000;
END;

이 예제에서 우리는 positive_number 하위 유형을 만들었으며, 이는 항상 양수이어야 합니다.

PL/SQL NULL 값

마지막으로 NULL 값에 대해 이야기해 보겠습니다. PL/SQL에서 NULL 값은 알 수 없거나 사용할 수 없는 값을 나타냅니다. NULL은 0이나 빈 문자열과 다릅니다.

DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1은 NULL입니다');
END IF;

IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2는 NULL이 아니며, 빈 문자열입니다');
END IF;
END;

이 스크립트는 NULL과 빈 문자열의 차이를 보여줍니다.

그렇습니다! 우리는 PL/SQL의 주요 데이터 유형을 다루었습니다. 데이터 유형을 이해하는 것은 효율적이고 오류 없는 코드를 작성하는 데 필수적입니다. 계속 연습하면 PL/SQL 마스터가 될 것입니다!

Credits: Image by storyset