ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클_VIEW_예제_문제풀이[1]
    Oracle SQL 2022. 3. 23. 00:46
    --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 상태에서) -> 뷰생성 -> 정보조회 확인

    'Oracle SQL' 카테고리의 다른 글

    ORACLE_DDL(CREATE, ALTER, DROP)  (0) 2022.03.25
    오라클_시험대비_기본개념정리[1]  (0) 2022.03.24
    오라클_예제_문제풀이[2]  (0) 2022.03.21
    오라클_예제_문제풀이  (0) 2022.03.21
    ORACLE_SQL_SUBQUERY 서브쿼리  (0) 2022.03.18
Designed by Tistory.