본문 바로가기

SQL

(Tibero 7) - varray 찍먹하기

반응형

🍳머리말

tibero7 에서는 list data type이 없기 때문에 그에 준하는 여러 type으로 column을 선언해 사용합니다. json보다 조회 및 data 변경이 빠른 varray를 다뤄보는 기본 예제에 대한 설명입니다.


📕Prerequisite

📔 Tibero 7

📔 DBeaver


📕생성

📔 varray

type선언으로 생성해야됩니다.

  📑 DDL

CREATE OR REPLACE TYPE "EX_VARRAY_TYPE" AS VARRAY(1000) OF NUMBER;

📔 table

조직, 요리사, 과학자, 회사원 table이 존재하며 조직이 요리사, 과학자 id 들을 varray로 들고 있습니다. 하나의 조직에 속한 여러 요리사들과 과학자들 그리고 회사원을 의미합니다.

  📑 DDL

CREATE SEQUENCE "요리사_SEQ" INCREMENT BY 1 START WITH 1 ORDER;
CREATE TABLE "요리사" ("ID" NUMBER NOT NULL, "name" VARCHAR2(100) NOT NULL, CONSTRAINT "요리사_pk" PRIMARY KEY (ID));

CREATE SEQUENCE "과학자_SEQ" INCREMENT BY 1 START WITH 1 ORDER;
CREATE TABLE "과학자" ("ID" NUMBER NOT NULL, "name" VARCHAR2(100) NOT NULL, CONSTRAINT "과학자_pk" PRIMARY KEY (ID));

CREATE SEQUENCE "회사원_SEQ" INCREMENT BY 1 START WITH 1 ORDER;
CREATE TABLE "회사원" ("ID" NUMBER NOT NULL, "name" VARCHAR2(100) NOT NULL, CONSTRAINT "회사원_pk" PRIMARY KEY (ID));

CREATE SEQUENCE "조직_SEQ" INCREMENT BY 1 START WITH 1 ORDER;
CREATE TABLE "조직" ("ID" NUMBER NOT NULL, "요리사_ID" "EX_VARRAY_TYPE", "과학자_ID" "EX_VARRAY_TYPE", "회사원_ID" NUMBER, CONSTRAINT "조직_pk" PRIMARY KEY (ID));

📕 Data 다뤄보기

📔 Insert

  📑  dummy data를 넣어줍니다.


-- 요리사 table data
INSERT INTO "요리사" ("ID", "name") VALUES ("요리사_SEQ".NEXTVAL, 'Gordon Ramsay');
INSERT INTO "요리사" ("ID", "name") VALUES ("요리사_SEQ".NEXTVAL, 'Jamie Oliver');
INSERT INTO "요리사" ("ID", "name") VALUES ("요리사_SEQ".NEXTVAL, 'Anthony Bourdain');
INSERT INTO "요리사" ("ID", "name") VALUES ("요리사_SEQ".NEXTVAL, 'Thomas Keller');

-- 과학자 table data
INSERT INTO "과학자" ("ID", "name") VALUES ("과학자_SEQ".NEXTVAL, 'Albert Einstein');
INSERT INTO "과학자" ("ID", "name") VALUES ("과학자_SEQ".NEXTVAL, 'Isaac Newton');

-- 회사원 table data
INSERT INTO "회사원" ("ID", "name") VALUES ("회사원_SEQ".NEXTVAL, 'John Doe');
INSERT INTO "회사원" ("ID", "name") VALUES ("회사원_SEQ".NEXTVAL, 'Jane Smith');
INSERT INTO "회사원" ("ID", "name") VALUES ("회사원_SEQ".NEXTVAL, 'Cane');

-- 조직 table data
INSERT INTO "조직" ("ID", "요리사_ID", "과학자_ID", "회사원_ID")
VALUES ("조직_SEQ".NEXTVAL, "basic_qcud_VARRAY_TYPE"(1, 2), "basic_qcud_VARRAY_TYPE"(1), 1);

INSERT INTO "조직" (ID, "요리사_ID", "과학자_ID", "회사원_ID")
VALUES ("조직_SEQ".NEXTVAL, "basic_qcud_VARRAY_TYPE"(2, 3), "basic_qcud_VARRAY_TYPE"(2), 2);

  📑 Insert 결과

array 내용을 종으로 확인 가능한 편리성이 있어 dbeaver를 사용했습니다.

 

📔 Update

-- 1번 조직의 요리사 교체
UPDATE "조직"
SET "요리사_ID" = "basic_qcud_VARRAY_TYPE"(3, 4) -- 새로운 요리사 ID 배열로 교체
WHERE "ID" = 1; -- 업데이트할 "조직"의 ID

📑 Update 결과

📔 Delete

-- 2번 조직 제거
DELETE FROM "조직" WHERE id = 2;

📑 Delete 결과


*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.