테이블에 데이터를 넣을거다.
테이블명은 ordertbl과 delivery.
주문테이블과 배달테이블이다.
첫번째 주문테이블은 regdate 날짜시간 지정 칼럼의 디폴트값이 null이고
두번째 배달테이블은 regdate 날짜시간 지정 칼럼의 디폴트값이 current_date 라고 되어있다.
날짜시간 지정 칼럼의 디폴트값이 null이면 INSERT INTO로 데이터를 넣을때 regdate를 언급하고 current_date를 넣어줘야하지만,
날짜시간 지정 칼럼의 디폴트값이 current_date 라고 되어있으면 INSERT INTO로 데이터를 넣을때 굳이 지정해줄 필요없다.
따라서
INSERT INTO ordertbl (ortherno, regdate, cnt, email, menuno)
VALUES (seq_ordertbl_no.nextval, CURRENT_DATE, 2 ,'eret@dfd.com', 1004);
INSERT INTO delivery ( deliveryno, riderphone, ortherno )
VALUES ( seq_delivery_no.NEXTVAL,'010-1454-5323', 10017 );
와 같이 쓸 수 있다.
INSERT INTO로 데이터 넣기
INSERT INTO (데이터 넣을 칼럼명들) VALUES (칼럼에 들어갈 데이터들 ,찍고 순서대로)
SELECT m.* FROM menu m;
-- 그럼 이제 menu정보가 뜨고, 그 안에 있는 메뉴를 주문하면 된다
seq_어쩌구_no.NEXTVAL ?
CREATE SEQUENCE seq_delivery_no INCREMENT BY 1 START WITH 10 NOMAXVALUE NOCACHE;
-- CREATE SEQUENCE seq_delivery_no : seq_delivery_no라는 시퀀스를 만들거임
-- INCREMENT BY 1 : 1씩 증가시킬거구요
-- START WITH 10 : 10부터 시작해볼까 합니다
-- NOMAXVALUE : 번호매기기에 끝은 없습니다
-- NOCACHE : 캐시도 안만들거예요
INSERT INTO delivery ( deliveryno, riderphone, ortherno )
VALUES ( seq_delivery_no.NEXTVAL,'010-1454-5323', 10017 );
-- seq_delivery_no.NEXTVAL : 시퀀스명 뒤에 NEXTVAL를 붙임
위에 그림에 NULLABLE
NULLABLE은 값이 비어있을수 있냐는 여부이다.
우리가 시퀀스로 지정해준 DELIVERYNO는 이 테이블의 고유키로 매번 자동으로 들어가므로 NULL(빈)값이 들어갈 수 없다.
또 RIDERPHONE 역시 외래키로 RIDER 테이블과 주문테이블을 연결해주는 역할을 하므로 비어있을 수 없다.
ORTHERNO도 마찬가지(ORDER인데 오타임 걍 이대로 사는 중).
ORDER 테이블에서 값을 가져와 주문정보를 주는 외래키이므로 비어있을 수 없다.
여기서 RIDERPHONE와 ORTHERNO는 각각의 테이블의 고유키이다.
따라서 이들은 각자의 테이블에서도 비어있을 수 없다.
한편 ORTHERNO는 DELIVERYNO와 마찬가지로 시퀀스로 구성되어있어 NULL값이 있을 수 없다.