본문 바로가기
기록하는 중/데이터베이스

[Oracle] INSERT

by 성장하는 요롱이 2023. 12. 11.

 

INSERT 

  -  테이블에 새로운 행 추가

 

  -  특정 컬럼에만 DATA 추가

INSERT INTO table_name(column_name,...)
VALUES(column_value,...);

  -  모든 컬럼에 DATA 추가

INSERT INTO table_name
VALUES(column_value,...);

※ 문자와 날짜 값은 ' ' 사용.

 

 주의 - 오류

  -  column_name 수 보다 column_value 값의 개수가 적거나 많으면 에러 발생

INSERT INTO STUDENTS(STUDENT_ID, FIRST_NAME, AGE)
VALUES(100, 'KIM');    -- 에러

INSERT INTO STUDENTS(STUDENT_ID, FIRST_NAME, AGE)
VALUES(100, 'KIM', 'KOREA', 20);  -- 에러

 

  -  column_name이 잘못 입력되었을 때 에러 발생

INSERT INTO STUDENTS(ID, FIRST_NAME, AGE)
VALUES(100, 'KIM', 20)   -- 에러

 

  -  칼럼과 입력할 값의 데이터 타입이 서로 맞지 않을 경우 에러 발생

INSERT INTO STUDENTS(STUDENT_ID, FIRST_NAME, AGE)
VALUES(100, KIM, 20)   -- 에러

※ 문자와 날짜 값은 ' ' 사용.

  

  -  칼럼명을 생략한 INSERT문  →  모든 칼럼 데이터 추가

INSERT INTO STUDENTS
VALUES( 105. 'LEE', 20);

 

  - NULL값 입력 : 해당 칼럼의 값을 모르거나 확정되지 않았을 때 사용, 컬럼이 NULL값 허용인 경우

      →  암시적인 NULL값 삽입 : INSERT 리스트에서 칼럼 생략, 자동으로 NULL 값 할당

      →  명시적인 NULL값 삽입 : VALUES에 NULL이라고 직접 기술, NULL 값 대신 ' ' 가능

 

 기존 테이블에 존재하는 데이터를 다른 테이블에 입력할 때
INSERT INTO table_name(column1, column2,...)
SELECT colunm1, column2,...FROM table_name WHERE 조건;

 

   INSERT ALL

  -  두 개 이상의 테이블에 INSERT ALL을 사용하여 한번에 삽입

  - 단, 각 서브쿼리의 조건절이 같아야 함

INSERT ALL

INTO STUDENTS
VALUES(STUDENT_ID, FIRST_NAME, AGE)

INTO VOLUNTEER
VALUES(STUDENT_ID, FIRST_NAME, START_DATE, END_DATE)

SELECT STUDENT_ID, FIRST_NAME, AGE, START_DATE, END_DATE
FROM SCHOOL
WHERE GRADE >= 3;

  - 조건이 다를 때

INSERT ALL
WHERE 조건 THEN
        INTO table_name1
        VALUES (column_value1, ...)
WHERE 조건 THEN
        INTO table_name2
        VALUES (column_value1, ...)

SELECT column1, column2, ...
FROM table_name;

 

'기록하는 중 > 데이터베이스' 카테고리의 다른 글

[Oracle]] DELETE, MERGE  (0) 2023.12.12
[Oracle] UPDATE  (0) 2023.12.12
[Oracle] RENAME, TRUNCATE  (0) 2023.12.11
[Oracle] DROP  (0) 2023.12.03
[Oracle] ALTER  (0) 2023.12.03