SQL 기본 | DML : 데이터 조작 언어 | INSERT
기본적으로 데이터를 테이블에 입력하는 방법이 두 가지 있다. 하나는 한번에 하나의 데이터를 등록한다. 또 하나는 한번에 여러 개의 데이터를 입력한다.
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_name | char(50) |
sales | float |
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
와 같이 사용한다.