데이터베이스

DATABASE STEP 15 - Insert

2023. 3. 18. 13:35
728x90

★ Insert

  • DML
  • 테이블에 데이터를 추가하는 명령어(행 추가)
  • 구문
    • insert into 테이블(컬럼리스트) values (값리스트);

 

■ 1. 표준 적인 방법(권장)

  • 원본 테이블에 정의된 컬럼 순서와 개수대로 컬럼리스트를 만들고(a)
  • 값 리스트를 구성하는 방법(b)
  • 사용 ex)
insert into tblMemo (seq, name, memo, regdate) -- a
            values (seqMemo.nextVal, '홍길동', '메모입니다.', sysdate); --b

 

■ 2. 컬럼 리스트의 순서는 원본 테이블과 상관 없다.

  • 컬럼 리스트의 순서와 값 리스트의 순서는 반드시 일치해야 한다!!
insert into tblMemo (name, memo, regdate, seq) 
            values ('홍길동', '메모입니다.', sysdate,seqMemo.nextVal);
          
-- ORA-00932: inconsistent datatypes: expected NUMBER got DATE
insert into tblMemo (memo, regdate, seq, name) 
            values ('홍길동', '메모입니다.', sysdate,seqMemo.nextVal);

 

■ 3. ORA-00947: not enough values

  • 컬럼 리스트의 컬럼 개수와 값 리스트의 값 개수는 반드시 일치해야 한다.
insert into tblMemo (seq, name, memo, regdate) -- a
            values (seqMemo.nextVal, '홍길동', sysdate); --b

 

■ 4 .ORA-00913: too many values

  • 컬럼 리스트의 컬럼 개수와 값리스트의 값 개수는 반드시 일치해야 한다.
insert into tblMemo (seq, name, memo) -- a
            values (seqMemo.nextVal, '홍길동', '메모입니다.', sysdate); --b

 

■ 5. null 조작 > name 을 안넣고 싶다. > null 대입

  • 5.1 null 상수 사용 > 명시적
  • 사용 ex)
insert into tblMemo (seq, name, memo, regdate) -- a
            values (seqMemo.nextVal, null, '메모입니다.', sysdate); --b
  • 5.2 컬럼 생략 > 암시적
  • 사용 ex)
insert into tblMemo (seq, memo, regdate) -- a
            values (seqMemo.nextVal, '메모입니다.', sysdate); --b

 

■ 6. Default 조작

  • 6.1 default 상수 사용
  • 사용 ex)
insert into tblMemo (seq, name, memo, regdate) -- a
            values (seqMemo.nextVal, '홍길동', '메모입니다.', default); --b
  • 6.2 컬럼 생략 > null 대입 x > default가 동작함
  • 사용 ex)
insert into tblMemo (seq, name, memo) -- a
            values (seqMemo.nextVal, '홍길동', '메모입니다.'); --b
  • 6.3 null 상수 사용하면, 사용자의 의사를 우선해서 default가 동작을 안한다.
  • 사용 ex)
insert into tblMemo (seq, name, memo, regdate) -- a
            values (seqMemo.nextVal, '홍길동', '메모입니다.', null); --b

 

■ 7. 단축 표현

  • 컬럼 리스트를 생략할 수 있다. > 원본 테이블의 컬럼 순서를 참고해서 실행
insert into tblMemo values (seqMemo.nextVal, '홍길동', '메모입니다.', default); --b
  • 컬럼 리스트를 생략하면 값 리스트의 순서를 변경할 수 없다. 
insert into tblMemo values ('홍길동', '메모입니다.', default, seqMemo.nextVal);
  • null 조작
insert into tblMemo values (seqMemo.nextVal,  null, '메모입니다.', default);
  • default 조작
insert into tblMemo values (seqMemo.nextVal, '홍길동' , '메모입니다.', default);

 

■ 8. tblMemo 테이블 > (복사) > tblMemoCopy 테이블 > 실사용O

create table tblMemoCopy (

    seq number(3) primary key,
    name varchar2(50) ,      -- 작성자
    memo varchar2(1000) not null,                   -- 메모
    regdate date default sysdate        -- 작성날짜
    
);
-- 서브 쿼리 > 테이블 복사
insert into tblMemoCopy select * from tblMemo;

drop table tblMemoCopy;

 

■ 9. tblMemo 테이블 > (복사) > tblMemoCopy 테이블 > 실사용X, 테스트용

  • 테이블 생성 + 데이터 복사
  • 컬럼 구조는 복사가 되는데, 제약 사항은 복사되지 않는다.
  • 개발용으로 대용량의 더미가 필요한 경우에 사용한다.
create table tblMemoCopy as select * from tblMemo;
-- 아래와 같이 기본키의 제약사항이 안먹히고 삽입되는 것을 볼 수 있음 
insert into tblMemoCopy (seq, name, memo, regdate) -- a
            values (1, '홍길동', '메모입니다.', sysdate); --b

-- 출력 확인
select * from tblMemo;
select * from tblMemoCopy;
728x90
저작자표시 비영리 변경금지 (새창열림)

'데이터베이스' 카테고리의 다른 글

DATABASE STEP 17 - Group By  (0) 2023.03.18
DATABASE STEP 16 - Update&Delete  (0) 2023.03.18
DATABASE STEP 14 - Sequence  (0) 2023.03.18
DATABASE STEP 13 - DDL  (0) 2023.03.18
DATABASE STEP 12 - Casting_Function  (2) 2023.03.18
'데이터베이스' 카테고리의 다른 글
  • DATABASE STEP 17 - Group By
  • DATABASE STEP 16 - Update&Delete
  • DATABASE STEP 14 - Sequence
  • DATABASE STEP 13 - DDL
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • ajax
  • 자바
  • 프론트엔드
  • 개발블로그
  • 코딩테스트
  • 정보보안전문가
  • 백준
  • 앱개발자
  • IT개발자
  • 정보처리기사
  • jquery
  • 데이터베이스
  • jsp
  • IT자격증공부
  • 정보처리기사필기
  • html
  • 개발자
  • it
  • css
  • 웹개발
  • IT자격증
  • 웹개발자
  • 알고리즘
  • DBA
  • JavaScript
  • 백엔드
  • java
  • 웹페이지
  • React
  • DB

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
DATABASE STEP 15 - Insert
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.