ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JDBC 데이터 입력 쿼리문 작성 하기
    JDBC 2022. 2. 3. 15:49

    **유튜브 뉴렉쳐님의 강의를 들으면서 공부하고 정리한 내용입니다.

     

    db에 데이터를 입력하기 위해서는 쿼리문을 작성 할 줄 알아야 한다,

    데이터입력쿼리에서 더하거나 뺴거나 하는 것을 공부 해 보자 

     

    이번 시간에는 SELECT문 말고 INSERT문이 필요하다. INSERT문을 JDBC를 작성하는 자바코드에서 작성하는것보다는 먼저 INSERT문장이 잘 동작하는지 알아보기위해 sql developer에서 쿼리문을 확인 해 보고 그것을 자바 소스코드로 가져가는것이 더욱 바람직하다.

     

    그리고 입력하는 데이터가 어떠한 데이터인지 확인해보는것이 중요하다.

     

    NOTICE라는 테이블에 값을 입력하기 위해 입력문을 만들어야하는데. NOTICE를 입력창에 드래그하면 자동으로 입력문을 작성 해 준다.

    INSERT를 선택해준다.

     

    그럼 이렇게 자동으로 INSERT문을 작성 해준다.

     

    이제 이러한 쿼리문을 가지고 JDBC를 이용해서 DB에 실행해달라고 요청을 하려고 하는데 이 쿼리들을 전부 사용자가 입력해서 조합하는 내용에 포함하게 할 것이냐가 문제가 된다.

     

    이 쿼리중에 hit라는 것은 조회수이다. 조회수는 처음에는 0이지만 이후에 사용자가 클릭 할 수록 조회수가 늘어나게 되는 것이다. 

    regdate도 등록일자이다. 이것도 사용자가 값을 넣어서 입력하는것은 바람직하지 않다.

     

    hit랑 regdate의 경우네는 사용자가 입력해야하는값에서 빼는것이 맞는것같다,

     

    그럼 해결 방법은

     

    왼쪽에서 NOTICE테이블을 클릭해서 선택하면 

    테이블 데이터베이스 화면이 나타나게 된다. 데이터베이스에서 

    박스표시한 부분에서 DATA_DEPAULT 부분의 값을 기본값으로 설정해줄수 있는데 HIT의 경우에는 0으로 REGDATE의 경우에는 SYSTIMESTAMP로 설정해줄수있다.

     

    변경 방법은 테이블 마우스 우클릭 편집 

    여기서 기본값을 원하는 값으로 설정 해 준다.

     

    ID 또한 데이터베이스에서 게시글들을 식별하기 위해 번호를 주는것이기때뭄에 이것 또한 사용자가 입력 할 값이 아닌것이다. 

     

    ID값을 계속 증가 시키기위해서는 값을 입력하는곳에서 서브쿼리를 사용하거나 아니면 시퀀스를 사용해주면 된다.

     

    편집탭 하단에서 ID 열 클릭 

     

    열시퀀스 선택 후 확인 눌러주면 생성이 가능하다.

    만약 시퀀스 생성시에 SYS 소유의 객체에 대해 트리거를 생성 할 수 없다고 뜨면 시퀀스를 직접 작성해서 실행 후 커밋 해 주면 된다.

    CREATE SEQUENCE  시퀀스명   
    START WITH 초기화값
    INCREMENT BY 증감값
    MAXVALUE 최대값 / NOMAXVALUE(최대값 설정X)    
    MINVALUE 최소값 / NOMINVALUE(최소값 설정X)    
    CACHE    
    NOORDER /ORDER   
    NOCYCLE / CYCLE

    시퀀스명은 테이블명이랑 같아서는 안된다.

    MAXVALUE은 최대값을 설정하는거고 NOMAXVALUE은 최대값 설정을 하지 않는 것이다.    
    MINVALUE 최소값을 설정하는거고  NOMINVALUE은 최소값 설정을 하지 않는 것이다.    

    CACHE는 시퀀스를 빨리 제공하기 위해 메모리에 캐쉬 되는 값을 정하는 것이고 기본값은 20이다. NOORDER가 기본값이고 만들어진 순서대로 병렬을 원할 경우 ORDER로 작성하면 된다.NOCYCLE이 기본값이며 CYCLE로 하면 지정MAX값에 도달 했을 경우 다시 MIN값으로 돌아가게된다.

     

    시퀀스를 만들어 준 다음 생성 된 시퀀스를 클릭 해 보면 

    이렇게 뜬다.

    ID 값이 1씩 생성 되는지 확인 해 보려면 

     

    SELECT 시퀀스명.NEXTVAL FROM DUAL;

     

    해 주면 

    이렇게 증가 되는 것을 확인 할 수 있다. 나는 두번 실행해서 값이 2로 나타나고 있다.

    하지만 우리가 테이블을 생성할떄 이미 1~4까지 ID값을 생성했었다.

    그러면 시퀀스랑 충돌하게 되기 때문에 LAST값을 변경해주기로 하자.

    다음으로 시작에다가 겹치지 않는 값을 설정 해주고 NEXCVAL 해 주면

    20부터 나오는 것을 확인 할 수 있다. 

     

    이제 사용자 값이 들어가지 않으면서 값이 들어 갈 수 있도록 하는 컬럼 HIT, PUB,REGDATE,ID 들은 아까 테이블 드레그 해서 만든  INSERT문에서 지워준다.

     

    그럼 사용자가 값을 입력 하게 될 것들은

    이렇게 네개가 남는다. 제대로 잘 동작하는지 확인이 필요하다.

    그럼 값을 임의로 넣어줘보자 WRITER_ID에는 MEMBER 테이블에 집어넣은 값으로 넣어주자

    값이 잘 실행 되는것을 확인 할 수 있다.

    ROLLBACL 해주면 사라지게 할 수 있다.

    하지만 ROLLBACK을 하더라도 한번 사용했던 시퀀스는 사라지게 된다.

     

    INSERT 작업시 시퀀스를 사용 할 컬럼에는 NOTICE_SQ.NEXTVAL 시퀀스명+NEXTVAL를 붙여줘야한다!!

     

    'JDBC' 카테고리의 다른 글

    JDBC 데이터 수정하기  (0) 2022.02.03
    JDBC를 이용해서 쿼리 입력하는 코드  (0) 2022.02.03
    JDBC 조건을 추가하여 출력하기  (0) 2022.01.31
    레코드의 모든 컬럼 출력하기  (0) 2022.01.31
    쿼리 실행해보기  (0) 2022.01.30
Designed by Tistory.