[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의 접속정보를 사용하시면 됩니다.
Cheer Up! 음~? 흥미로운 포스팅이군요.
강좌에 정성이 듬뿍 담겼군요 DB는 사실 프로그래밍과 거리가 먼지라 비개발자분들도 쉽게접할 수 있는데 이강좌를 계기로 많이들 관심을 갖게되길 기대합니다 ㅎㅎ 근데 제가 어리게 나와있군요.. 감사합니다 ㅋㅋㅋ (리스팀 꾸욱)
네 강좌란 것을 첨 시도하는데 쉬운 내용임에도 불구하고 너무 어렵네요 어찌해야 쉽게 전달할수 있을까함에도 넘나 어려운것... 말씀대로 많이들 접해봤으면 합니다. ㅋㅋㅋ
그리고 베어님의 앞자리를 한번 바꿔봤습니다 ㅋㅋㅋ
Good morning~~!
풀보팅 꾸욱
^^
좋은 강좌 감사합니다 ㅎㅎ
통계를 직접 뽑아봐야지.. 생각만 하고 있었는데.. ㅋ
즐거운 하루 되세요~ : )
네 강좌만으로는 한계가 있을듯 해서 템플릿 형태로도 문장을 여러개 제공할수도 있습니다. 관심과 응원에 감사드립니다~^^
저도 개발자 출신이긴 한데, 지금은 중간쯤에 발을 걸쳐놓은 상태라 개발을 직접 하고 있진 않거든요. ㅎㅎ
템플릿 형태도 좋은 방법인 것 같아요.
그러면 더 많은 분들이 쉽게 시도해 보실 수 있을 것 같습니다. : )
화이팅!!!
오늘은 밀린 것 까지 해서 실습 해볼 계획입니다! ㅎㅎ
개인정보는 암호화한다는 정도만 들어봤었는데, DB상에 개인정보가 그대로 저장되는 일은 없어야 하는 것이군요!!
포스팅 감사드립니다!!
오우 실습 해주신다니 감사합니다~!
오늘도 @nhj12311 님의 강좌에 감동먹고 갑니다!!
감사합니다.~^^
스팀이 빠르면 이것저것 확인도 금방할텐데 요샌 계속 느리네요 ㅎㅎㅎㅎ
일부만 이해하고 갑니다ㅠㅠ 어렵네요 ㅎㅎ
깨알 찬조출연에 넣어주셔서 감사합니다 ㅋㅋㅋ 79 말고도 생년월일에서 숫자 하나 더 맞추셨네요 ㅋㅋㅋ nhj12311님이 저랑 딱 한 살차이 셨군요. 왠지 스팀잇에서 동년배 개발자를 만난듯해 더 반갑습니다 ^^
강좌를 보면 볼수록 비개발자를 대상으로 하다보니 간단한 설명에도 어쩔수 없이 엄청난 설명을 하는 고충이 있네요. SQL의 경우는 일반 프로그래밍 보다는 진입 장벽이 낮지만 어쨌든 진입장벽이 전혀 없지도 않으니까요 ㅎㅎ
arcange 님이 다이어그램은 좀 불친절하게 만드셨지만 네이밍은 진짜 잘하신거 같습니다. 어지간한건 추측으로 거짐 잘 맞더라구요.
그리고 사실 nhj12311님은 별로 필요 없으시겠지만 제가 두 달전에 이런글을 작성한적이 있습니다. 재미로 한 번 보시면 좋을거 같습니다 :)
헤헤 두달전이면 제가 아마 저혼자만의 세계에 갇혀지냈던 시기 같습니다 ㅋㅋ
그리고 제나이와 베어님은 아직 미공개라 적당히 했습니다 ^^ 머 비밀꺼리도 아니니깐요 전 아마 세계님보다 네살 어릴겁니다 ^^
베어님이 저보다도 어리시다고 하는데 궁금하네요 ㅋㅋ 몇살이신지. 25 년경력이라 하셨는데 서로 공개 안한 상태에서 저보다도 어리시다고 하셔서 매우 당황해하며 궁금해하고 있습니다 ㅋㅋ
제가 일부러 84로해서 운을 띄웠는데 적게 해줘서 좋다고 하시니 그보단 많은건 확실한거 같구요
과연 베어님은 몇살이실지? ㅎㅎ 그리고 공유해주신 자료도 잘보겠습니다!
nhj12311님 젊으시군요 ㅎㅎ 베어님 15-18년 사이의 경력이신걸로 알고 있는데 25년 이라고 하셨나요? 제가 모르는 뭔가가 있나보네요 ㅎㅎ 베어님이 거짓말쟁이가 아니면 확실히 저보다는 어리십니다. 25년 경력이면 가장 늦게 시작한게 13살이 되야 하는데 아닐 가능성이 클거 같습니다. 저는 베어님 경력으로 따져볼때 80-81년으로 보고 있는데, 병특으로 군대를 마치셨으면 nhj12311님과 비슷하거나 한두살 정도 어리실거 같습니다. 문득 궁금해지네요 ㅎㅎ
https://steemit.com/kr/@asbear/79txi2
베어님의 진면목은 이게 다가 아닙니다. ㅎㅎ 지금은 놀이 하시는거 같아요.
드디어^^ 3편까지 왔습니닷!! ㅎㅎ
저는 top 10은 안 보입니다.
아래 데이타 추출은 @nhj12311님이 써 주신거 복사해서 ^^ 나왔습니다.감사합니다
밑에 에러나셨어요 ㅋㅋ select top 10 * from comments
해보세요
꺅!! 감사합니다. 나왔습니다~ :) 👍