자식테이블 생성 시 외래키 제약조건 부여한거 삭제 옵션 지정가능
* 삭제 옵션 : 부모테이블의 값 삭제시 그 데이터를 자식테이블에서 사용하고 있을 경우
그 값을 어떻게 처리할지 지정
- ON DELETE RESTRICTED(기본값) : 자식이 쓰는 데이터값은 무조건 삭제 안됨
- ON DELETE SET NULL : 자식테이블의 데이터값을 NULL로 바꾸고 삭제함
- ON DELETE CASCADE : 자식테이블의 데이터값과 부모의 데이터값을 모두 삭제함
CREATE TABLE MEM (
GRADE_ID NUMBER REFERENCES MEM_GRADE(GRADE_CODE) ON DELETE SET NULL
);
이러면 부모의 값이 사라질떄 부모의 값을 빌려다 쓰던 자식이 NULL로 바뀜(SET NULL)
[표현식]
-- 컬럼명 자료형 [CONSTRAINT 제약조건명] REFERENCES 참조할테이블명[(참조할테이블에있는컬럼명)]
- 참조할컬럼명 생략은 기본키로 되어있을 떄 가능
CREATE TABLE MEM2 (
GRADE_ID NUMBER REFERENCES MEM_GRADE(GRADE_CODE)
);
REFERENCES 테이블명(컬럼명)
* CHECK(조건식) 제약조건
해당 컬럼에 들어올 수 없는 값에 대한 조건 제시
조건에 맞는 값만 입력하도록 할 수 있다.
CREATE TABLE MEM_CHECK1 (
GENDER CHAR(3) CHECK(GENDER IN ('남','여'))
);
강사님이 주신 예
grade char(1) not null check(grade in('A', 'B', 'C'))
unit_price number check(unit_price > 1000000)
[표현식]
CREATE SEQUENCE 시퀀스명
[START WITH 시작숫자] : 시퀀스 시작값(기본값 1)
[INCREMENT BY 숫자] : 몇씩 증가시킬것인지의 값(기본값 1)
[MAXVALUE 숫자] : 최대값 지정(기본값 많이 큼)
[MINVALUE 숫자] : 최소값 지정(기본값 1)
[CYCLE | NOCYCLE] : 값 순환 여부 지정(기본값 NOCYCLE)
[NOCACHE | CACHE 바이트 크기] : 캐시메모리 할당량(기본값 CACHE 20)
* 캐시메모리 : 미리 발생될 값들을 생성해서 저장해두는 공간
매번 호출할 대마다 번호를 생성하는 것이 아니라
캐시메모리에 미리 생성한 값들을 가져다 씀
접속 해제하면 캐시메모리에 미리 만들어놓은 값들 없어짐
옵션 넣는 순서는 상관 없는듯
INCREMENT BY앞에 먼저 쓰고 START WITH를 뒤에 써도 생성됨(오라클은 되는거 확인함)
CREATE SEQUENCE SEQ_EMPNO
START WITH 300
INCREMENT BY 5
MAXVALUE 310
NOCYCLE
NOCACHE;
http://localhost:8090/project/page/aaa.jsp?id=5&name=kkl&age=21&addr=서울
프로토콜 http
Context Path : project
파라미터 이름 : id, name, age, addr
CREATE TABLE REPLY (
REPLY_NO NUMBER NOT NULL,
BOARD_NO NUMBER REFERENCES BOARD(BOARD_NO) ON DELETE CASCADE,
REPLY_WRITER VARCHAR2(20) REFERENCES MEMBER(MEMBER_ID) ON DELETE SET NULL,
REPLY_CONTENT VARCHAR2(4000) NOT NULL,
REPLY_TIME DATE DEFAULT SYSDATE NOT NULL,
REPLY_SUPERNO NUMBER DEFAULT 0 NOT NULL
);
+++ 체크쓰는법
ex)
grade char(1) not null check(grade in('A', 'B', 'C'))
unit_price number check(unit_price > 1000000)
+++ 디폴트는 타입선언 옆
ex)
grade char(1) default 'a'
+++ constraint는 제약조건이름붙이는거 제약조건보다 앞에 오면 됨
+++