본문 바로가기

DB

연습문제_DDL

문제

-- 1. 다음 칼럼 정보를 이용하여 MEMBER_T 테이블을 생성하시오.
--    1) 회원번호: MEM_NO, NUMBER, 필수
--    2) 회원아이디: MEM_ID, VARCHAR2(30 BYTE), 필수, 중복 불가
--    3) 회원패스워드: MEM_PW, VARCHAR2(30 BYTE), 필수
--    4) 회원포인트: MEM_POINT, NUMBER
--    5) 회원구분: MEM_GUBUN, VARCHAR2(7 BYTE), 'REGULAR', 'SOCIAL' 값 중 하나를 가짐
--    6) 회원이메일: MEM_EMAIL, VARCHAR2(100 BYTE), 중복 불가

-- 2. MEMBER_T 테이블에 다음 새로운 칼럼을 추가하시오.
--    1) 회원주소: ADDRESS VARCHAR2(200 BYTE)
--    2) 회원가입일: JOINED_DT DATE

-- 3. 추가된 회원주소 칼럼을 다시 삭제하시오.

-- 4. 회원구분 칼럼의 타입을 VARCHAR2(20 BYTE)으로 수정하시오.

-- 5. 회원패스워드 칼럼의 이름을 MEM_PWD로 수정하시오.

-- 6. 회원번호 칼럼에 기본키(PK_MEMBER)를 설정하시오.

-- 7. 다음 칼럼 정보를 이용하여 BOARD_T 테이블을 생성하시오.
--    1) 글번호: BOARD_NO, NUMBER, 필수
--    2) 글제목: TITLE, VARCHAR2(4000 BYTE), 필수
--    3) 글내용: CONTENT, VARCHAR2(4000 BYTE), 필수
--    4) 조회수: HIT, VARCHAR2(1 BYTE)
--    5) 작성자: MEM_ID, VARCHAR2(30 BYTE), 필수
--    6) 작성일자: CREATED_DT, DATE

-- 8. 조회수 칼럼의 타입을 NUMBER로 수정하시오.

-- 9. 글내용 칼럼의 필수 제약조건을 제거하시오.

-- 10. 글번호 칼럼에 기본키(PK_BOARD)를 설정하시오.

-- 11. 작성자 칼럼에 MEMBER_T 테이블의 회원아이디를 참조하는 FK_MEMBER_BOARD 외래키를 설정하시오.
-- 게시글을 작성한 회원 정보가 삭제되면 해당 회원이 작성한 게시글도 모두 함께 지워지도록 처리하시오.

-- 12. MEMBER_T 테이블과 BOARD_T 테이블을 모두 삭제하시오.

정답

-- 1. 다음 칼럼 정보를 이용하여 MEMBER_T 테이블을 생성하시오.
--    1) 회원번호: MEM_NO, NUMBER, 필수
--    2) 회원아이디: MEM_ID, VARCHAR2(30 BYTE), 필수, 중복 불가
--    3) 회원패스워드: MEM_PW, VARCHAR2(30 BYTE), 필수
--    4) 회원포인트: MEM_POINT, NUMBER
--    5) 회원구분: MEM_GUBUN, VARCHAR2(7 BYTE), 'REGULAR', 'SOCIAL' 값 중 하나를 가짐
--    6) 회원이메일: MEM_EMAIL, VARCHAR2(100 BYTE), 중복 불가
CREATE TABLE MEMBER_T (
    MEM_NO    NUMBER             NOT NULL,
    MEM_ID    VARCHAR2(30 BYTE)  NOT NULL UNIQUE,
    MEM_PW    VARCHAR2(30 BYTE)  NOT NULL,
    MEM_POINT NUMBER             NULL,
    MEM_GUBUN VARCHAR2(10 BYTE)  CHECK(MEM_GUBUN IN('REGULAR', 'SOCIAL')),
    MEM_EMAIL VARCHAR2(100 BYTE) NULL UNIQUE
);

