--1. 계열 정보를 저장할 카테고리 테이블을 만들려고 한다. 다음과 같은 테이블을 작성하시오.
CREATE TABLE TB_CATEGORY(
NAME VARCHAR2(10),
USER_YN CHAR(1)
);
SELECT * FROM TB_CATEGORY;--생성 확인
ALTER TABLE TB_CATEGORY MODIFY (USER_YN DEFAULT 'Y');
--DEFAULT 사용
--ALTER TABLE [테이블명] MODIFY ([컬럼명] DEFAULT [설정할 DEFAULT]);
--설정할 DEFAULT가 숫자의 경우 ' ' 없이 사용
--설정할 DEFAULT가 문자일 경우 ' '로 묶어서 사용
--2. 과목 구분을 저장할 테이블을 만들려고 한다. 다음과 같은 테이블을 작성하시오.
CREATE TABLE TB_CLASS_TYPE(
NO VARCHAR2(5) PRIMARY KEY,
NAME VARCHAR2(10)
);
SELECT * FROM TB_CLASS_TYPE;--생성 확인
--3. TB_CATEGORY 테이블의 NAME 컬럼에 PRIMARY KEY를 생성하시오.
ALTER TABLE TB_CATEGORY ADD PRIMARY KEY(NAME);
--4. TB_CLASS_TYPE 테이블의 NAME 컬럼에 NULL 값이 들어가지 않도록 속성을 변경하시오.
ALTER TABLE TB_CLASS_TYPE MODIFY NAME NOT NULL;--ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL;
--5. 두 테이블에서 컬럼 명이 NO인 것은 기존 타입을 유지하면서 크기는 10 으로, 컬럼명이
--NAME 인 것은 마찬가지로 기존 타입을 유지하면서 크기 20으로 변경하시오.
ALTER TABLE TB_CLASS_TYPE MODIFY(NO VARCHAR2(10));
ALTER TABLE TB_CATEGORY MODIFY(NAME VARCHAR2(20));
--크기 변경 : ALTER TABLE 테이블명 MODIFY(컬럼명 VACHAR2(변경할 크기));
--6. 두 테이블의 NO 컬럼과 NAME 컬럼의 이름을 각각 TB_를 제외한 테이블 이름이 앞에
--붙은 형태로 변경한다. (ex. CATEGORY_NAME)
ALTER TABLE TB_CLASS_TYPE RENAME COLUMN NO TO CLASS_TYPE_NO;
ALTER TABLE TB_CATEGORY RENAME COLUMN NAME TO CATEGORY_NAME;
--ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 변경할 컬럼명;
--7. TB_CATEGORY 테이블과 TB_CLASS_TYPE 테이블의 PRIMARY KEY 이름을 다음과 같이
--변경하시오.
--Primary Key의 이름은 "PK_ + 컬럼이름" 으로 지정하시오.(ex. PK_CATEGORY_NAME)
ALTER TABLE TB_CATEGORY RENAME CONSTRAINT SYS_C007627 TO PK_CATEGORY_NAME;
ALTER TABLE TB_CLASS_TYPE RENAME CONSTRAINT SYS_C007626 TO PK_CLASS_NO;
--제약조건 이름 변경 : ALTER TABLE 테이블명 RENAME CONSTRAINT 제약조건명 TO 변경할 제약조건명;
--8. 다음과 같은 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;
--9. TB_DEPARTMENT 의 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);
--FOREIGN KEY 이름 지정 : ALTER TABLE 자식 테이블명 ADD CASTRAINT RENAME 변경할 FOREIGN KEY이름 FOREIGN KEY(자식 컬럼명) REFERENCES 부모 테이블명((부모)컬럼명);
--10. 기술대학교 학생들의 정보만이 포함되어 있는 학생일반정보 VIEW를 만들고자 한다.
--아래 내용을 참고하여 적절한 SQL문을 작성하시오.
CREATE OR REPLACE VIEW VW_학생일반정보
AS SELECT DEPARTMENT_NO 학번, DEPARTMENT_NAME 학생이름, STUDENT_ADDRESS 주소
FROM TB_DEPARTMENT
JOIN TB_STUDENT USING(DEPARTMENT_NO);
GRANT CREATE VIEW TO WORKBOOK;--권한부여-->SYSTEM인 상태에서 권한부여!!
SELECT * FROM VW_학생일반정보;--정보조회 확인
--권한부여(SYSTEM 상태에서) -> 뷰생성 -> 정보조회 확인