본문 바로가기
Database/엑셀로 배우는 SQL 실무 - 입문

[SQL] 엑셀로 배우는 SQL - 데이터 추가 (INSERT문, SELECT로 INSERT 하기)

by 따라쟁이개발자 2023. 1. 10.

이전 장에서 CREATE문으로 Table 생성하는 방법에 대해 알아보았습니다.

 

엑셀로 따지면 아직 표만 만들어 둔 샘인데요

이제 데이터를 넣어 볼 차례입니다.

 

SQL에서 데이터를 추가할 때는 INSERT문을 사용합니다.

이번 장에선 INSERT문 구조와 다양한 INSERT 방법에 대해 알아보겠습니다.

 

 

엑셀로 먼저 살펴보기

이전 장들에서 가장 자주 사용되었던 엑셀 표입니다.

앞에선 이 데이터들이 기본적으로 있다고 가정한 상태로 SELECT문을 배웠었죠

 

이전 장에서 위 엑셀표를 Table로 만드는 방법에 대해 배웠으니,

이번엔 위 엑셀표 데이터들을 SQL로 직접 넣어보는 방법을 배워 볼게요

 

 

SQL로 살펴보기

일단 데이터를 추가하려면, 어느 항목에 어떤 값을 넣을 건지 나열을 해봐야겠죠?

우선 CREATE문으로 테이블을 만들었다고 가정해 볼게요

CREATE TABLE beverage_stock
(
    no number,
    type varchar2(20),
    name varchar2(20),
    price number,
    stock number
);

 

 

beverage_stock Table은 no, type, name, price, stock이란 Column을 가지고 있습니다.

엑셀과 대조해보면 각각 No, 음료종류, 음료이름, 가격, 재고를 의미하겠죠.

 

저희가 각 Column에 넣고자 하는 값은 아래와 같습니다.

1행 :   1, '탄산음료', '콜라', 1500, 10

2행 :   2, '탄산음료', '사이다', 1300, 5

3행 :   3, '이온음료', '포카리 스웨트', 1200, 7

4행 :   4, '이온음료', '파워에이드', 1200, 8

5행 :   5, '과일음료', '오렌지 주스', 1000, 0

 

그럼 위 데이터를 각 Column 항목에 어떻게 집어넣을 수 있을까요?

 

 

INSERT문

데이터를 추가. 즉, INSERT 할 때는 아래 정보들이 필요합니다.

  • 어떤 Table에 데이터를 넣을 것인가? (Table 이름)
  • 어떤 Column에 데이터를 넣을 것인가? (Column 목록)
  • 지정한 Column들에 어떤 값을 넣을 것인가? (값 목록)

INSERT문은 아래와 같은 구조를 가집니다. 위 정보들을 모두 포함하고 있죠

[]는 생략 가능하다는 의미를 가집니다. 컬럼목록을 나열하지 않아도 INSERT문 사용이 가능하며,

만약 컬럼목록을 생략한다면 INSERT문은 전체컬럼으로 인지하게 되죠

INSERT INTO 테이블이름[(컬럼목록)] VALUES (값목록);

-- 컬럼 목록을 모두 명시한 경우
INSERT INTO beverage_stock(no, type, name, price, stock) VALUES (1, '탄산음료', '콜라', 1500, 10);

-- 컬럼 목록을 생략한 경우 (전체 컬럼으로 인지)
INSERT INTO beverage_stock VALUES (2, '탄산음료', '사이다', 1300, 5);

-- 일부 컬럼만 값을 추가하는 경우
INSERT INTO beverage_stock(no, type, name) VALUES (6, '과일음료', '자몽주스');

 

 

SELECT로 INSERT 하는 방법

기존에 없던 데이터들을 INSERT 할 때에는 위 방법이 적합합니다.

 

그런데, 만약 이런 경우는 어떨까요?

beverage라는 Table이 이미 있었다고 가정해 봅니다.

 

이후 beverage_stock이라는 Table이 만들어졌고, 우리는 그 Table에 beverage 데이터들을 미리 넣어둬야 하는 상황입니다. 

(가격, 재고 값은 아직 미정인 상태입니다)

 

기존 INSERT문으로 beverage_stock에 데이터를 넣으려면 어떻게 해야 할까요?

이미 동일 데이터들이 beverage에 있지만 우리는 일일이 값을 다시 적어가며 INSERT문을 완성해야 할 것입니다.

 

이미 존재하던 데이터들이기 때문에 이 과정은 매우 소모적이고, 심지어 다시 적는 과정에서 휴먼 에러가 발생할 수도 있겠죠?

 

그래서 INSERT문은 아래와 같은 형식도 제공합니다.

뒷부분 SELECT문의 결과를 그대로 beverage_stock에 INSERT 시키겠다는 의미지요. 

INSERT INTO beverage_stock(no, type, name) SELECT no, type, name FROM beverage;

 

위 INSERT가 수행된 후 beverage_stock 결과는 어떨까요?

명시했던 Column 값들은 모두 알맞게 들어갔고, 따로 명시되지 않은 price, stock은 NULL값으로 채워졌습니다.

실제로 INSERT 시 SELECT를 활용한 방법이 자주 사용됩니다.

 

 

정리

이번 장에선 완성된 Table에 데이터를 추가하는 방법. INSERT문에 대해 알아봤습니다.

알려드린 INSERT 방법들을 활용해 직접 실습 데이터를 넣어보시면 좋을 것 같아요.

 

이번 장을 끝으로 '엑셀로 배우는 SQL' 시리즈가 마무리되었는데요!

어떠셨나요? 자주 사용하던 엑셀과 비교해가며 배우니 SQL 별 것 아니네라고 느껴지지 않으셨나요?

 

아직 다뤄야 할 SQL 문법들, 내장함수들이 많지만 사실 이 정도만 제대로 익혀도 가벼운 실무는 쉽게 하실 수 있을 것 같습니다.

중간중간 알려드린 팁들은 업무에 많은 도움이 되실 거예요 (아는 척하기도 좋고요😀)

 

실제로 다년간 SM 업무를 해보니 현업분들과 저희의 가장 큰 차이SQL을 할 줄 알고 모르고의 차이였던 것 같아요

간혹, 현업 분들 중 SQL을 따로 공부해서 저희에게 디테일한 질문을 주시는 분들이 계셨는데 그럴 때마다 움찔움찔했었네요.

 

그만큼 SQL은 조금이라도 알아두면 남들과 다른 차별점을 가질 수 있는 분야라고 생각합니다.

요즘은 비전공자 분들이 SQLD 자격증을 많이 취득하시기도 하고요!

 

이 '엑셀로 배우는 SQL' 시리즈가 많은 분들께 도움이 되었으면 좋겠네요

앞으로는 SQLD 자격증 취득을 위한 개념 정리, 실무 정리 위주로 정리해볼까 합니다. 

 

이 시리즈로 SQL이 조금 더 가깝게 느껴지셨다면, 23년 3월 SQLD 시험 함께 준비해 보셔도 좋을 것 같아요.

그럼 이만, 다음 시리즈로 찾아뵙겠습니다 감사합니다 😉

 

 

[ 참고 ]

 MySQL로 배우는 데이터베이스 개론과 실습

 SQL 개발자 이론서 + 기출문제

 

댓글