이전 장에서 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 개발자 이론서 + 기출문제
'Database > 엑셀로 배우는 SQL 실무 - 입문' 카테고리의 다른 글
[SQL] 엑셀로 배우는 SQL - Table 만들기 (CREATE문, 데이터 타입) (0) | 2023.01.09 |
---|---|
[SQL] 엑셀로 배우는 SQL - 정렬 (ORDER BY ASC, DESC) (0) | 2023.01.08 |
[SQL] 엑셀로 배우는 SQL - 중복제거 (DISTINCT) (0) | 2023.01.07 |
[SQL] 엑셀로 배우는 SQL - NULL이란, IS NULL, IS NOT NULL (0) | 2023.01.06 |
[SQL] 엑셀로 배우는 SQL - 집계함수 (MIN, MAX, AVG, SUM, COUNT) (0) | 2023.01.05 |
댓글