[SQL] 비개발자도 스티밋 통계를 뽑을 때까지 - 3편 - 본인 혹은 다른이의 포스팅 리스트 뽑아보기

실력이 일천한 제가 아는 내에서 SQL 강좌를 한편씩 올리려고 합니다. 비 IT인들도 따라할수 있는 수준으로 진행하려고 노력할 예정이며 최종 목표는 따라하시는 분이 steemsql을 통해 여러가지 통계를 뽑는 수준이 되는 것입니다.

얼마전 회사내 기획부서에서 SQL로 직접 통계를 만들어 보고서를 쓰는 모습을 보았습니다. 더이상 SQL은 IT 전문가가 다루는 언어가 아닙니다. 필요할 때 적절한 정보로 비지니스 의사결정을 도와줄 좋은 도구가 될 것입니다.

지난 회차를 안보신 분은 지난 회차를 먼저 봐주시길 바랍니다.

2편 - 백문이불여일견 일단 깔고 봅시다.-접속 프로그램 설치와 실행 편!

[Intro] 여러분의 내공을 쌓게 해주는 DB에 관한 상식 편 - 암호화는 필수
더 이상 비 IT인들에게도 개인정보보호의 기술적 보호조치에 관련된 내용은 전문적인 내용이 아닙니다. 이제는 너무나 당연한 내용이 되어버렸지요. 제가 빗썸의 정보유출에 대해 분노하는 이유는 너무나 당연한 기술적 보호조치를 무시한 위법한 행태때문입니다.

개인정보는 개인을 알아볼수 있는 정보를 말하는데 주민번호, 주소, 전화번호, 계좌번호, 카드번호가 대표적입니다. 개인정보를 다루는 회사는 DB에 고객정보를 저장할 때 암호화를 해야하죠. 이는 선택이 아닌 필수입니다. 어떤 회사에서도 여러분의 개인정보를 평문형태로 저장하는 것은 불법이며 PC에 평문 상태의 파일로 있었다는 것은 말도 안되는 일이지요.

바로 이 그림 우측처럼 DB에 저장되어있다고 생각하시면 됩니다.

이 암호화된 문자열 'abslknf/dknv=='을 회사 내에 보유한 암호키와 함께 복호화 알고리즘을 통해 다시 평문으로 변경해서 필요 시에만 사용하는게 기본입니다. 스티밋 내에 보안 관련 일을 하시는 분들이 몇분 되시는 걸로 알고 있는데 이런 내용을 제가 언급하게 되니 참... 민망하군요.

용어 활용편 ) "저거 개인정보보호법이나 정보통신망법 위반 일텐데..."

네 이 두가지가 개인정보 보호를 위한 법령입니다. 해킹 관련 뉴스를 보거나 할때 살짝 한마디 해주며 인상을 살짝 찡그려주면 베스트입니다. 👍 물론 보안업계에 계신분 앞에서 함부로 말하면 영혼까지 털릴수 있다는... 사실을 간과해서는 안될 것입니다. ㅋㅋㅋ

제가 왜 용어 활용편 같은 시덥잖은 말을 할까요? 세상을 살다보면 "모른다"라고 할수 없는 경우가 많습니다. 또는 아는척을 해야 하는 경우도 있습니다. 이에 대해 길게 말하려면 잡설이 너무 길어지니 여기까지 하겠습니다. ^^ (이것만으로도 또 포스팅꺼리네요.)

오늘은 본인의 포스팅 리스트를 뽑는 실습을 하게 될겁니다. 많은 분들이 관심을 가지고 있으면서도 가장 추출하기 쉬운 데이터죠.

1. 지난 시간의 SQL 쿼리문에 대한 설명

지난 시간에 소개해드렸던 짤막한 문장을 통해 sql의 조회 문장을 배워봅시다

SELECT * FROM ACCOUNTS WHERE NAME = 'nhj12311'

SELECT        -- 1\.  
  *           -- 2\. ? *    .
FROM ACCOUNTS -- 3\. ACCOUNTS 
WHERE NAME = [ ] -- 4\.  ? NAME []   ~

어렵다구요? 밥 아저씨가 되긴 싫습니다.ㅠㅠ

조금 더 쉽게 가봅시다. 아마 우리가 이해하기엔 엑셀만한 것도 없지요. 제가 DB의 모습은 엑셀과 거의 동일하다고 말씀 드렸습니다. 엑스트라로 지난번 시간에 제 글을 추천해주신 분들을 좀 모셔봤습니다~ 😆😆😆

