데이터베이스

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 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 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

인기 글

태그

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

최근 댓글

최근 글

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

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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