[SQL 7-1] 테이블 생성하기(Creating Tables with the SQL Procedure)
안녕하세요 ^^
이번 시간에는 SQL Procedure를 사용하여 테이블(Table)을 생성하는 방법에 대해 공부해보겠습니다.
이번 시간의 목표는 다음 네 가지입니다.
▶ PROC SQL에서는 새로운 테이블을 생성하기 위한 세 가지 방법이 있습니다.
▷ 방법 1 : 존재하는 테이블로부터 컬럼과 행을 그대로 복제하는 방법
▷ 방법 2 : 존재하는 테이블로부터 컬럼만을(행은 제외함) 복제하는 방법
▷ 방법 3 : SQL 프로그램에서 컬럼만을 정의하는 방법
위 세 방법들을 하나씩 살펴보겠습니다.
▶ 방법 1 : 존재하는 테이블로부터 컬럼과 행을 그대로 복제하는 방법
▷ 이 방법은 직책에 따라 직원들의 생일을 알고 싶을 때 사용할 수 있습니다.
각 직원이 몇 월에 태어났는지에 대한 테이블을 생성하는 코드를 작성해보겠습니다.
먼저 아래에서 확인할 수 있듯이 존재하는 테이블은 우리가 필요한 Job_title(직위)변수와 Birth_Date(생년월일)변수를 포함하고 있습니다.
테이블을 생성하기 위한 SQL 프로시저 형식은 다음과 같습니다.
그럼 SQL 프로시저를 사용하여 직원들의 직위와 태어난 달을 포함하는 테이블을 생성해보겠습니다.
결과를 보면 2개 변수와 9건의 자료를 갖는 테이블이 생성된 것을 알 수 있으며, 로그창에서도 이를 확인할 수 있습니다.
이렇게 생성한 새로운 테이블의 정보를 확인하는 절차를 진행하겠습니다.
DESCRIBE statement는 SAS log에서 테이블에 대한 정보를 보여주며, SELECT statement는 테이블의 속성을 리포트(output)으로 보여줍니다
(Base SAS procedures에서, DESCRIBE statement는 PROC CONTENTS와, SELECT statement는 PROC PRINT와 유사한 결과를 생성합니다.)
▶ 방법 2 : 존재하는 테이블로부터 컬럼만을(행은 제외함) 복제하는 방법
▷ 이 방법은 판매 테이블(orion.sales)와 같은 구조로 되어있는 새로운 판매 스태프에 대한 테이블을 생성하는 경우 사용할 수 있습니다.
방법 2는 방법 1과는 달리 기존 테이블의 (자료는 제외하고)구조만을 복제하여 가져오는 것입니다.
LIKE 절을 사용하여 존재하는 테이블의 구조를 복제할 수 있습니다.
기존 테이블에서 구조를 복제하여 테이블을 생성하는 프로그램 형식은 다음과 같습니다
Create table statement와 like 절을 사용하여 orion 라이브러리에 있는 sales 테이블의 구조를 복제해보겠습니다.
로그창을 보면, 행은 가져오지 않고 오직 변수(컬럼)만을 가져온 것을 확인할 수 있습니다.
▶ 방법 3 : SQL 프로그램에서 컬럼만을 정의하는 방법
▷ 이 방법은 할인(discount) 정보를 포함하는 새로운 테이블을 생성하고자 할 때 상용하는 방법입니다.
이 때 기존 테이블에 필요한 변수가 없을 때에도 원하는 구조의 테이블을 생성할 수 있습니다.
CREATE TABLE statement에서 컬럼을 정의하는 프로그램 형식은 다음과 같습니다.
CREATE TABLE statement을 사용하여 테이블 구조를 생성해보겠습니다.
프로그램을 보면, 테이블 정의는 괄호로 에워싸져 있고 개개별 컬럼의 정의는 ,(comma)로 구별되어있는 것을 볼 수 있습니다.
▷ ANSI(American National Standards Institute) 호환의 경우, PROC SQL은 테이블 정의에서 다음 데이터 형식을 허용합니다.
▷ 테이블을 생성하는 세 가지 방법에 대한 정리표입니다.
▶ 앞서 새로운 테이블을 생성해보았습니다. 다음으로는 이렇게 생성한 테이블에 데이터를 쌓는 방법에 대해 살펴보겠습니다.
▷ 우리는 새로운 테이블을 생성하는 방법 3에서 discounts 테이블을 생성하였었습니다.
이 테이블은 컬럼은 존재하지만 자료는 없는 빈 테이블입니다.
따라서 빈 테이블에 자료를 추가하는 방법들을 배워보도록 하겠습니다.
테이블에 자료를 추가하기 위한 방법은 세 가지(A, B, C)가 있는데, 이 중 적절한 방법을 선택하여 사용할 수 있어야 합니다.
INSERT statement는 이 세 가지 방법을 사용하여 빈(empty) 테이블에 자료를 추가하거나 이미 자료가 포함되어 있는 테이블에 자료를 추가할 수 있습니다.
▷ 방법 A : 열 - 값 쌍을 사용하는 행당 하나의 절
SET 절은 컬럼 이름값 쌍을 사용하여 자료를 추가하며 프로그램 형식은 다음과 같습니다.
아래 프로그램을 보면 SET 절을 사용하여 4개의 변수(Product_ID, Start_Date, End_Date, Discount)의 값들을 하나의 쌍으로 지정한 것을 확인할 수 있습니다.
여기서는 SET 절이 두 번 사용되어 총 2 행의 자료가 추가될 것입니다.
▷ 방법 B : 위치 값을 사용하는 행당 하나의 절
VALUES 절은 데이터의 단일 행에 있는 열에 데이터를 추가하며 프로그램 형식은 다음과 같습니다.
주의할 점은, VALUES 절은 열이 테이블에 정의 된 순서와 동일한 순서로 값을 나열해야 한다는 점입니다.
방법 A와 같이 2개의 행이 추가될 것입니다.
또한 INSERT 문은 VALUES 절이 데이터를 제공하는 순서대로 데이터가 삽입 될 열을 나열 할 수도 있습니다.
컬럼 목록의 순서는 테이블의 컬럼 순서와 관계가 없습니다.
▷ 방법 C : 위치 값을 기반으로 여러 행을 반환하는 쿼리
쿼리에서 반환 한 행은 테이블에 삽입되며, 테이블에 기존 행이 있으면 새 행이 추가됩니다.
빈(empty) 테이블 혹은 자료가 있는 테이블에 위치값을 기반으로 행을 추가하는 프로그램 형식은 다음과 같습니다.
쿼리는 INSERT statement의 열 목록과 같은 순서로 값을 나열해야 합니다.
INSERT statement의 열 목록 Product_ID, Discount, Start_Date, End_Date에 맞추어 SELECT statement에 값을 지정한 것을 확인할 수 있습니다.
이상 SQL Procedure를 사용하여 테이블을 생성하고 자료를 추가하는 방법에 대해 살펴보았습니다.
감사합니다 ^^
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!