김유환 /@@1ai5 IT 기술을 활용해 사람들이 가지고 있는 지식, 경험, 이야기를 책으로 출판하도록 도와주는 북스페이스 서비스를 운영하고 있습니다. ko Thu, 03 Apr 2025 21:43:37 GMT Kakao Brunch IT 기술을 활용해 사람들이 가지고 있는 지식, 경험, 이야기를 책으로 출판하도록 도와주는 북스페이스 서비스를 운영하고 있습니다. //img1.daumcdn.net/thumb/C100x100/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Fzt1nEvuKAwgl1A24MIgT6UvYr4M.png /@@1ai5 100 100 20. JOIN 이해하기 - 데이터베이스에서 JOIN은 왜 필요하고 어떻게 사용하는 걸까? /@@1ai5/27 배경 지난 글&nbsp;외래키 이해하기&nbsp;에서는 크게 묶여져있던 하나의 테이블을 나누는 과정을 보여드렸습니다. 하나의 테이블이 2개로 나누어지는 과정에서 서로 다시 연결할 수 있도록 연결 다리를 놓아둔 것이 외래 키(Foriegn Key)라고 설명했습니다. 우리는 중복된 데이터를 줄여 효율적인 구조를 만들기위해 테이블을 나눠야하는 이유도 이해했고 그 가교 역할을 외래<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Fd5il9Ts8pn3uQ69GqAJSmI4sQao.png" width="500" /> Fri, 18 Oct 2019 07:13:04 GMT 김유환 /@@1ai5/27 19. 외래키 이해하기 - 데이터베이스에서 외래키 (Foreign Key)는 왜 필요할까? /@@1ai5/26 배경 지난&nbsp;기본키 이해하기&nbsp;글에서는 하나의 테이블에 중복된 데이터가 삽입되는 것을 방지하기 위한 기본키 제한조건에 대해서 배웠습니다. 기본키를 활용하면 하나의 테이블내에서 고유한 행을 선택할 수 있다는 것을 기억하실 겁니다. 예를 들어, '주민등록번호'는 사용자 한명에 하나의 고유한 값만 존재하기 때문에, 사용자 정보가 담겨있는&nbsp;사용자 테이블의 기본키가 될<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FVkTCS3Fa3UgvfhgkAX-7dfCN7xM.jpg" width="500" /> Thu, 17 Oct 2019 08:03:50 GMT 김유환 /@@1ai5/26 18. 유도된 열 (Derived Column) - SELECT 문을 이용해 테이블의 하나의 열 만들기 /@@1ai5/25 배경 지난 글 중간 결과 테이블에서는 SELECT를 통해 얻어진 테이블 결과물에 다시 한번 SELECT 를 적용하는 방법에 대해서 알아보았습니다. 오늘은 이와 매우 유사하지만, 테이블이 아닌 하나의 열을 SELECT 문을 통해 얻어내는 방법을 알아보도록 하겠습니다. 이렇게 얻어지는 열을 '유도된 열' 혹은 'Derived Column' 이라고 부릅시다. 사<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FggtAMw-VQu60_ciqkmydQO7KdvI.jpg" width="500" /> Wed, 16 Oct 2019 02:08:27 GMT 김유환 /@@1ai5/25 17. 중간 결과 테이블 - SELECT를 통해 선택한 테이블을 다시 한번 SELECT 하기 /@@1ai5/24 배경 지난 글&nbsp;GROUP BY&nbsp;에서 우리가 SELECT 문을 요청하면 DBMS 가 어떻게 데이터를 선택, 가공, 정렬해서 결과값을 보여주는지 살펴보았습니다. 이 과정을 다시 한번 떠올려보시면, 데이터베이스는 결국 테이블로 시작해서 테이블로 끝난다는 것을 알 수 있습니다. 다시 한번 복기해봅시다. 데이터는 데이터베이스안에 테이블 형태로 저장되어있습니다. S<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FeG27_e_R1fFTlUC-1oxIQciah_I.png" width="500" /> Wed, 16 Oct 2019 01:36:41 GMT 김유환 /@@1ai5/24 16. GROUP BY - SQL을 이용해서 테이블에 저장된 데이터를 그룹별로 묶는 방법 /@@1ai5/23 배경 우리는 지난&nbsp;함수 (Functions)&nbsp;글에서 SQL 에서 제공하는 함수를 이용해서 통계값을 구하는 방법에 대해서 알아보았습니다. 함수를 통해 통계값은 구할 수 있었지만, 한번 SQL 요청을 통해 오직 하나의 결과값만을 얻을 수 있었습니다. 다시 말해, COUNT 를 이용해 개수를 세든, AVG 를 통해 평균값을 구하든 결과 테이블에 표현되는 행의 개<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Fj_-8i1lu-YFvhUClBWua9SkHzIg.png" width="500" /> Tue, 15 Oct 2019 02:16:33 GMT 김유환 /@@1ai5/23 15. 함수 (Functions) - SQL에서 사용하는 함수 알아보기 /@@1ai5/22 배경 SELECT, WHERE 2개의 글을 통해서 SQL 을 이용해 원하는 데이터를 선택하는 방법까지 다뤄보았습니다. 이제 선택한 데이터들을 기반으로 의미있는 값을 뽑아내는 작업을 배워봅시다. 개수, 평균, 최대값, 최소값. 보통 이야기하는 데이터 분석의 결과입니다. SQL 은 다양한 함수를 지원함으로써, 추가적인 통계 도구를 사용하지 않고도 주요 데이터를<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FoYp3SYLSQB8m-FxFEDu7e0P3Mkw.png" width="500" /> Thu, 10 Oct 2019 03:06:18 GMT 김유환 /@@1ai5/22 14. WHERE - SQL 에 필터 조건을 거는 WHERE에 대해 알아보자 /@@1ai5/21 배경 지난 글에서는 SQL 기반 데이터 분석의 시작이자 끝이라고 할 수 있는 SELECT 문에 대해서 살펴보았습니다. SELECT 문을 중심으로 모든 데이터 분석이 이루어지다보니, INSERT, UPDATE, DELETE 문들 과는 다르게 SELECT 에는 많은 기능들을 지원하고 있습니다. 조금 복잡하게 느껴질지 모르겠지만, 실무에서 결국 정교하게 얻어지는<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Ffon4KMI3J7pM9tVbbKPY0YrLvxI.png" width="500" /> Thu, 10 Oct 2019 02:33:06 GMT 김유환 /@@1ai5/21 13. SELECT - SQL -&nbsp;SELECT 문법 차근차근 이해하기 /@@1ai5/20 배경 지난 글&nbsp;INSERT, UPDATE, DELETE&nbsp;에서 데이터 삽입, 수정, 삭제를 위한 SQL 문을 다뤘다면, 이번 글에서는 SQL 핵심이라고 할 수 있는 SELECT 문을 배워보도록 하겠습니다. 사실, 데이터 분석을 위해 SQL 을 배우려고 하는 대부분의 사람들은 INSERT, UPDATE, DELETE 문을 사용하는 경우는 많이&nbsp;없습니다. 대부<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FLGKONmad8Dfxxe_4_v_47ksfMSw.png" width="500" /> Wed, 09 Oct 2019 07:00:58 GMT 김유환 /@@1ai5/20 12. INSERT, UPDATE, DELETE - 데이터 삽입, 수정, 삭제를 위한 SQL 문법 이해하기 /@@1ai5/19 배경 과거&nbsp;테이블에 데이터 삽입&nbsp;글과&nbsp;데이터 수정 및 삭제하기&nbsp;글에서 우리는 TablePlus 가 제공하는 테이블 형태의 GUI 를 이용해서 데이터를 삽입, 수정, 삭제했습니다. 오늘은 동일한 작업을 SQL 문법인 INSERT, UPDATE, DELETE 를 이용해서 진행하고자 합니다. 일반적으로 10개 미만 정도의 데이터를 삽입, 수정, 삭제하는 과정은<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FA56TlfMjeTKiMr8t1F-S-aBW64M.png" width="500" /> Wed, 09 Oct 2019 06:17:23 GMT 김유환 /@@1ai5/19 11. SQL이란 무엇인가 - 데이터베이스는 어떻게 SQL을 읽고 해석하는지 알아보기 /@@1ai5/18 배경 이제 드디어 기다리던 SQL 을 다뤄볼 시간입니다. SQL은 데이터베이스가 이해할 수 있는 언어입니다. SQL을 본격적으로&nbsp;배우기 전에 지금까지 배웠던 데이터베이스 환경에 대해서 다시 한번 정리해보고, 컴퓨터가 어떻게 SQL 을 해석하는지 알아보도록 합시다. 지금까지 우리는 TablePlus를 통해서&nbsp;데이터베이스에 테이블 생성, 데이터 삽입, 데이터<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Fyn2_3yn2I9cQUcsY7sCYh8TMlBI.jpg" width="500" /> Wed, 09 Oct 2019 05:56:29 GMT 김유환 /@@1ai5/18 10. 기본키 이해하기 - 관계형 데이터베이스의 핵심 기본키(Primary Key) 이해하기 /@@1ai5/17 배경 테이블 만들기 글에서 TablePlus를 이용해서 users 테이블을 만들었던것을 기억하실겁니다. 이글에서 제가 나중에 설명한다고 했던 부분이 있습니다. 바로, 아래 그림처럼 TablePlus에서 테이블을 만들때 id라고 기본 설정되어있는 Primary 라는 필드입니다. 당시에는 설명을 쉽게하기 위해서 삭제하라고 말씀드렸지만, 이 부분은 데이터베이스를<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FXw3VVOMpnpsKpxJ84LrjOE8d5Bk.jpg" width="500" /> Fri, 04 Oct 2019 05:50:33 GMT 김유환 /@@1ai5/17 9. 테이블에서 데이터 선택하기 - TablePlus를 이용해서 데이터베이스에 저장되어있는 데이터 살펴보기 /@@1ai5/16 배경 테이블에 데이터 삽입하기 글과 데이터 수정 및 삭제하기 글을 통해서 우리는 데이터를 삽입, 수정, 삭제하는 방법에 대해서 알아보았습니다. 이제 데이터베이스 기반으로 데이터분석을 진행하는데 가장 많이 사용하는 데이터를 선택하는 방법에 대해서 살펴보도록 합니다. 여기서 데이터를 선택한다는 의미는 데이터베이스에 저장되어있는 방대한 데이터중에서 우리가 원하는<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FHJHIp0ZQI5U0j6OgXYNoMeI1jWc.jpg" width="500" /> Fri, 04 Oct 2019 05:14:49 GMT 김유환 /@@1ai5/16 8. 데이터 수정 및 삭제하기 - TablePlus를 이용해 데이터베이스에 있는 데이터 수정 및 삭제! /@@1ai5/15 배경 지난 테이블에 데이터 삽입하기&nbsp;글에서는 TablePlus를 이용해서 테이블에 데이터를 추가해보았습니다. 이번 글에서는 이렇게 추가된 데이터를 수정하거나 삭제하는 방법에 대해 다루도록 하겠습니다.&nbsp;오늘은 조금 간단하게 진행할 예정입니다 :) 데이터 수정의 필요성 데이터 수정은 말 그대로 이미 들어가 있는 데이터를 업데이트하는 작업입니다. 잘못 데이터를<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FFdI6tU9zMcoCLp90SJ1l8RRlU3w.png" width="500" /> Thu, 03 Oct 2019 11:31:03 GMT 김유환 /@@1ai5/15 7. 테이블에 데이터 삽입 - 데이터베이스 테이블에 CSV 데이터 임포트해보기 /@@1ai5/14 배경 지난 시간에는 TablePlus 를 이용해서 테이블을 만들어 보았습니다. 오늘은 지난 시간에 만든 테이블에 실제 데이터를 추가해보는 시간을 가지도록 하겠습니다. 스프레드시트 기반 업무의 문제&nbsp;글에서 데이터베이스는 여러 사람이 동시에 하나의 행을 수정하지 못하게 함으로써, 데이터의 무결성을 유지한다고 이야기했습니다. 다시 말해, DBMS 에 데이터 추가<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Fei2eT8ZPJ7d8l3qgE8b573CYFXI.png" width="500" /> Thu, 03 Oct 2019 11:15:30 GMT 김유환 /@@1ai5/14 6. 데이터베이스에 테이블 만들기 - 실전! TablePlus로 테이블 만들어보기 /@@1ai5/13 배경 지난&nbsp;데이터베이스와 테이블&nbsp;글에서는 기본적인 데이터베이스의 기초 지식을 쌓는 시간을 가졌습니다. 이번 글 부터는 직접 데이터베이스를 다뤄보는 시간을 가지도록 하겠습니다. TablePlus 는 GUI 형태 도구로써, 화면의 버튼을 클릭해서 DBMS 에 요청을 보낼 수 있게 해주는 도구입니다.&nbsp;TablePlus 상에서 DBMS로 테이블을 만드는 일도 이 <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2Fw-JCuGLvS_5sHYo8YFsxNOW4tKc.png" width="500" /> Wed, 02 Oct 2019 05:58:55 GMT 김유환 /@@1ai5/13 5. 데이터베이스와 테이블 - TablePlus 기반으로 알아보는 데이터베이스 기본 구성 요소 /@@1ai5/12 배경 지난 글 데이터베이스 접속하기에서는 TablePlus를 이용해 서버에 설치된 MySQL 데이터베이스에 접속해보았습니다. 오늘 글에서는&nbsp;TablePlus 화면을 살펴보면서, 데이터베이스의 핵심 기본 구성 요소인 데이터베이스와 테이블에 대해 살펴보고자 합니다. TablePlus를 켜고, 데이터베이스가 설치되어있는 원격 서버에&nbsp;접속해서 아래 화면에 접속하세<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FaPpfuCnsQntF0fhmyoKvOiAPXGs.png" width="500" /> Fri, 06 Sep 2019 07:52:20 GMT 김유환 /@@1ai5/12 4. 데이터베이스 접속하기 - TablePlus를 이용해서 데이터베이스에 접속하기 /@@1ai5/11 배경 직접 데이터베이스에 접속하는 실습을 진행하기에 앞서, 지난 데이터베이스 설치하기&nbsp;글에서 다루었던 이야기를 복습해보도록 합시다. 지난&nbsp;글에서는 MySQL 데이터베이스를 설치해보고, MySQL 이 기본으로 제공하는 MySQL 모니터 프로그램을 이용해 DBMS 에 접속해보았습니다. MySQL 모니터 프로그램은 유용한 프로그램이지만 CLI (Command L<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2F_Ys4mHUFrYSET0fpivhmbzOgZIQ.png" width="500" /> Fri, 06 Sep 2019 07:52:09 GMT 김유환 /@@1ai5/11 3. 데이터베이스 설치하기 - 데이터베이스가 설치가 일반 프로그램과 동일하다는 것을 보여줍니다 /@@1ai5/10 이 글은 SQL 입문자들이 데이터베이스가 신비한 물건이 아니라&nbsp;평소 우리가 컴퓨터에 설치하는 다른 프로그램들과 동일하다는 것을&nbsp;느끼게 하는것을 목표로 합니다. 이를 위해서, 반드시 직접 데이터베이스를 설치해볼 필요가 없으므로 설치 과정을 매우 간략화 시켰습니다. 배경 &quot;데이터베이스 이해하기&quot;&nbsp;글에서 다루었던 데이터베이스 구조에 대해서 다시 한번 복습하고 <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FI30RvhAh9WwyfwXAS7bOthv05K8.jpg" width="500" /> Fri, 06 Sep 2019 07:51:56 GMT 김유환 /@@1ai5/10 2. 데이터베이스 이해하기 - 왜 제대로된 데이터분석은 데이터베이스를 기반으로 해야하는가? (2/2) /@@1ai5/9 배경 데이터 베이스에 대해서 알아보기 전에,&nbsp;스프레드시트 기반 업무의 문제점을 다시 한번 정리하고 넘어갑시다. 여러 명이 다루는 데이터, 정확하고 깊은 분석이 필요한 데이터의 경우 스프레드시트로 관리하면 아래와 같은 문제점들을 야기하게 됩니다. 1. 동시 수정 문제&nbsp;- 여러명이 동시에 하나의 정보를 수정하는 경우 데이터 일관성이 깨짐 2. 오타 문제&nbsp;- <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2FIsl0dZVrOZ0wyhGOyxAbPCgZxsE.jpg" width="500" /> Fri, 06 Sep 2019 07:51:38 GMT 김유환 /@@1ai5/9 1. 스프레드시트 기반 업무의 문제점 - 왜 제대로된&nbsp;데이터분석은 데이터베이스를 기반으로 해야하는가? (1/2) /@@1ai5/8 배경 행과 열로 구성된 테이블 형태로 데이터를 관리하는 프로그램을 스프레드시트(Spreadsheet) 라고 부릅니다. 가장 대표적인 프로그램으로 마이크로소프트 엑셀과 구글 시트가 있습니다. 스프레드시트가 가지고 있는 간편하고 강력한 기능들로 인해 대부분 회사에서 스프레드시트를 이용하고 있습니다. 하지만, 여러명이 같이 다뤄야하는 데이터를 스프레드시트를 기반<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1ai5%2Fimage%2F-Ad_mxMnzU46XIHOgw2ngf69yN4.png" width="500" /> Fri, 06 Sep 2019 07:51:11 GMT 김유환 /@@1ai5/8