-
[Oracle] DB에 데이터 추가하기Database 2022. 7. 20. 18:54
프로젝트 진행 중 백엔드 구현 전에 테스트 데이터를 넣어보려고 하는데 자꾸 뭐가 안됐다...😑
해결하면서 우리 프로젝트에만 해당하는 부분들이 몇 가지 있길래 팀원분들한테도 공유하려고 지라에 정리해둔 것을 블로그에도 옮겨둔다.
스티커 붙여둔 부분은 실명이라 가렸다.
INSERT문 골격
INSERT INTO 테이블명 ( 열 이름1, 열 이름2, 열 이름3 ) VALUES ( 값 1, 값 2, 값 3 );
주의사항
- 열의 수와 값의 수는 반드시 일치해야 합니다.
일치하지 않을 경우 오류 발생
(ORA-00947: 값의 수가 충분하지 않습니다.) - 열 이름은 큰 따옴표(“ “) 안에 작성해야 합니다.
왜 이런지는 모르겠으나.. (아마 언더바(_) 때문이라 추측) 그냥 열 이름을 작성했을 시 오류가 발생합니다.
또한, 큰 따옴표 안에 작성하는 열 이름은 대소문자를 구분하기 때문에 열 이름을 정확히 입력해야 합니다.
(ORA-00904: 부적합한 식별자) - VALUES에 해당하는 값이 varchar2타입 이라면 작은 따옴표(' ‘)안에 작성해야 합니다. 큰 따옴표에 넣거나, 따옴표 없이 작성할 경우 오류가 발생합니다. 핸드폰 번호같은 경우에도, varchar2타입으로 지정했기 때문에 '01012341234’ 이렇게 입력해야 합니다.
(ORA-00984: 열을 사용할 수 없습니다) - 해당 테이블 중 외래 키를 가지는 열이 있을 경우, 부모 테이블에 먼저 해당 데이터를 가지고 있어야 합니다. 부모 테이블에 없는 데이터를 추가할 경우 오류가 발생합니다.
(ORA-02291: 무결성 제약조건이 위배되었습니다.부모 키가 없습니다.) - Default값을 가지는 열의 경우, 값을 입력하지 않아도 자동으로 데이터가 들어갑니다. (시간을 설정할 때 매우 유용)
- 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타입인 열 이름", '포맷팅 형식')
주의사항
- 포맷팅 형식은 작은 따옴표(' ')안에 지정해야 합니다.
- 포맷팅 형식으로 한글을 입력할 경우, 한글은 꼭 큰 따옴표 안에 작성해야 합니다. 나머지 기호들은 그냥 입력하면 됩니다.
Oracle 날짜 포맷팅 기호 정리
yyyy: 년도 (yy는 뒷 두자리만 출력)
MM: 월
dd: 일
HH: 시 (12시간단위)
HH24: 시 (24시간단위)
AM 또는 PM: 오전/오후를 표시(둘 중 하나만 입력하면 자동으로 시간에 맞춰 표시함)
mm: 분
ss: 초+) 오라클 디벨로퍼에서 직접 데이터 추가/삭제/변경하는 방법
SQL문을 작성하지 않고도, 오라클 디벨로퍼에서 데이터의 추가/삭제/변경이 가능합니다.
테이블 - 데이터 탭의 좌측 상단 메뉴를 이용해 추가/삭제/수정이 가능합니다.
행 추가: 새로운 행 삽입
행 삭제: 기존 행 삭제
컬럼 데이터를 더블클릭하면 기존 데이터를 편집할 수 있습니다.
데이터 변경 후 커밋(오른쪽에서 두번째)을 누르면 DB에 반영되고, 롤백(마지막)을 누르면 변경사항이 취소됩니다.
제약조건 탭에서 편집을 눌러 테이블명, 컬럼명, 데이터유형, 크기, NULL제약 조건 등등을 모두 변경할 수 있습니다.
'Database' 카테고리의 다른 글
IE 표기법(Information Engineering) (0) 2022.04.22 정규화란 무엇인가? (0) 2022.04.20 데이터 모델링의 개념 (0) 2022.04.18 데이터의 무결성 제약조건 (0) 2022.04.18 데이터베이스 시스템 (0) 2022.04.14 - 열의 수와 값의 수는 반드시 일치해야 합니다.