Recommanded Free YOUTUBE Lecture: Learning and Hacking VPC

INSERT INTO Statement

모든 쿼리는 연습용 데이터베이스를 통해서 실행해 볼 수 있다. MySQL & SQL 스터디 준비 를 참고하여 실습환경을 구축하자.
SQL INSERT 문은 혹은 여러 레코드를 테이블에 삽입하기 위해서 사용한다.

Syntax

INSERT INTO table_name (Columns1, Columns2, Columns3, ...)
VALUES (value1, value2, value3, ...);

Columns와 Values는 서로 일치해야 한다. 만약 모든 필드에 값을 설정한다면 아래와 같이 columns를 명시하지 않아도 된다.

INSERT INTO table_name
VALUES (value1, value2, value3, ...)

INSERT INTO VALUES vs INSERT INTO SET

일반적으로 "INSERT INTO table_name VALUES"문에 익숙할 것이다. 실제 SQL 표준 구문으로 모든 DBMS에서 사용하고 있다.

하지만 테이블의 컬럼이 많아질 경우 Columns와 Values를 맵핑해서 쿼리를 작성하는게 어려울 수 있다. 이 문제를 해결하기 위해서 MySQL은 INSERT INTO SET구문을 제공한다.

INSERT INTO table_name
SET
    Columns1 = value1,
    Columns2 = value2,
    Columns3 = value3,
    ...;

가독성이 좋아진 것을 확인 할 수 있다. 다만 이 방식은 표준(ANSI-SQL)이 아니기 때문에 다른 DBMS에서는 사용할 수 없다는 단점이 있다.

Example

shippers 테이블에는 선적사 정보가 저장된다. 현재 선적사 목록을 조회해보자.

SELECT * 
FROM shippers;
ShipperID CompanyName Phone
1 Speedy Express (503) 555-9831
2 United Package (503) 555-3199
3 Federal Shipping (503) 555-9931

이번에 새로운 선적사가 추가됐다. 아래의 정보를 가진 선적사를 INSERT 해보자.

  • ShipperID : 4

  • CompanyName : Dream Express

  • (500) 112-1122

INSERT INTO shippers VALUES(4, 'Dream Express', '(500) 112-1122');
-- or
INSERT INTO shippers(ShipperID, CompanyName, Phone) VALUES(4, 'Dream Express', '(500) 112-1122');
-- or (mysql)
INSERT INTO shippers 
  SET 
      ShipperID=4,
      CompanyName='Dream Express',
      Phone='(500) 112-1122';

참고

SQL Study With MySQL 에서 MySQL과 관련된 다른 문서들을 읽을 수 있습니다.