K 개발자

데이터 정의어 본문

데이터베이스/Oracle SQL

데이터 정의어

ddingz 2021. 8. 23. 14:37

CREATE 문

CREATE 문은 테이블로 구성하고, 속성과 속성에 관한 제약을 정의하며, 기본키 및 외래키를 정의하는 명령이다.

ALTER 문

ALTER 문은 생성된 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경한다.

DROP 문

DROP 문은 테이블을 삭제하는 명령이다.
DROP 문은 테이블의 구조와 데이터를 모두 삭제하므로 사용에 주의해야 한다.


연습문제

-- 다음과 같은 속성을 가진 NewBook 테이블을 생성하시오.
/*
bookid(도서번호) - NUMBER
bookname(도서이름) - VARCHAR2(20)
publisher(출판사) - VARCHAR2(20)
price(가격) - NUMBER
*/
CREATE TABLE NewBook (
    bookid NUMBER,
    bookname VARCHAR2(20),
    publisher VARCHAR2(20),
    price NUMBER);
-- 다음과 같은 속성을 가진 NewCustomer 테이블을 생성하시오.
/*
custid(고객번호) - NUMBER, 기본키
name(이름) - VARCHAR2(40)
address(주소) - VARCHAR2(40)
phone(전화번호) - VARCHAR2(30)
*/
CREATE TABLE NewCustomer (
    custid NUMBER PRIMARY KEY,
    name VARCHAR2(40),
    address VARCHAR2(40),
    phone VARCHAR2(30));
-- 다음과 같은 속성을 가진 NewOrders 테이블을 생성하시오.
/*
orderid(주문번호) - NUMBER, 기본키
custid(고객번호) - NUMBER, NOT NULL 제약조건, 외래키(NewCustomer.custid, 연쇄삭제)
bookid(도서번호) - NUMBER, NOT NULL 제약조건
saleprice(판매가격) - NUMBER
orderdate(판매일자) - DATE
*/
CREATE TABLE NewOrders (
    orderid NUMBER,
    custid NUMBER NOT NULL,
    bookid NUMBER NOT NULL,
    saleprice NUMBER,
    orderdate DATE,
    PRIMARY KEY(orderid),
    FOREIGN KEY(custid) REFERENCES NewCustomer(custid) ON DELETE CASCADE);
/*
외래키 제약조건을 명시할 때는 주의할 점이 있다.
반드시 참조되는 테이블(부모 릴레이션)이 존재해야 하며 참조되는 테이블의 기본키여야 한다.
*/
-- NewBook 테이블에 VARCHAR2(13)의 자료형을 가진 isbn 속성을 추가하시오.
ALTER TABLE NewBook ADD isbn VARCHAR2(13);
-- NewBook 테이블의 isbn 속성의 데이터 타입을 NUMBER형으로 변경하시오.
ALTER TABLE NewBook MODIFY isbn NUMBER;
-- NewBook 테이블의 isbn 속성을 삭제하시오.
ALTER TABLE NewBook DROP COLUMN isbn;
-- NewBook 테이블의 bookid 속성에 NOT NULL 제약조건을 적용하시오.
ALTER TABLE NewBook MODIFY bookid NUMBER NOT NULL;
-- NewBook 테이블의 bookid 속성을 기본키로 변경하시오.
ALTER TABLE NewBook ADD PRIMARY KEY(bookid);
-- NewBook 테이블을 삭제하시오.
DROP TABLE NewBook;
-- NewCustomer 테이블을 삭제하시오.
DROP TABLE NewCustomer;

-- 삭제하려는 테이블의 기본키를 다른 테이블에서 참조하고 있다면 삭제가 거절된다. NewCustomer 테이블을 삭제하기 위해서는 참조하고 있는 테이블 NewOrders 테이블부터 삭제해야 한다.
DROP TABLE NewOrders;
DROP TABLE NewCustomer;

'데이터베이스 > Oracle SQL' 카테고리의 다른 글

숫자 함수  (0) 2021.08.23
데이터 조작어  (0) 2021.08.23
EXISTS  (0) 2021.08.22
집합연산  (0) 2021.08.22
부속질의  (0) 2021.08.22
Comments