[Excel] 엑셀로 쿼리문 만들기

2021. 1. 15. 17:13SQL/Excel

들어가며
실습환경은 Microsoft SQL Server Management Studio 2019 / Microsoft Excel 2016 for Windows 에 최적화 되어 있습니다.

 

DB를 다루다보면 특정컬럼을 특정조건에 따라 UPDATE(업데이트) 하는 경우가 많습니다.

그 중, 특정 테이블의 컬럼 값을 조회하여 그 값에 따라 타겟 테이블의 컬럼 값을 UPDATE 하는 경우에는 일반적으로 JOIN 연산을 통해서 UPDATE를 하곤 합니다.

 

위 방법은 물론 좋은 방법이지만,

  • 데이터 수가 많아지거나,
  • WHERE 조건문으로 조회된 값을 명확하게 알고 싶거나,
  • 혹은 UPDATE 기록을 남기기 위해

한 줄씩 UPDATE 쿼리문을 작성하여 실행하기도 합니다.

 

이번 포스팅에서는 엑셀을 통해서 한 줄씩 쿼리문을 작성하는 방법에 대해서 알아보겠습니다.

먼저 아래 두 개의 테이블을 보면서 이야기해보겠습니다.

 

TABLE_A FRUIT_CODE(과일코드) FRUIT_KO_NAME(과일한글명)
1 0 사과
2 0 포도
3 0 사과
4 0 사과
5 0 포도
TABLE_B FRUIT_CODE(과일코드) FRUIT_KO_NAME(과일한글명)
1 f1 사과
2 f2 포도

TABLE A와 B는 모두 과일코드과일한글명으로 이루어져있습니다.

그러나 TABLE A의 과일코드는 전부 0으로 데이터가 입력되어 있네요.

 

테이블 A의 과일코드를 사과는 f1, 포도는 f2로 입력하기 위해서는 어떻게 해야 할까요?

  1. 테이블 A와 B를 JOIN한 다음
  2. 테이블 B의 과일코드로 테이블 A의 과일코드를 UPDATE

위와 같은 방식으로 접근하면 될 것입니다.

따라서 쿼리문은 아래와 같이 작성됩니다. 

 

-- 1번 방법
UPDATE TABLE_A 
   SET FRUIT_CODE = B.FRUIT_CODE -- B의 과일코드로 A 과일코드를 UPDATE
  FROM TABLE_B B
 WHERE TABLE_A.FRUIT_KO_NAME = B.FRUIT_KO_NAME; -- JOIN

 

그러나 아쉽게도, 위 쿼리문만 보아서는 사과라는 레코드(Record)가 f1이라는 코드값을 가졌다는 것을 알 수 없습니.

직관적으로 알 수 있도록 표현되는 쿼리는 아래와 같을 것입니다.

 

-- 2번 방법
UPDATE TABLE_A SET FRUIT_CODE = 'f1' WHERE FRUIT_KO_NAME = '사과';
UPDATE TABLE_A SET FRUIT_CODE = 'f2' WHERE FRUIT_KO_NAME = '포도';

 

2번 방법은 FRUIT_CODE가 어떤 조건에 의해서 값을 가지게 되었는지 명확하게 나타내고 있습니다.

 

만약 위 UPDATE문을 따로 저장하여 파일로 관리하고 있으면,

후에 어떤 과일 이름이 어떤 과일 코드로 업데이트 되었는지 찾기 기능(ctrl + F)을 활용하여 쉽게 알 수 있습니다.

 

하지만 코드 값이 많아질수록 2번 방법의 쿼리를 타이핑할 양 역시 늘어납니다.

따라서 엑셀을 통해서, 쉽게 쿼리문을 생성해보겠습니다. 


 

엑셀의 문법

 

엑셀의 문법만 알면, 누구나 쉽게 쿼리를 생성할 수 있습니다.

먼저 수식을 사용하면서 안에 텍스트를 적기 위한 문법은 아래와 같습니다.

=텍스트

텍스트 안에 엑셀의 셀주소값 을 불러오기 위해서는 아래와 같이 작성합니다.

=&{셀주소}&

만약, 작은 따옴표로 묶고 싶다면 아래와 같이 작성합니다.

=&{셀주소}&


위 세가지 문법을 이해하셨다면, 이제 쿼리를 생성하실 수 있습니다.

 

-- 2번 방법
UPDATE TABLE_A SET FRUIT_CODE = 'f1' WHERE FRUIT_KO_NAME = '사과';
UPDATE TABLE_A SET FRUIT_CODE = 'f2' WHERE FRUIT_KO_NAME = '포도';

 

위 쿼리를 엑셀로 작성해보겠습니다.

="UPDATE TABLE_A SET FRUIT_CODE = '"&C6&"' WHERE FRUIT_KO_NAME = '"&D6&"';"

 

 

이제 쿼리를 복사하여 SQL 실행창에서 실행하시면 됩니다.

Microsoft SQL Server Management Studio 2019 기준 다중 행 쿼리 실행 단축키는 ctrl + E 입니다.


실습에 사용한 예제 쿼리를 첨부합니다.

위에서부터 순서대로 실행하시면 됩니다.

CREATE TABLE TABLE_A (
  FRUIT_CODE VARCHAR(10) 
, FRUIT_KO_NAME VARCHAR(10)
);

CREATE TABLE TABLE_B (
  FRUIT_CODE VARCHAR(10) 
, FRUIT_KO_NAME VARCHAR(10)
);

--TRUNCATE TABLE TABLE_A;
--TRUNCATE TABLE TABLE_B;

INSERT INTO TABLE_A (FRUIT_CODE, FRUIT_KO_NAME)
VALUES (0, '사과');

INSERT INTO TABLE_A (FRUIT_CODE, FRUIT_KO_NAME)
VALUES (0, '포도');

INSERT INTO TABLE_A (FRUIT_CODE, FRUIT_KO_NAME)
VALUES (0, '사과');

INSERT INTO TABLE_A (FRUIT_CODE, FRUIT_KO_NAME)
VALUES (0, '사과');

INSERT INTO TABLE_A (FRUIT_CODE, FRUIT_KO_NAME)
VALUES (0, '포도');

INSERT INTO TABLE_B (FRUIT_CODE, FRUIT_KO_NAME)
VALUES ('f1', '사과');

INSERT INTO TABLE_B (FRUIT_CODE, FRUIT_KO_NAME)
VALUES ('f2', '포도');

-- 1번 방법
UPDATE TABLE_A 
   SET FRUIT_CODE = B.FRUIT_CODE
  FROM TABLE_B B
 WHERE TABLE_A.FRUIT_KO_NAME = B.FRUIT_KO_NAME;

-- UPDATE 초기화
-- UPDATE TABLE_A
--    SET FRUIT_CODE = '0';

-- 2번 방법
UPDATE TABLE_A SET FRUIT_CODE = 'f1' WHERE FRUIT_KO_NAME = '사과';
UPDATE TABLE_A SET FRUIT_CODE = 'f2' WHERE FRUIT_KO_NAME = '포도';