1. 사용자 생성 및 권한 부여
-- 1. 사용자 생성
CREATE USER asl IDENTIFIED BY [비밀번호]
DEFAULT tablespace USERS
TEMPORARY tablespace TEMP;
-- 2. 권한부여
GRANT RESOURCE, CONNECT TO asl
2.1. 경기결과 테이블 생성
-- ASL."RESULT" definition
CREATE TABLE "RESULT"
("SEASON" NUMBER NOT NULL ENABLE,
"ROUND" NUMBER NOT NULL ENABLE,
"GAME" NUMBER(1,0) NOT NULL ENABLE,
"PLAYER_1_ID" VARCHAR2(100) NOT NULL ENABLE,
"PLAYER_1_NAME" VARCHAR2(100),
"PLAYER_2_ID" VARCHAR2(100) NOT NULL ENABLE,
"PLAYER_2_NAME" VARCHAR2(100),
"WINNER_ID" VARCHAR2(100),
"DATE" DATE,
"UPPER_SRG" VARCHAR2(100),
CONSTRAINT "RESULT_PK" PRIMARY KEY ("SEASON", "ROUND", "GAME")
);
COMMENT ON COLUMN "RESULT"."SEASON" IS '시즌';
COMMENT ON COLUMN "RESULT"."ROUND" IS '강';
COMMENT ON COLUMN "RESULT"."GAME" IS '경기';
COMMENT ON COLUMN "RESULT"."PLAYER_1_ID" IS '선수1 아이디';
COMMENT ON COLUMN "RESULT"."PLAYER_1_NAME" IS '선수1 이름';
COMMENT ON COLUMN "RESULT"."PLAYER_2_ID" IS '선수2 아이디';
COMMENT ON COLUMN "RESULT"."PLAYER_2_NAME" IS '선수2 이름';
COMMENT ON COLUMN "RESULT"."WINNER_ID" IS '승자 아이디';
COMMENT ON COLUMN "RESULT"."DATE" IS '경기 날짜';
COMMENT ON COLUMN "RESULT"."UPPER_SRG" IS '상위_게임유일값(SEASON_ROURND_GAME)';
COMMENT ON TABLE "RESULT" IS '경기결과';
2.2. 경기결과 데이터 INSERT(8강, 4강, 결승)
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 8, 1, 'FlaSh', '이영호', 'Action', '김성대', 'FlaSh', TIMESTAMP '2020-03-29 00:00:00.000000', '941');
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 8, 2, 'Queen', '김명운', 'Larva', '임홍규', 'Queen', TIMESTAMP '2020-03-31 00:00:00.000000', '941');
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 8, 3, 'Stork', '송병구', 'Light', '이재호', 'Light', TIMESTAMP '2020-04-05 00:00:00.000000', '942');
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 8, 4, 'ChosimZerg', '박상현', 'Bisu', '김택용', 'ChosimZerg', TIMESTAMP '2020-04-07 00:00:00.000000', '942');
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 4, 1, 'FlaSh', '이영호', 'Queen', '김명운', 'Queen', TIMESTAMP '2020-04-12 00:00:00.000000', '921');
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 4, 2, 'Light', '이재호', 'ChosimZerg', '박상현', 'Light', TIMESTAMP '2020-04-14 00:00:00.000000', '921');
INSERT INTO "RESULT" (SEASON, ROUND, GAME, PLAYER_1_ID, PLAYER_1_NAME, PLAYER_2_ID, PLAYER_2_NAME, WINNER_ID, "DATE", UPPER_SRG) VALUES(9, 2, 1, 'Queen', '김명운', 'Light', '이재호', 'Queen', TIMESTAMP '2020-04-26 00:00:00.000000', NULL);
2.3. 경기 결과 테이블 데이터 입력 사항 조회
SELECT *
FROM RESULT
ORDER BY SEASON, ROUND, GAME
3. 계층형 쿼리 사용하여 조회
/*
* 1. WITH절에서 경기별 고유값을 지정
*/
WITH BASE AS (
SELECT SEASON, -- 시즌(9)
ROUND, -- 라운드(8강, 4강, 결승)
SEASON || ROUND || GAME AS SRG, -- 경기별 고유값(시즌 + 라운드 + 경기 )
UPPER_SRG, -- 상위 경기 고유값
GAME,
NVL2(UPPER_SRG,
ROUND || '강 ' || GAME || '경기 - ' || PLAYER_1_NAME || ' VS ' || PLAYER_2_NAME,
'결승 - ' || PLAYER_1_NAME || ' VS ' || PLAYER_2_NAME
) AS TITLE,
PLAYER_1_NAME,
PLAYER_2_NAME
FROM RESULT
)
/*
* 2.경기별 고유값(SRG)와 상위 경기고유값(UPPER_SRG)으로 게층 구현
*/
SELECT SEASON,
ROUND,
SRG,
UPPER_SRG,
GAME,
LPAD(' ', 2*(LEVEL-1)) || TITLE AS LPAD_TITLE, --레벨별 들여쓰기
LEVEL
FROM BASE
START WITH UPPER_SRG IS NULL -- 결승은 상위 경기고유값이 NULL
CONNECT BY PRIOR SRG = UPPER_SRG -- 경기별 고유값과 상위 경기고유값으로 연결
ORDER BY GAME
참조
namu.wiki/w/%EC%95%84%ED%94%84%EB%A6%AC%EC%B9%B4TV%20%EC%8A%A4%ED%83%80%EB%A6%AC%EA%B7%B8%20%EC%8B%9C%EC%A6%8C9?from=ASL%20%EC%8B%9C%EC%A6%8C9#s-6
https://dreamstorage.tistory.com/169
https://coding-factory.tistory.com/461
'DB' 카테고리의 다른 글
[Oracle] 「다양한 예제로 쉽게 배우는 오라클 SQL과 PL/SQL」GROUPING SETS()함수 실습 (0) | 2020.10.31 |
---|---|
[Oracle] SQL의 컨셉 for ORACLE 실습용 모델 ERD (0) | 2020.10.27 |
[Oracle] INNER-JOIN 결과 ROW 수 (0) | 2020.10.03 |
[Oacle] SQL BOOSTER 연습용 테이블 ERD (0) | 2020.10.01 |
[Oracle 11g XE] 테이블스페이스 생성(linux) (0) | 2020.09.30 |