-- 2. MEMBER_T 테이블에 다음 새로운 칼럼을 추가하시오.
--    1) 회원주소: ADDRESS VARCHAR2(200 BYTE)
--    2) 회원가입일: JOINED_DT DATE
ALTER TABLE MEMBER_T ADD ADDRESS VARCHAR2(200 BYTE);
ALTER TABLE MEMBER_T ADD JOINED_DT DATE;

-- 3. 추가된 회원주소 칼럼을 다시 삭제하시오.
ALTER TABLE MEMBER_T DROP COLUMN ADDRESS;

-- 4. 회원구분 칼럼의 타입을 VARCHAR2(20 BYTE)으로 수정하시오.
ALTER TABLE MEMBER_T MODIFY MEM_GUBUN VARCHAR2(20 BYTE);

-- 5. 회원패스워드 칼럼의 이름을 MEM_PWD로 수정하시오.
ALTER TABLE MEMBER_T RENAME COLUMN MEM_PW TO MEM_PWD;

-- 6. 회원번호 칼럼에 기본키(PK_MEMBER)를 설정하시오.
ALTER TABLE MEMBER_T ADD CONSTRAINT PK_MEMBER PRIMARY KEY(MEM_NO);

-- 7. 다음 칼럼 정보를 이용하여 BOARD_T 테이블을 생성하시오.
--    1) 글번호: BOARD_NO, NUMBER, 필수
--    2) 글제목: TITLE, VARCHAR2(4000 BYTE), 필수
--    3) 글내용: CONTENT, VARCHAR2(4000 BYTE), 필수
--    4) 조회수: HIT, VARCHAR2(1 BYTE)
--    5) 작성자: MEM_ID, VARCHAR2(30 BYTE), 필수
--    6) 작성일자: CREATED_DT, DATE
CREATE TABLE BOARD_T (
    BOARD_NO   NUMBER              NOT NULL,
    TITLE      VARCHAR2(4000 BYTE) NOT NULL,
    CONTENT    VARCHAR2(4000 BYTE) NOT NULL,
    HIT        VARCHAR2(1 BYTE)    NULL,
    MEM_ID     VARCHAR2(30 BYTE)   NOT NULL,
    CREATED_DT DATE                NULL
);

-- 8. 조회수 칼럼의 타입을 NUMBER로 수정하시오.
ALTER TABLE BOARD_T MODIFY HIT NUMBER;

-- 9. 글내용 칼럼의 필수 제약조건을 제거하시오.
ALTER TABLE BOARD_T MODIFY CONTENT VARCHAR2(4000 BYTE) NULL;

-- 10. 글번호 칼럼에 기본키(PK_BOARD)를 설정하시오.
ALTER TABLE BOARD_T ADD CONSTRAINT PK_BOARD PRIMARY KEY(BOARD_NO);

-- 11. 작성자 칼럼에 MEMBER_T 테이블의 회원아이디를 참조하는 FK_MEMBER_BOARD 외래키를 설정하시오.
-- 게시글을 작성한 회원 정보가 삭제되면 해당 회원이 작성한 게시글도 모두 함께 지워지도록 처리하시오.
ALTER TABLE BOARD_T ADD CONSTRAINT FK_MEMBER_BOARD FOREIGN KEY(MEM_ID) REFERENCES MEMBER_T(MEM_ID) ON DELETE CASCADE;

-- 12. MEMBER_T 테이블과 BOARD_T 테이블을 모두 삭제하시오.
DROP TABLE BOARD_T;
DROP TABLE MEMBER_T;

'DB' 카테고리의 다른 글

연습문제_서브쿼리  (0) 2023.09.30
연습문제_DQL  (0) 2023.09.30
SQL응용_문제  (0) 2023.09.30
SELECT 실행 순서  (0) 2023.09.30
형변환 함수  (0) 2023.09.30