steemsql의 accounts 테이블을 엑셀로 표현하면 아래와 같은 모습입니다.

ACCOUNTS 테이블을 보면 위 엑셀처럼 생겼고 ↑↑↑

FROM 'ACCOUNTS'를 하게 되면 'ACCOUNTS' 시트에서 데이터를 가져오는 것과 같고.

'*'은 모든 항목을 가져오지만 'NAME, BALANCE'와 같이 보이는 항목들을 나열해서 가져올수도 있습니다.

'WHERE'는 가져올 조건을 이야기합니다. NAME = 'nhj12311'을 하면 NAME 항목 중 'nhj12311' 값과 같은 것을 추려내는 기능입니다.

이래도 안된다면 우린 반복학습이라는 기가막힌 방법을 알고 있습니다. 백문이불여일타..일타.일타.😅😅

2. 본인 혹은 다른이의 포스팅 리스트를 추출해보기

대망의 첫 실습으로 본인의 포스팅 리스트를 추출해보겠습니다. 다시 테이블 리스트를 확인해봅시다. 뭐가 뭔지 어떻게 아느냐구요? 하나씩 셀렉트해봅니다. 물론 http://www.steemsql.com/ 홈페이지에서 명세를 공개하긴 하나 없는것과 진배없는 친절함을 보여주긴 합니다만...

단지 테이블명과 항목명칭이 너무나 직관적이라 누구나 잠시 살펴보면 알수 있다는 것입니다.

음~ 단 하나 Tx는 트랜잭션의 줄임으로 앞에 붙는다는 말씀을 드립니다. 제가 보기엔 Comments가 아니면 있을 곳이 없습니다. 조회를 해봅니다

네 딱 봐도 author는 포스팅 저자일것 같고
category는 메인 태그입니다.
title은 제목
body는 본문이겠죠;;

조금 더 항목들을 살펴봅니다.

익숙한 단어가 보이죠. payout!
이녀석들이 보상금액이라는건 굳이 이야기 하지 않아도 알것 같습니다.
그럼 지금까지 배운 조회 문장으로 포스팅 리스트를 뽑아봅시다.

SELECT * FROM COMMENTS WHERE AUTHOR = 'nhj12311'

'*'로 항목들을 뽑으니 불필요한 항목들이 너무 많이 보입니다. 필요한 항목들만 걸러봅시다. '-'를 두개쓰면 SQL문장에서 주석을 달수 있습니다.

이런식으로 세로로 정렬하면서 써야 눈에 잘 들어오니 처음에 배울때 습관을 잘 들입시다. ✌

SELECT 
    TITLE                   -- 
    , PENDING_PAYOUT_VALUE  -- 
    , TOTAL_PAYOUT_VALUE    -- 
    , CURATOR_PAYOUT_VALUE  -- 
    , CREATED               -- 
FROM COMMENTS 
WHERE AUTHOR = 'nhj12311'   -- 
AND PARENT_AUTHOR = ''      -- PARENT_AUTHOR  .
AND TITLE <> ''             --    .'<>' :  .
ORDER BY CREATED ASC        --  ASC(), DESC() . 


WHERE 이후에 AND로 다중 조건을 넣을 수 있습니다. 모든 조건이 만족되는 결과만 나옵니다. 이렇게 읽을 수 있습니다.

"저자가 nhj12311이면서 parent_author값이 없으면서 title은 ''가 아닌 리스트를 추출해줘"


이 결과를 복사해서 엑셀에 붙여넣기 하시면? 수고 많으셨습니다. 첫번째로 리스트 추출에 성공하셨습니다. 가까운 우리 스티미언 이웃에게도 뽑아서 줄수 있는 '통계 뽑는 스티미언'이 되봅시다. ^^

어떤 질문이든 주시면 피드백 드릴수 있도록 하겠습니다~! 다음시간에는 집계 데이터를 추출하는 방법에 대해서 진행해볼까 합니다.

지난 회차 살펴보기


강좌 피드백

@neojew님께서 ssms 툴이 너무 무겁다고 하셔서 제가 보조로 사용중인 HeidiSQL를 추천해드립니다. [설치방법 안내] 해당 설치방법을 하시되 접속 정보만 steemsql의 접속정보를 사용하시면 됩니다.

H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
21 Comments