반응형

기본적으로 데이터를 테이블에 입력하는 방법이 두 가지 있다. 하나는 한번에 하나의 데이터를 등록한다. 또 하나는 한번에 여러 개의 데이터를 입력한다.

INSERT 문법

제일 기본이 되는 데이터를 등록하는 SQL는 아래와 같다.

INSERT INTO "테이블명" ("필드1", "필드2", ...)
VALUES ("값1", "값2", ...);

테이블이 생성된 필드의 순서와 입력한 값의 순서만 맞다면 필드명은 생략할 수도 있다.

INSERT INTO "테이블명"
VALUES ("값1", "값2", ...);

SELECT로 한번에 여러 개의 데이터를 입력 할 수도 있다. 앞에서 언급한 예제와 달리 SELECT 명령을 사용하여 입력하는 테이블의 데이터를 명시합니다. 그러면 데이터가 다른 테이블에서 온 건가요,라는 질문이 있으시면, 전혀 그렇지. 한 번에 여러 개의 데이터를 입력하는 SQL은 다음과 같다.

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

여기서 가장 기본 형식으로 SQL 문에서 WHERE, GROUP BY 및 HAVING 등 외에 테이블의 결합이나 별명 등이 포함되는 것도 가능하다.

INSERT 예제: 한번에 1건 등록

다음과 같은 구조의 테이블이 있다고 하자.

store_information 테이블

필드명자료형
store_namechar(50)
salesfloat
txn_date datetime

그리고 다음에 Los Angeles 매장에 Jan-10-2018, 매출 $900 데이터를 해당 테이블에 넣는 경우 다음과 같은 SQL 문을 입력한다.

INSERT INTO store_information (store_name, sales, txn_Date)
VALUES ('Los Angeles', 900, 'Jan-10-2018');

혹은, 아래와 같이도 입력할 수 있다.

INSERT INTO store_information VALUES ('Los Angeles', 900, 'Jan-10-2018');

INSERT 예제: 한번에 여러 건 등록

2017년의 판매한 데이터를 store_information 테이블에 등록한다고 할때, 그 데이터가 sales_information 테이블에서 얻어서 넣은 경우 다음과 같은 SQL을 입력한다.

INSERT INTO store_information (store_name, sales, txn_date)
SELECT store_name, sales, txn_date
FROM sales_information
WHERE Year(txn_date) = 2017;

여기에서 SQL Server의 함수에서 날짜의 연도를 검색했는데, 데이터베이스에 따라 문법이 다르다. 예를 들어, Oracle에서는 WHERE TO_CHAR(Txn_Date, 'yyyy') = 2017와 같이 사용한다.

반응형

'SQL' 카테고리의 다른 글

[SQL][DML] DELETE  (0) 2018.01.09
[SQL][DML] UPDATE  (0) 2018.01.09
[SQL][DML] INSERT  (0) 2018.01.09
[SQL][DML] MINUS  (0) 2018.01.09
[SQL][DML] INTERSECT  (0) 2018.01.09
[SQL][DML] UNION, UNION ALL  (0) 2018.01.09

+ Recent posts