데이터베이스

데이터조작어 DML - INSERT

야생늑대 2022. 4. 18. 15:07
반응형

데이터의 추가, 수정, 삭제하는 데이터 조작어(Date Manipulation Language) 

 

테이블복사

테이블 복사

DEPT 테이블을 복사한 DEPT_TEMP 테이블을 만든다.

※ 테이블을 복사하는데 데이터는 복사하고 싶지않을 때는 

WHERE 절의 조건에 1<>1을 넣어주면 결과값이 항상 false가 되어 행이 만들어 지지않는다.

테이블 열 구조만 같은 테이블을 만들어야 할 경우에 유용하게 쓰인다.

 

테이블 삭제

테이블을 잘못 만들었거나 지워야 할 경우에 사용

DROP TABLE 테이블 이름;

테이블에 데이터 추가하기

INSERT INTO 테이블이름 (열1, 열2,..., 열n)
VALUES (열1에 들어갈 데이터, 열2에 들어갈 데이터, ..., 열n에 들어갈 데이터);

INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC)
				VALUES(50, 'DATABASE', 'SEOUL');

INSERT문 오류들

SQL&nbsp;오류:&nbsp;ORA-00913:&nbsp;값의&nbsp;수가&nbsp;너무&nbsp;많습니다
SQL 오류: ORA-00913: 값의 수가 너무 많습니다
ORA-01722: 수치가 부적합합니다
ORA-01438: 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다.

 


INSERT문에서 열 지정을 생략하고 데이터 입력하기

INSERT문에 지정하는 열은 생략할 수도 있다. 

열 지정을 생략하면 데이터는 테이블을 만들 때 설정한 열 순서대로 작성하면된다.

(이 때도 테이블을 구성하는 열 개수나 자료형 및 길이는 반드시 맞춰주어야 한다.)

 

열 생략하고 데이터 입력하기

실무에서는 열을 생략하는 방식보다 모든열을 직접 명시하는 방법을 선호한다. INSERT문을 처음 작성할 때 조금 귀찮더라고 명시적으로 모든 열을 작성해 놓으면 여러 개발자들이 따로 자료를 찾지 않고, INSERT문만 보아도 테이블에 포함된 열의 내용을 한눈에 알아 볼 수 있어 이해하기 쉬워진다.

테이블에 NULL 데이터 입력하기

INSERT문으로 새로운 데이터를 추가할 때 특정 열에 들어갈 데이터가 확정되지 않았거나 굳이 넣을 필요가 없는 데이터인 경우에는 NULL을 사용한다. 

NULL을 직접 명시적으로 입력해주는 방법과 대상열을 생략하여 암시적으로 NULL이 입력되도록 유도하는 방식이 있다.

 

NULL의 명시적 입력

NULL을 직접입력하거나 빈 공백문자열인 작은따옴표( ' ' )를 사용해서 NULL을 입력할 수 있다.

실무에서는 NULL을 직접 명시하는 경우에는 NULL 이란 단어를 정확히 입력하는 방식을 선호한다.

  이 방식을 선호하는 이유는 데이터베이스에 익숙하지 않은 개발자가 보았을 때 공백 문자열이 NULL로

  들어가는건지 헷갈릴 수 있기 때문이다.

NULL의 암시적 입력

암시적입력 방식은 INSERT문에 NULL이 들어가야할 열 이름을 아예 입력하지 않는 것이다.

열 데이터를 넣지 않는 방식으로 NULL 데이터 입력

위의 INSERT문을 보면 부서이름(DNAME) 열을 제외 시켜 자동으로 NULL이 입력되었다.


INSERT문으로 날짜 데이터 입력하기

YYYY/MM/DD형식과 YYYY-MM-DD형식

※ 날짜데이터 입력시 유의점 

 오라클이 설치되어 있는 운영체제(OS)의 종류나 사용하는 기본 언어군에 따라 날짜 표기 방식이 다르기 때문에

 에러가 나는 경우가 있다. 그래서 날짜데이터를 INSERT문으로 입력할 때는 위의 SQL문처럼 문자열로 날짜를 입력하지 않고 TO_DATE 함수를 사용하는 것이 좋다. TO_DATE 함수를 이용해 원하는 형태로 날짜를 출력할 수 있다.

TO_DATE 사용

SYSDATE 를 사용하여 날짜데이터 입력하기

  • 현재 시점으로 날짜를 입력할 경우에는 SYSDATE를 지정하여 간단히 처리할 수 있다. 
  • SYSDATE 방식은 데이터 입력 시점을 정확히 입력할 수 있어 자주 사용한다.

SYSDATE를 사용하여 날짜데이터 입력

  서브쿼리를 사용하여 한번에 여러 데이터 추가하기

※ 유의할 점

  • VALUES절은 사용하지 않는다.
  • 데이터가 추가되는 테이블과 서브쿼리의 열 개수, 자료형은 일치해야 한다.
  • 열 개수와 자료형 만 맞는다면 여러개의 테이블을 조인한 결과라도 데이터 추가가 가능하다.

 

반응형

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

세션과 읽기 일관성의 의미, LOCK  (0) 2022.04.18
트랜잭션 제어 ROLLBACK, COMMIT  (0) 2022.04.18
데이터조작어 DML - DELETE  (0) 2022.04.18
데이터조작어 DML - UPDATE  (0) 2022.04.18
서브쿼리 subquery  (0) 2022.04.17