Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

개요

설명

INSERT 문을 사용하여 데이터베이스에 존재하는 테이블에 새로운 레코드를 삽입할 수 있다. CUBRID는 INSERT … VALUES 문, INSERT … SET 문, INSERT … SELECT 문을 지원한다.

INSERT … VALUES 문과 INSERT … SET 문은 명시적으로 지정된 값을 기반으로 새로운 레코드를 삽입하며, INSERT … SELECT 문은 다른 테이블에서 조회한 결과 레코드를 삽입할 수 있다. 단일 INSERT 문을 이용하여 여러 행을 삽입하기 위해서는 INSERT … VALUES  문 또는 INSERT … SELECT 문을 사용한다.

구문

<INSERT … VALUES statement>

INSERT [INTO] table_name [(column_name, ...)]

    {VALUES | VALUE}({expr | DEFAULT}, ...)[,({expr | DEFAULT}, ...),...]

    [ON DUPLICATE KEY UPDATE column_name = expr, ... ]

INSERT [INTO] table_name DEFAULT [ VALUES ]

INSERT [INTO] table_name VALUES()

 

<INSERT … SET statement>

INSERT [INTO] table_name

    SET column_name = {expr | DEFAULT}[, column_name = {expr | DEFAULT},...]

    [ON DUPLICATE KEY UPDATE column_name = expr, ... ]

 

<INSERT … SELECT statement>

INSERT [INTO] table_name [(column_name, ...)]

    SELECT...

    [ON DUPLICATE KEY UPDATE column_name = expr, ... ]

  • table_name : 새로운 레코드를 삽입할 대상 테이블 이름을 지정한다.
  • column_name : 값을 삽입할 칼럼 이름을 지정한다. 이 값을 생략하면, 테이블에 정의된 모든 칼럼이 명시된 것으로 간주되므로 모든 칼럼에 대한 값을 VALUES 뒤에 명시해야 한다. 테이블에 정의된 칼럼 중 일부 칼럼만 명시하면 나머지 칼럼에는 DEFAULT로 정의된 값이 할당되며, 정의된 기본값이 없는 경우 NULL 값이 할당된다.
  • expr | DEFAULT : VALUES 뒤에는 칼럼에 대응하는 칼럼 값을 명시하며, 표현식 또는 DEFAULT 키워드를 값으로 지정할 수 있다. 명시된 칼럼 리스트의 순서와 개수는 칼럼 값 리스트와 대응되어야 하며, 하나의 레코드에 대해 칼럼 값 리스트는 괄호로 처리된다.
  • DEFAULT : 기본값을 칼럼 값으로 명시하기 위하여 DEFAULT 키워드를 사용할 수 있다. VALUES 키워드 뒤의 칼럼 값 리스트 내에 DEFAULT를 명시하면 해당 칼럼에 기본값을 저장하고, VALUES 키워드 앞에 DEFAULT를 명시하면 테이블 내 모든 칼럼에 대해 기본값을 저장한다. 기본값이 정의되지 않은 칼럼에 대해서는 NULL을 저장한다.
  • ON DUPLICATE KEY UPDATE : PRIMARY KEY 또는 UNIQUE 속성이 정의된 칼럼에 중복 값이 삽입되어 제약 조건 위반이 발생하면, ON DUPLICATE KEY UPDATE 절에 명시된 액션을 수행하면서 제약 조건 위반을 발생시킨 값을 특정 값으로 변경한다.
예제

CREATE TABLE a_tbl1(

id INT UNIQUE,

name VARCHAR,

phone VARCHAR DEFAULT '000-0000');

 

--insert default values with DEFAULT keyword before VALUES

INSERT INTO a_tbl1 DEFAULT VALUES;

 

--insert multiple rows

INSERT INTO a_tbl1 VALUES (1,'aaa', DEFAULT),(2,'bbb', DEFAULT);

 

--insert a single row specifying column values for all

INSERT INTO a_tbl1 VALUES (3,'ccc', '333-3333');

 

--insert two rows specifying column values for only

INSERT INTO a_tbl1(id) VALUES (4), (5);

 

--insert a single row with SET clauses

INSERT INTO a_tbl1 SET id=6, name='eee';

INSERT INTO a_tbl1 SET id=7, phone='777-7777';

 

SELECT * FROM a_tbl1;

           id  name                  phone

=========================================================

         NULL  NULL                  '000-0000'

            1  'aaa'                 '000-0000'

            2  'bbb'                 '000-0000'

            3  'ccc'                 '333-3333'

            4  NULL                  '000-0000'

            5  NULL                  '000-0000'

            6  'eee'                 '000-0000'

            7  NULL                  '777-7777' 

 

INSERT INTO a_tbl1 SET id=6, phone='000-0000'

ON DUPLICATE KEY UPDATE phone='666-6666';

 

SELECT * FROM a_tbl1 WHERE id=6;

           id  name                  phone

=========================================================

            6  'eee'                 '666-6666'

 

INSERT INTO a_tbl1 SELECT * FROM a_tbl1 WHERE id=7 ON DUPLICATE KEY UPDATE name='ggg';

 

SELECT * FROM a_tbl1 WHERE id=7;

           id  name                  phone

=========================================================

            7  'ggg'                 '777-7777'