πβ κ³μ΄ μ 보λ₯Ό μ μ₯ν μΉ΄ν κ³ λ¦¬ ν μ΄λΈμ λ§λ€λ €κ³ ν©λλ€. λ€μκ³Ό κ°μ ν μ΄λΈμ μμ±νμΈμ.
CREATE TABLE TB_CATEGORY (
NAME VARCHAR2(10)
, USE_YN CHAR(1) DEFAULT 'Y'
);
πβ κ³Όλͺ© ꡬλΆμ μ μ₯ν ν μ΄λΈμ λ§λ€λ €κ³ ν©λλ€. λ€μκ³Ό κ°μ ν μ΄λΈμ μμ±νμΈμ.
CREATE TABLE TB_CLASS_TYPE (
NO VARCHAR2(5) PRIMARY KEY
, NAME VARCHAR2(10)
);
πβ TB_CATEGORY ν μ΄λΈμ NAME 컬λΌμ PRIMARY KEY λ₯Ό μμ±νμΈμ.
(KEY μ΄λ¦μ μμ±νμ§ μμλ 무방. λ§μΌ KEY μ΄λ₯Ό μ§μ νκ³ μ νλ€λ©΄ μ΄λ¦μ λ³ΈμΈμ΄ μμμ μ λΉν μ΄λ¦μ μ¬μ©)
ALTER TABLE TB_CATEGORY
ADD CONSTRAINT PK_CATE_NAME PRIMARY KEY(NAME);
πβ TB_CLASS_TYPE ν μ΄λΈμ NAME 컬λΌμ NULL κ°μ΄ λ€μ΄κ°μ§ μλλ‘ μμ±μ λ³κ²½νμΈμ.
ALTER TABLE TB_CLASS_TYPE
MODIFY NAME CONSTRAINT NN_CLASS_NAME NOT NULL;
πβ λ ν μ΄λΈμμ μ»¬λΌ λͺ μ΄ NOμΈ κ²μ κΈ°μ‘΄ νμ μ μ μ§νλ©΄μ ν¬κΈ°λ 10 μΌλ‘, 컬λΌλͺ μ΄ NAME μΈ κ²μ λ§μ°¬κ°μ§λ‘ κΈ°μ‘΄ νμ μ μ μ§νλ©΄μ ν¬κΈ° 20 μΌλ‘ λ³κ²½νμΈμ.
ALTER TABLE TB_CATEGORY
MODIFY NAME VARCHAR2(20);
ALTER TABLE TB_CLASS_TYPE
MODIFY NO VARCHAR2(10)
MODIFY NAME VARCHAR2(20);
πβ λ ν μ΄λΈμ NO 컬λΌκ³Ό NAME 컬λΌμ μ΄λ¦μ κ° κ° TB_ λ₯Ό μ μΈν ν μ΄λΈ μ΄λ¦μ΄ μμ λΆμ ννλ‘ λ³κ²½νμΈμ. (ex. CATEGORY_NAME)
ALTER TABLE TB_CATEGORY
RENAME COLUMN NAME TO CATEGORY_NAME;
ALTER TABLE TB_CLASS_TYPE
RENAME COLUMN NO TO CLASS_TYPE_NO;
ALTER TABLE TB_CLASS_TYPE
RENAME COLUMN NAME TO CLASS_TYPE_NAME;
-- ν¨κ» RENAMEμ νμ λ, 'μ΄ μμ
μ λ€λ₯Έ μμ
κ³Ό κ²°ν©ν μ μμ' μ€λ₯
πβ TBCATEGORY ν μ΄λΈκ³Ό TB_CLASS_TYPE ν μ΄λΈμ PRIMARY KEY μ΄λ¦μ λ€μκ³Ό κ°μ΄ λ³κ²½νμΈμ. Primary Key μ μ΄λ¦μ "PK + 컬λΌμ΄λ¦"μΌλ‘ μ§μ νμΈμ. (ex. PK_CATEGORY_NAME )
/* TB_CATEGORY μ μ½ μ‘°κ±΄λͺ
λ³κ²½(NAME) */
ALTER TABLE TB_CATEGORY
RENAME CONSTRAINT PK_CATE_NAME TO PK_CATEGORY_NAME;
/* TB_CLASS_TYPE μ μ½ μ‘°κ±΄λͺ
λ³κ²½(NO) */
ALTER TABLE TB_CLASS_TYPE
RENAME CONSTRAINT SYS_C008168 TO PK_CLASS_TYPE_NO; -- ν
μ΄λΈμμ μ°ΎμμμΌν¨
πβ λ€μκ³Ό κ°μ INSERT λ¬Έμ μννμΈμ.
INSERT
INTO TB_CATEGORY
VALUES (
'곡ν', 'Y'
);
INSERT
INTO TB_CATEGORY
VALUES (
'μμ°κ³Όν', 'Y'
);
INSERT
INTO TB_CATEGORY
VALUES (
'μν', 'Y'
);
INSERT
INTO TB_CATEGORY
VALUES (
'μ체λ₯', 'Y'
);
INSERT
INTO TB_CATEGORY
VALUES (
'μΈλ¬Έμ¬ν', 'Y'
);
COMMIT;
πβ TBDEPARTMENT μ CATEGORY 컬λΌμ΄ TB_CATEGORY ν μ΄λΈμ CATEGORY_NAME 컬λΌμ λΆλͺ¨ κ°μΌλ‘ μ°Έμ‘°νλλ‘ FOREIGN KEY λ₯Ό μ§μ νμΈμ. μ΄ λ KEY μ΄λ¦μ FKν μ΄λΈμ΄λ¦_컬λΌμ΄λ¦μΌλ‘ μ§μ ν©λλ€.
(ex. FK_DEPARTMENT_CATEGORY )
ALTER TABLE TB_DEPARTMENT
ADD CONSTRAINT FK_DEPARTMENT_CATEGORY FOREIGN KEY(CATEGORY) REFERENCES TB_CATEGORY(CATEGORY_NAME);
πβ μΆ κΈ°μ λνκ΅ νμλ€μ μ 보λ§μ΄ ν¬ν¨λμ΄ μλ νμμΌλ°μ 보 VIEW λ₯Ό λ§λ€κ³ μ ν©λλ€. μλ λ΄μ©μ μ°Έκ³ νμ¬ μ μ ν SQL λ¬Έμ μμ±νμΈμ.
CREATE OR REPLACE VIEW VW_νμμΌλ°μ 보
(
νλ²
, νμμ΄λ¦
, μ£Όμ
)
AS
SELECT
STUDENT_NO
, STUDENT_NAME
, STUDENT_ADDRESS
FROM TB_STUDENT;
/* λ·°λ₯Ό μμ±ν μ μλ κΆνμ μ£Όλ ꡬ문 (system κ³μ μμ μ€ν) */
GRANT CREATE VIEW TO C##HOMEWORK;
πβ μΆ κΈ°μ λνκ΅λ 1 λ μ λ λ²μ© νκ³Όλ³λ‘ νμκ³Ό μ§λκ΅μκ° μ§λ λ©΄λ΄μ μ§νν©λλ€. μ΄λ₯Ό μν΄ μ¬μ©ν νμμ΄λ¦, νκ³Όμ΄λ¦, λ΄λΉκ΅μμ΄λ¦ μΌλ‘ ꡬμ±λμ΄ μλ VIEW λ₯Ό λ§λμΈμ. μ΄λ μ§λ κ΅μκ° μλ νμμ΄ μμ μ μμμ κ³ λ €νμΈμ. (λ¨, μ΄ VIEW λ λ¨μ SELECTλ§μ ν κ²½μ° νκ³Όλ³λ‘ μ λ ¬λμ΄ νλ©΄μ 보μ¬μ§κ² λ§λμΈμ.)
CREATE OR REPLACE VIEW VW_μ§λλ©΄λ΄
(
νμμ΄λ¦
, νκ³Όμ΄λ¦
, μ§λκ΅μμ΄λ¦
)
AS
SELECT
STUDENT_NAME
, DEPARTMENT_NAME
, NVL(PROFESSOR_NAME, 'μ§λκ΅μμμ')
FROM TB_STUDENT
JOIN TB_DEPARTMENT USING (DEPARTMENT_NO)
LEFT JOIN TB_PROFESSOR ON (COACH_PROFESSOR_NO = PROFESSOR_NO);
SELECT
VW.*
FROM VW_μ§λλ©΄λ΄ VW;
πβ λͺ¨λ νκ³Όμ νκ³Όλ³ νμ μλ₯Ό νμΈν μ μλλ‘ μ μ ν VIEWλ₯Ό μμ±νμΈμ.
CREATE OR REPLACE VIEW VW_νκ³Όλ³νμμ
(
DEPARTMENT_NAME
, STUDENT_COUNT
)
AS
SELECT
DEPARTMENT_NAME
, COUNT(S.DEPARTMENT_NO)
FROM TB_DEPARTMENT D
JOIN TB_STUDENT S ON(D.DEPARTMENT_NO = S.DEPARTMENT_NO)
GROUP BY DEPARTMENT_NAME;
πβ μμμ μμ±ν νμμΌλ°μ 보 Viewλ₯Ό ν΅ν΄μ νλ²μ΄ A213046 μΈ νμμ μ΄λ¦μ λ³ΈμΈ μ΄λ¦μΌλ‘ λ³κ²½νλ SQL λ¬Έμ μμ±νμΈμ.
UPDATE
VW_νμμΌλ°μ 보
SET νμμ΄λ¦ = 'μ‘°ν¨μ°'
WHERE νλ² = 'A213046';
>>> λ³μΉμ λ¬μ쀬λ€λ©΄ λ³μΉμ μ μ΄μ€μΌν¨ !
πβ 13 λ²μμμ κ°μ΄ VIEWλ₯Ό ν΅ν΄μ λ°μ΄ν°κ° λ³κ²½λ μ μλ μν©μ λ§μΌλ €λ©΄ VIEW λ₯Ό μ΄λ»κ² μμ±ν΄μΌ νλμ§ μμ±νμΈμ.
VIEW μμ± μ, WITH READ ONLY(DML μνμ΄ λΆκ°λ₯νκ² νλ μ΅μ
)λ₯Ό μ
λ ₯νμ¬ μ½μ
/μμ /μμ λ₯Ό λ§λλ€.