CREATE table 테이블명
(
컬럼 정의,
컬럼 정의,
컬럼 정의,
컬럼명 자료형(길이),
컬럼명 자료형(길이) NULL 제약사항
);
REFERENCES
부모테이블명(PK)- 직원 명단 테이블
CREATE TABLE tblStaff
(
seq NUMBER PRIMARY KEY,
name varchar2(30) NOT NULL,
salary NUMBER NOT NULL,
address varchar2(300) NOT NULL
); -- 부모테이블
-- 프로젝트 테이블(FK 추가)
CREATE TABLE tblProject(
seq NUMBER PRIMARY KEY, -- 프로젝트 번호(PK)
project varchar2(100) NOT NULL, -- 프로젝트명
staff_seq NUMBER NOT NULL REFERENCES tblstaff(seq) -- 담당 직원 번호(FK)
); -- 자식테이블
CREATE TABLE tblMemo
(
seq number(3) PRIMARY KEY, --메모번호(PK)
name varchar2(30) unique, --작성자(UQ) > 한 사람당 하나의 메모만 쓰기 가능
memo varchar2(1000) NOT NULL, --메모(NN) > 공백 불가
regdate DATE DEFAULT sysdate --작성날짜 > 공백시 현재 날짜 자동 대입
priority NUMBER(1) check(priority BETWEEN 1 AND 3) , --중요도(1(중요), 2(보통), 3(안중요))
-- 카테고리(할일,공부,약속,가족,개인)
category varchar2(30) check(category IN ('할일','공부','약속','가족','개인'))
);
CREATE TABLE tblMemo
(
seq number(3), -- CONSTRAINT 생략 가능 / tblmemo_seq_pk 생략하면 자동으로 생성됨
name varchar2(30),
memo varchar2(1000) DEFAULT '메모',
regdate DATE NOT NULL,
-- 테이블 수준에서 제약사항 정의
CONSTRAINT tblmemo_seq_pk PRIMARY key(seq), -- PRIMARY key(컬럼)
CONSTRAINT tblmemo_name_uq unique(name),
CONSTRAINT tblmemo_memo_ck check(LENGTH(memo)>=10)
);
DROP table tblMemo;
CREATE TABLE tblEdit (
seq NUMBER PRIMARY KEY,
data varchar2(20) NOT NULL
);
INSERT INTO tblEdit VALUES (1, '마우스');
INSERT INTO tblEdit VALUES (2, '키보드');
INSERT INTO tblEdit VALUES (3, '모니터');
add
-- DEFAULT 값을 입력하면 NOT NULL 컬럼을 추가 할 수있다.
ALTER TABLE tbledit ADD (color varchar2(30) DEFAULT 'white' NOT NULL);
drop
ALTER TABLE tbledit DROP COLUMN color;
modify
-- 제약사항 수정 (NOT NULL -> NULL)
ALTER TABLE tbledit MODIFY (DATA varchar2(100) NULL);
-- 컬럼 길이 수정(varchar2(20) -> varchar2(100))
ALTER TABLE tbledit MODIFY (DATA varchar2(100));
-- 컬럼 자료형 수정 (주의!!!!)
-- ORA-01439: column to be modified must be empty to change datatype
ALTER TABLE tbledit MODIFY (DATA NUMBER);
ORA-01439: column to be modified must be empty to change datatype