오라클에서 테이블에 INSERT INTO로 데이터 넣을 때 시간도 설정 해 줘야 할까?

kafa·2023년 2월 24일
0

오류수정기

목록 보기
2/4

테이블에 데이터를 넣을거다.
테이블명은 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값이 있을 수 없다.

profile
kafa is kafa. not be something other.

0개의 댓글