반응형
🍳머리말
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 결과
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'SQL' 카테고리의 다른 글
(SQL) - LeetCode (easy) 1407. Top Travellers (0) | 2024.03.12 |
---|---|
(SQL) - LeetCode (easy) 1378. Replace Employee ID With The Unique Identifier (0) | 2024.02.26 |
(SQL) - LeetCode (easy) 1280. Students and Examinations (0) | 2024.01.12 |
(SQL) - LeetCode (easy) 1179. Reformat Department Table (1) | 2023.11.22 |
(SQL) - LeetCode (easy) 1084. Sales Analysis III (0) | 2023.10.26 |