Database

[Oracle] DB에 데이터 추가하기

shurimp 2022. 7. 20. 18:54

프로젝트 진행 중 백엔드 구현 전에 테스트 데이터를 넣어보려고 하는데 자꾸 뭐가 안됐다...😑

해결하면서 우리 프로젝트에만 해당하는 부분들이 몇 가지 있길래 팀원분들한테도 공유하려고 지라에 정리해둔 것을 블로그에도 옮겨둔다.

스티커 붙여둔 부분은 실명이라 가렸다.

 

INSERT문 골격

INSERT INTO 테이블명
(
  열 이름1,
  열 이름2,
  열 이름3
)
VALUES
(
  값 1,
  값 2,
  값 3
);

 

주의사항
  1. 열의 수와 값의 수는 반드시 일치해야 합니다.
    일치하지 않을 경우 오류 발생
    (ORA-00947: 값의 수가 충분하지 않습니다.)

  2. 열 이름은 큰 따옴표(“ “) 안에 작성해야 합니다.
    왜 이런지는 모르겠으나.. (아마 언더바(_) 때문이라 추측) 그냥 열 이름을 작성했을 시 오류가 발생합니다.
    또한, 큰 따옴표 안에 작성하는 열 이름은 대소문자를 구분하기 때문에 열 이름을 정확히 입력해야 합니다.
    (ORA-00904: 부적합한 식별자)
  3. VALUES에 해당하는 값이 varchar2타입 이라면 작은 따옴표(' ‘)안에 작성해야 합니다. 큰 따옴표에 넣거나, 따옴표 없이 작성할 경우 오류가 발생합니다. 핸드폰 번호같은 경우에도, varchar2타입으로 지정했기 때문에 '01012341234’ 이렇게 입력해야 합니다.
    (ORA-00984: 열을 사용할 수 없습니다)
  4. 해당 테이블 중 외래 키를 가지는 열이 있을 경우, 부모 테이블에 먼저 해당 데이터를 가지고 있어야 합니다. 부모 테이블에 없는 데이터를 추가할 경우 오류가 발생합니다.
    (ORA-02291: 무결성 제약조건이 위배되었습니다.부모 키가 없습니다.)
  5. Default값을 가지는 열의 경우, 값을 입력하지 않아도 자동으로 데이터가 들어갑니다. (시간을 설정할 때 매우 유용)

  6. NOT NULL 제약조건이 설정되어있는 열은 INSERT할 때 무조건 데이터를 추가해야 합니다.
    (단, Default값이 설정되어있는 열은 생략 가능합니다.)

위의 주의사항을 지켜서 t_user테이블에 데이터를 추가한다고 가정했을 때,

다음과 같이 작성하면 됩니다.

t_user테이블의 열 구조입니다.

8번 행 이후부터는 모두 default값이 설정되어있고, 모든 행이 NULL을 허용하지 않습니다.

디폴트값이 없고 NULL을 허용하지 않는 열에 데이터를 직접 입력하고, 8행 이후부터의 열에는 데이터를 입력하지 않았습니다.

SQL 문장 실행 후, 데이터가 잘 들어온 것을 확인할 수 있습니다. 값을 입력하지 않은 열에는 설정해둔 default값이 들어옵니다.

 


+) 날짜 다루기

current_date로 받아온 날짜는 현재 22/07/20 이렇게 저장되어있지만, 그 안에 시, 분, 초까지 모두 저장하고 있습니다. 이를 다룰 땐 to_char함수를 이용해 마음대로 날짜형식을 지정할 수 있습니다.

to_char("date타입인 열 이름", '포맷팅 형식')
 

주의사항
  1. 포맷팅 형식은 작은 따옴표(' ')안에 지정해야 합니다.
  2. 포맷팅 형식으로 한글을 입력할 경우, 한글은 꼭 큰 따옴표 안에 작성해야 합니다. 나머지 기호들은 그냥 입력하면 됩니다.

 

Oracle 날짜 포맷팅 기호 정리

yyyy: 년도 (yy는 뒷 두자리만 출력)
MM: 월
dd: 일

HH: 시 (12시간단위)
HH24: 시 (24시간단위)
AM 또는 PM: 오전/오후를 표시(둘 중 하나만 입력하면 자동으로 시간에 맞춰 표시함)
mm: 분
ss: 초

 


+) 오라클 디벨로퍼에서 직접 데이터 추가/삭제/변경하는 방법

SQL문을 작성하지 않고도, 오라클 디벨로퍼에서 데이터의 추가/삭제/변경이 가능합니다.

테이블 - 데이터 탭의 좌측 상단 메뉴를 이용해 추가/삭제/수정이 가능합니다.

행 추가: 새로운 행 삽입

행 삭제: 기존 행 삭제

컬럼 데이터를 더블클릭하면 기존 데이터를 편집할 수 있습니다.

데이터 변경 후 커밋(오른쪽에서 두번째)을 누르면 DB에 반영되고, 롤백(마지막)을 누르면 변경사항이 취소됩니다.

 

제약조건 탭에서 편집을 눌러 테이블명, 컬럼명, 데이터유형, 크기, NULL제약 조건 등등을 모두 변경할 수 있습니다.