ALTIBASE HDB 5.3.3 기초강좌
INSERT 1 0 9,011

by Altibase INSERT DEFAULT [2012.02.08]


INSERT 개념

  테이블에 새로운 레코드를 삽입하는 구문입니다.

기본 INSERT 구문

 
INSERT INTO table_name[(column_name,..)] 
VALUES (value, ..);
    
  • - INTO table_name[(column_name,..)] : 실제 데이터를 삽입할 테이블과 칼럼 리스트를 적는다.
  • - VALUES (value, ..) : INTO절에 명시했던 칼럼 리스트에 삽입할 실제 값을 적는다.
  • - 테이블의 칼럼 중 INTO절의 칼럼 리스트에 빠진 데이터는 NULL로 들어간다.

기본 INSERT 예제

  CUSTOMER 테이블에 데이터를 입력하시오.

 
iSQL> INSERT INTO customer 
      VALUES ( 8001011212123, 'HJKIM', 'STUDENT', '025282222', 'F', '0101', '150763', 
      '서울영등포구 여의도동 63 대한생명빌딩');
    

서브쿼리를 이용한 INSERT 구문

 
INSERT INTO table_name[(column_name,..)] 
SELECT column_name, …
FROM table_name 
[WHERE conditions]
[ORDER BY column_name,..]
LIMIT [start_index ,] row_count;
    
  • - SELECT statement : 삽입하고자 할 데이터에 대한 SELECT 구문을 작성한다
  • - 삽입할 테이블의 칼럼의 개수와 SELECT할 테이블의 개수는 동일해야 하며 칼럼끼리는 호환 가능한 데이터 타입이어야 한다. 만약 SELECT절에서 칼럼 리스트를 생략할 경우, FROM절에 명시한 테이블의 모든 칼럼의 데이터가 입력된다.
  • - INSERT할 테이블과 SELECT할 테이블이 동일할 수도 있다.

서브쿼리를 이용한 INSERT 예제

  주문 테이블 중 processing=‘D’ 의 조건을 만족하는 레코드를 찾아 delayed_processing 테이블에 입력하시오

 
iSQL> DESC delayed_processing
--------------------------------------------
NAME              TYPE            IS NULL 
--------------------------------------------
CNO               CHAR(14)        FIXED       
ORDER_DATE        DATE            FIXED  
     
iSQL> INSERT INTO delayed_processing
      SELECT cno, order_date
      FROM orders
      WHERE processing = 'D';
      
1 row inserted.
    

DEFAULT 값을 사용한 INSERT 구문

  테이블에 데이터를 INSERT 할 때, 실제 데이터를 INSERT 하지 않고 테이블 생성 시에 정의한 Default 값을 이용해서 INSERT 를 할 수 있습니다.

 
INSERT INTO table_name[(column_name)] 
VALUES (DEFAULT | value,  ...)| DEFAULT VALUES;
    
  • - VALUES (DEFAULT | value, ...)| DEFAULT VALUES : VALUES 절에 명시하면 테이블 생성 시 혹은 테이블에 정의된 Default 값을 자동으로 입력한다.
  • - 전체 칼럼의 Default값을 넣으려면 DEFAULT VALUES절을 사용하면 된다.

DEFAULT 값을 사용한 INSERT 예제

  고객 테이블에 DEFAULT 값을 이용해 입력하시오.

 
iSQL> CREATE TABLE customer (
      cno INTEGER PRIMARY KEY,
      cname CHAR(20) ,
      job CHAR(10) ,
      sex CHAR(1) DEFAULT ‘M’,
      city CHAR(10));


iSQL> INSERT INTO customer 
      VALUES (1, 'DJKIM', 'DESIGNER', DEFAULT, 'Seoul');
1 row inserted.

iSQL> SELECT * FROM customer ;
CNO         CNAME       JOB        SEX   CITY        
----------------------------------------------
2           DJKIM      DESIGNER    M    Seoul   
    
1 row selected.
    

  T1 테이블의 전체 컬럼에 DEFAULT 값을 이용해 입력하시오.

 
iSQL> CREATE TABLE t1 (
      c1 INTEGER DEFAULT 0, 
      c2 DATE DEFAULT SYSDATE); 
Create seccess.

iSQL> INSERT INTO t1 DEFAULT VALUES;
1 row inserted

iSQL> SELECT * FROM t1;
C1          C2                   
------------------------------------
0           2011/06/09 17:31:55

1 row selected.
    

INSERT 시 주의사항

  • - 칼럼 이름을 명시하지 않았을 경우 테이블을 생성할 때 테이블의 칼럼의 개수보다 더 많은 데이터를 입력하거나 적은 데이터를 입력할 경우 오류 발생함
  • - 칼럼 이름을 명시하지 않았을 경우 테이블을 생성할 때 나열한 칼럼 순서대로 입력해야 함
  • - 칼럼 이름을 명시한 경우 칼럼의 개수와 삽입할 값들의 개수는 동일해야 하며 호환 가능한 데이터 형이어야 함
  • - 일부 칼럼은 명시하고 일부 칼럼을 명시하지 않을 경우에 명시하지 않는 칼럼에 정의된 DEFAULT 값이 삽입되거나 NULL이 삽입됨
  • - 동일한 테이블을 이용하여 INSERT ~ SELECT 구문을 사용 가능함
  • - NOT NULL 제약조건이 명시된 칼럼에 NULL값을 입력할 수 없음

- 강좌 URL : http://www.gurubee.net/lecture/2182

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입