화요일, 12월 29, 2020

[유튜브 방송] (즐겁게 배우는 SQL #24) 서브 질의를 배우자 - Case

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 24편을 공개해드리겠다. 24편은 Case를 소개한다.

2020년 12월 29일자 [즐겁게 배우는 SQL #24] 서브 질의를 배우자 - Case 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터 질의 방법 소개
  • 01:49 단순 CASE
  • 05:31 검색 CASE

원본 학습자료는 SQLite CASE를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    CASE case_expression
         WHEN when_expression_1 THEN result_1
         WHEN when_expression_2 THEN result_2
         ...
         [ ELSE result_else ] 
    END
    
  • 단계 2: 단순 CASE
    1. SQL> SELECT customerid, firstname, lastname, CASE country WHEN 'USA' THEN 'Domestic' ELSE 'Foreign' END CustomerGroup FROM customers ORDER BY LastName, FirstName;
  • 단계 3: 검색 CASE
    1. SQL> SELECT trackid, name, CASE WHEN milliseconds < 60000 THEN 'short' WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium' ELSE 'long' END category FROM tracks;
EOB

월요일, 12월 28, 2020

[유튜브 방송] (즐겁게 배우는 SQL #23) 서브 질의를 배우자 - Exists

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 23편을 공개해드리겠다. 23편은 Exists를 소개한다.

2020년 12월 28일자 [즐겁게 배우는 SQL #23] 서브 질의를 배우자 - Exists 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터 질의 방법 소개
  • 01:15 EXISTS 예제
  • 05:26 IN 서브 질의 예제
  • 09:46 NOT EXISTS 예제

원본 학습자료는 SQLite EXISTS를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    EXISTS(subquery)
    
    NOT EXISTS(subquery)
    
  • 단계 2: EXISTS 예제
    1. SQL> SELECT CustomerId, FirstName, LastName, Company FROM Customers c WHERE EXISTS ( SELECT 1 FROM Invoices WHERE CustomerId = c.CustomerId ) ORDER BY FirstName, LastName;
  • 단계 3: IN 서브 질의 예제
    1. SQL> SELECT CustomerId, FirstName, LastName, Company FROM Customers c WHERE CustomerId IN ( SELECT CustomerId FROM Invoices ) ORDER BY FirstName, LastName;
  • 단계 4: NOT EXISTS 예제
    1. SQL> SELECT * FROM Artists a WHERE NOT EXISTS( SELECT 1 FROM Albums WHERE ArtistId = a.ArtistId ) ORDER BY Name;
EOB

[개발자 이야기] (12월 27일) 꼭 설치해야 할 윈도우 개발 지원 도구

2020년 12월 27일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

2020년 12월 27일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 오늘 방송 주요 내용 소개
  • 10:25 2021년에 필요한 파비콘 숫자는?
  • 13:02 git의 대체품을 찾고 있습니까? Fossil!
  • 16:31 크롬에서 인라인 자바스크립트 redirection 막기
  • 17:36 백엔드 개발자를 꿈꾸는 학생개발자에게
  • 22:10 꼭 설치해야 할 윈도우 개발 지원 도구
  • 26:31 PDF 텍스트 추출은 왜 이렇게 어려운가?
EOB

토요일, 12월 26, 2020

[B급 프로그래머] 12월 4주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: 자동화의 역설 via @WonSoRang)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
EOB

목요일, 12월 24, 2020

[유튜브 방송] (즐겁게 배우는 SQL #22) 서브 질의를 배우자 - 서브 질의

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 22편을 공개해드리겠다. 22편은 서브 질의를 소개한다.

2020년 12월 24일자 [즐겁게 배우는 SQL #22] 서브 질의를 배우자 - 서브 질의 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터 질의 방법 소개
  • 01:45 WHERE 절 예제
  • 07:46 FROM 절 예제
  • 11:00 상호 연관 서브 질의 예제
  • 14:25 SELECT에서 상호 연관 서브 질의 예제

원본 학습자료는 SQLite Subquery를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT column_1
    FROM table_1
    WHERE column_1 = (
       SELECT column_1 
       FROM table_2
    );
    
  • 단계 2: WHERE 절 예제
    1. SQL> SELECT trackid, name, albumid FROM tracks WHERE albumid = ( SELECT albumid FROM albums WHERE title = 'Let There Be Rock' );
    2. SQL> SELECT customerid, firstname, lastname FROM customers WHERE supportrepid IN ( SELECT employeeid FROM employees WHERE country = 'Canada' );
  • 단계 3: FROM 절 예제
    1. (잘못된 예제) SQL> SELECT AVG(SUM(bytes)) FROM tracks GROUP BY albumid;
    2. SQL> SELECT AVG(album.size) FROM ( SELECT SUM(bytes) SIZE FROM tracks GROUP BY albumid ) AS album;
  • 단계 4: 상호 연관 서브 질의 예제
    1. SQL> SELECT albumid, title FROM albums WHERE 10000000 > ( SELECT sum(bytes) FROM tracks WHERE tracks.AlbumId = albums.AlbumId ) ORDER BY title;
  • 단계 5: SELECT에서 상호 연관 서브 질의 예제
    1. SQL> SELECT albumid, title, ( SELECT count(trackid) FROM tracks WHERE tracks.AlbumId = albums.AlbumId ) tracks_count FROM albums ORDER BY tracks_count DESC;
EOB

수요일, 12월 23, 2020

[유튜브 방송] (즐겁게 배우는 SQL #21) 집합 연산자를 배우자 - MySQL에서 Intersect와 Except 흉내내기

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 21편을 공개해드리겠다. 21편은 MySQL에서 Except와 Intersect를 흉내내는 방법을 소개한다.

2020년 12월 23일자 [즐겁게 배우는 SQL #21] 집합 연산자를 배우자 - MySQL에서 Intersect와 Except 흉내내기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 문제 정의
  • 02:09 INTERSECT를 INNER JOIN으로 푸는 예제
  • 05:49 EXCEPT를 LEFT JOIN으로 푸는 예제

원본 학습자료는 SQL에서 집합 연산자(SET OPERATOR) 활용하기를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 문제 정의
    1. MySQL에는 UNION만 존재하고 INTERSECT와 EXCEPT가 없는데 어떻게 할까?
    2. INNERT JOIN과 LEFT JOIN으로 해결해보자.
  • 단계 2: INTERSECT를 INNER JOIN으로 푸는 예제
    1. SQL> SELECT DISTINCT c.CustomerId FROM customers c INNER JOIN invoices i ON c.CustomerId = i.CustomerId ORDER BY c.CustomerId;
  • 단계 3: EXCEPT를 LEFT JOIN으로 푸는 예제
    1. SQL> SELECT DISTINCT a.ArtistId FROM artists a LEFT JOIN albums b ON a.ArtistId=b.ArtistId WHERE b.ArtistId IS NULL;
EOB

화요일, 12월 22, 2020

[유튜브 방송] (즐겁게 배우는 SQL #20) 집합 연산자를 배우자 - Except와 Intersect

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 20편을 공개해드리겠다. 20편은 Except와 Intersect를 소개한다.

2020년 12월 22일자 [즐겁게 배우는 SQL #20] 집합 연산자를 배우자 - Except와 Intersect 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 집합 연산자를 배우자 - Except 소개
  • 01:07 EXCEPT 예제
  • 03:18집합 연산자를 배우자 - INTERSECT 소개
  • 03:35 INTERSECT 예제

원본 학습자료는 SQLite ExceptSQLite Intersect를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: EXCEPT 데이터 질의 방법 소개
    SELECT select_list1
    FROM table1
    EXCEPT
    SELECT select_list2
    FROM table2
    
  • 단계 2: EXCEPT 예제
    1. SQL> CREATE TABLE t1( v1 INT );
    2. SQL> INSERT INTO t1(v1) VALUES(1),(2),(3);
    3. SQL> CREATE TABLE t2( v2 INT );
    4. SQL> INSERT INTO t2(v2) VALUES(2),(3),(4);
    5. SQL> SELECT v1 FROM t1 EXCEPT SELECT v2 FROM t2;
  • 단계 3: EXCEPT 예제
    1. SQL> SELECT ArtistId FROM artists EXCEPT SELECT ArtistId FROM albums;
  • 단계 4: INTERSECT 데이터 질의 방법 소개
    SELECT select_list1
    FROM table1
    INTERSECT
    SELECT select_list2
    FROM table2
    
  • 단계 5: INTERSECT 예제
    1. SQL> CREATE TABLE t1( v1 INT );
    2. SQL> INSERT INTO t1(v1) VALUES(1),(2),(3);
    3. SQL> CREATE TABLE t2( v2 INT );
    4. SQL> INSERT INTO t2(v2) VALUES(2),(3),(4);
    5. SQL> SELECT v1 FROM t1 INTERSECT SELECT v2 FROM t2;
  • 단계 6: INTERSECT 예제
    1. SQL> SELECT CustomerId FROM customers INTERSECT SELECT CustomerId FROM invoices ORDER BY CustomerId;
EOB

월요일, 12월 21, 2020

[유튜브 방송] (즐겁게 배우는 SQL #19) 집합 연산자를 배우자 - Union

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 19편을 공개해드리겠다. 19편은 Union을 소개한다.

2020년 12월 21일자 [즐겁게 배우는 SQL #19] 집합 연산자를 배우자 - Union 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 집합 연산자를 배우자 - Union 소개
  • 03:37 UNION과 UNION ALL 비교 예제
  • 06:38 UNION 예제
  • 07:34 UNION 예제(ORDER BY 사용)

원본 학습자료는 SQLite Union을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    query_1
    UNION [ALL]
    query_2
    UNION [ALL]
    query_3
    ...;
    
  • 단계 2: UNION과 UNION ALL 비교 예제
    1. SQL> CREATE TABLE t1( v1 INT );
    2. SQL> INSERT INTO t1(v1) VALUES(1),(2),(3);
    3. SQL> CREATE TABLE t2( v2 INT );
    4. SQL> INSERT INTO t2(v2) VALUES(2),(3),(4);
    5. SQL> SELECT v1 FROM t1 UNION SELECT v2 FROM t2;
    6. SQL> SELECT v1 FROM t1 UNION ALL SELECT v2 FROM t2;
  • 단계 3: UNION 예제
    1. SQL> SELECT FirstName, LastName, 'Employee' AS Type FROM employees UNION SELECT FirstName, LastName, 'Customer' FROM customers;
  • 단계 4: UNION 예제(ORDER BY 사용)
    1. SQL> SELECT FirstName, LastName, 'Employee' AS Type FROM employees UNION SELECT FirstName, LastName, 'Customer' FROM customers ORDER BY FirstName, LastName;
EOB

[개발자 이야기] (12월 20일) 젊은 시절의 나에게 해주는 조언: 사이드 프로젝트에서 너무 큰 것을 기대하지 마라.

2020년 12월 20일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

2020년 12월 20일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 오늘 방송 주요 내용 소개
  • 05:27 AWS cloudshell 발표
  • 08:06 Google 스토리지 작동 방식에 곧 적용될 변경사항
  • 10:52 최소한의 배시 셀 템플릿
  • 12:07 젊은 시절의 나에게 해주는 조언: 사이드 프로젝트에서 너무 큰 것을 기대하지 마라.
  • 16:15 Flow – 자바스크립트를 위한 정적 타입 검사기
  • 17:54 어느 머신러닝 개발자 채용공고와 선수 데려오기
  • 22:30 maven daemon – 빌드를 빠르게!
  • 24:45 .vimrc에 넣을 다섯 줄
  • 25:23 VSCode 발표 모드
EOB

토요일, 12월 19, 2020

[B급 프로그래머] 12월 3주 소식(빅데이터/인공지능, 읽을거리 부문)

  1. 빅데이터/인공지능
  2. 읽을거리
보너스: Aicha Evans and Jesse Levinson take the first Zoox ride in San Francisco
EOB

금요일, 12월 18, 2020

[유튜브 방송] (즐겁게 배우는 SQL #18) 데이터를 그룹으로 묶어보자 - HAVING

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 18편을 공개해드리겠다. 18편은 HAVING을 소개한다.

2020년 12월 18일자 [즐겁게 배우는 SQL #18] 데이터를 그룹으로 묶어보자 - HAVING 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 그룹으로 묶어보자 - HAVING 소개
  • 02:00 단순 GROUP BY 예제(COUNT 함수)
  • 02:44 HAVING 예제(단순 값 일치)
  • 03:56 HAVING 예제(COUNT 함수와 BETWEEN)
  • 06:50 HAVING 예제(INNER JOIN과 함께)

원본 학습자료는 SQLite Having을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT
        column_1, 
        column_2,
        aggregate_function (column_3)
    FROM
        table
    GROUP BY
        column_1,
        column_2
    HAVING
        search_condition;
    
  • 단계 2: 단순 GROUP BY 예제(COUNT 함수)
    1. SQL> SELECT albumid, COUNT(trackid) FROM tracks GROUP BY albumid;
  • 단계 3: HAVING 예제(단순 값 일치)
    1. SQL> SELECT albumid, COUNT(trackid) FROM tracks GROUP BY albumid HAVING albumid = 1;
  • 단계 4: HAVING 예제(COUNT 함수와 BETWEEN)
    1. SQL> SELECT albumid, COUNT(trackid) FROM tracks GROUP BY albumid HAVING COUNT(trackid) BETWEEN 18 AND 20 ORDER BY albumid;
  • 단계 5: HAVING 예제(INNER JOIN과 함께)
    1. SQL> SELECT tracks.AlbumId, title, SUM(Milliseconds) AS length FROM tracks INNER JOIN albums ON albums.AlbumId = tracks.AlbumId GROUP BY tracks.AlbumId HAVING length > 60000000;
EOB

목요일, 12월 17, 2020

[유튜브 방송] (즐겁게 배우는 SQL #17) 데이터를 그룹으로 묶어보자 - Group By

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 17편을 공개해드리겠다. 17편은 Group By을 소개한다.

2020년 12월 17일자 [즐겁게 배우는 SQL #17] 데이터를 그룹으로 묶어보자 - Group By 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 그룹으로 묶어보자 - Group By 소개
  • 02:51 GROUP BY 예제(COUNT 함수)
  • 07:39 GROUP BY 예제(GROUP BY과 INNER JOIN)
  • 10:32 GROUP BY 예제(Having)
  • 12:29 GROUP BY 예제(SUM 함수)
  • 14:57 GROUP BY 예제(MAX, MIN, AVG 함수)
  • 16:31 GROUP BY 예제(여러 컬럼)

원본 학습자료는 SQLite Group By을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT 
        column_1,
        aggregate_function(column_2) 
    FROM 
        table
    GROUP BY 
        column_1,
        column_2;
    
  • 단계 2: GROUP BY 예제(COUNT 함수)
    1. SQL> SELECT albumid, COUNT(trackid) FROM tracks GROUP BY albumid;
    2. SQL> SELECT albumid, COUNT(trackid) FROM tracks GROUP BY albumid ORDER BY COUNT(trackid) DESC;
  • 단계 3: GROUP BY 예제(GROUP BY과 INNER JOIN)
    1. SQL> SELECT tracks.albumid, title, COUNT(trackid) FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid GROUP BY tracks.albumid;
  • 단계 4: GROUP BY 예제(Having)
    1. SQL> SELECT tracks.albumid, title, COUNT(trackid) FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid GROUP BY tracks.albumid HAVING COUNT(trackid) > 15;
  • 단계 5: GROUP BY 예제(SUM 함수)
    1. SQL> SELECT albumid, SUM(milliseconds) length, SUM(bytes) size FROM tracks GROUP BY albumid;
  • 단계 6: GROUP BY 예제(MAX, MIN, AVG 함수)
    1. SQL> SELECT tracks.albumid, title, min(milliseconds), max(milliseconds), round(avg(milliseconds),2) FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid GROUP BY tracks.albumid;
  • 단계 7: GROUP BY 예제(여러 컬럼)
    1. SQL> SELECT MediaTypeId, GenreId, COUNT(TrackId) FROM tracks GROUP BY MediaTypeId, GenreId;
EOB

수요일, 12월 16, 2020

[유튜브 방송] (즐겁게 배우는 SQL #16) 테이블을 조인하자 - FULL OUTER JOIN

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 16편을 공개해드리겠다. 16편은 FULL OUTER JOIN을 소개한다.

2020년 12월 16일자 [즐겁게 배우는 SQL #16] 테이블을 조인하자 - FULL OUTER JOIN 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블을 조인하자 - FULL OUTER JOIN 소개
  • 01:42 FULL OUTER JOIN (시도)해보기
  • 04:51 LEFT JOIN 2개로 흉내내기

원본 학습자료는 SQLite FULL OUTER JOIN Emulation을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: FULL OUTER JOIN (시도)해보기
    1. SQL> CREATE TABLE dogs ( type TEXT, color TEXT );
    2. SQL> INSERT INTO dogs(type, color) VALUES('Hunting','Black'), ('Guard','Brown');
    3. SQL> CREATE TABLE cats ( type TEXT, color TEXT );
    4. SQL> INSERT INTO cats(type,color) VALUES('Indoor','White'), ('Outdoor','Black');
    5. SQL> SELECT * FROM dogs FULL OUTER JOIN cats ON dogs.color = cats.color;
  • 단계 2: LEFT JOIN 2개로 흉내내기
    1. SQL> SELECT d.type, d.color, c.type, c.color FROM dogs d LEFT JOIN cats c USING(color) UNION ALL SELECT d.type, d.color, c.type, c.color FROM cats c LEFT JOIN dogs d USING(color) WHERE d.color IS NULL;
EOB

화요일, 12월 15, 2020

[유튜브 방송] (즐겁게 배우는 SQL #15) 테이블을 조인하자 - SELF JOIN

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 15편을 공개해드리겠다. 15편은 SELF JOIN을 소개한다.

2020년 12월 15일자 [즐겁게 배우는 SQL #15] 테이블을 조인하자 - SELF JOIN 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블을 조인하자 - SELF JOIN 소개
  • 02:00 INNER JOIN으로 SELF JOIN하기
  • 06:19 LEFT JOIN으로 SELF JOIN하기
  • 07:24 SELF JOIN에서 추가 조건 붙이기

원본 학습자료는 SQLite Self-Join을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: INNER JOIN으로 SELF JOIN하기
    1. SQL> SELECT m.firstname || ' ' || m.lastname AS 'Manager', e.firstname || ' ' || e.lastname AS 'Direct report' FROM employees e INNER JOIN employees m ON m.employeeid = e.reportsto ORDER BY manager;
  • 단계 2: LEFT JOIN으로 SELF JOIN하기
    1. SQL> SELECT m.firstname || ' ' || m.lastname AS 'Manager', e.firstname || ' ' || e.lastname AS 'Direct report' FROM employees e LEFT JOIN employees m ON m.employeeid = e.reportsto ORDER BY manager;
  • 단계 3: SELF JOIN에서 추가 조건 붙이기
    1. SQL> SELECT DISTINCT e1.city, e1.firstName || ' ' || e1.lastname AS fullname FROM employees e1 INNER JOIN employees e2 ON e2.city = e1.city ORDER BY e1.city;
EOB

월요일, 12월 14, 2020

[유튜브 방송] (즐겁게 배우는 SQL #14) 테이블을 조인하자 - CROSS JOIN

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 14편을 공개해드리겠다. 14편은 CROSS JOIN을 소개한다.

2020년 12월 14일자 [즐겁게 배우는 SQL #14] 테이블을 조인하자 - CROSS JOIN 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블을 조인하자 - CROSS JOIN 소개
  • 02:18 데이터 질의 방법 소개
  • 03:34 CROSS JOIN으로 카드 덱 완성하기

원본 학습자료는 SQLite Cross Join with a Practical Example을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT *
    FROM A JOIN B;
    
    SELECT *
    FROM A
    INNER JOIN B;
    
    SELECT *
    FROM A
    CROSS JOIN B;
    
    SELECT * 
    FROM A, B;
    
  • 단계 2: CROSS JOIN으로 카드 덱 완성하기
    1. SQL> CREATE TABLE ranks ( rank TEXT NOT NULL );
    2. SQL> CREATE TABLE suits ( suit TEXT NOT NULL );
    3. SQL> INSERT INTO ranks(rank) VALUES('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9'),('10'),('J'),('Q'),('K'),('A');
    4. SQL> INSERT INTO suits(suit) VALUES('Clubs'),('Diamonds'),('Hearts'),('Spades');
    5. SQL> SELECT rank, suit FROM ranks CROSS JOIN suits ORDER BY suit;
EOB

[개발자 이야기] (12월 13일) 코드 검토자와 사랑에 빠지는 방법

2020년 12월 13일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

2020년 12월 13일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 오늘 방송 주요 내용 소개
  • 07:08 RHEL 클론 '센트OS' 사라진다
  • 10:14 Qt 6.0 공개
  • 12:37 Amazon Aurora 바벨피시(for SQL Server)
  • 15:44 PHP가 죽었다고 말하지 마세요
  • 17:54 타입스크립트 깃허브 개발자 인기 급상승
  • 19:00 코드 검토자와 사랑에 빠지는 방법
  • 25:18 이진 구조체를 위한 파서를 손쉽게 만들자
  • 26:59 픽셀화된 민감한 정보는 복원될 수 있어요
  • 30:00 cloudconvert - 파일 변환도 SaaS 향으로…
EOB

토요일, 12월 12, 2020

[B급 프로그래머] 12월 2주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: Debugging Tactics... via @richcampbell)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: 100GB of data…sparse (as in a DB dump)? compressed? uncompressed? Time spent would be limited by disk speed & processing. Reading 100GB of data off a standard SSD (~500MB/s streaming reads) would take 3–4min. Processing with awk? Maybe 2–3× that. No supercomputer needed. via @gumnos
EOB

금요일, 12월 11, 2020

[유튜브 방송] (즐겁게 배우는 SQL #13) 테이블을 조인하자 - LEFT JOIN

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 13편을 공개해드리겠다. 13편은 LEFT JOIN을 소개한다.

2020년 12월 11일자 [즐겁게 배우는 SQL #13] 테이블을 조인하자 - LEFT JOIN 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블을 조인하자 - LEFT JOIN 소개
  • 01:01 데이터 질의 방법 소개
  • 02:44 LEFT JOIN에 ORDER BY 사용
  • 06:05 NULL 확인을 위한 WHERE 조건 사용

원본 학습자료는 SQLite Left Join을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT
    	a,
    	b
    FROM
    	A
    LEFT JOIN B ON A.f = B.f
    WHERE search_condition;
    
  • 단계 2: LEFT JOIN에 ORDER BY 사용
    1. SQL> SELECT artists.ArtistId, AlbumId FROM artists LEFT JOIN albums ON albums.ArtistId = artists.ArtistId ORDER BY AlbumId;
  • 단계 3: NULL 확인을 위한 WHERE 조건 사용
    1. SQL> SELECT artists.ArtistId, AlbumId FROM artists LEFT JOIN albums ON albums.ArtistId = artists.ArtistId WHERE AlbumId IS NULL;
EOB

목요일, 12월 10, 2020

[유튜브 방송] (즐겁게 배우는 SQL #12) 테이블을 조인하자 - INNER JOIN

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 12편을 공개해드리겠다. 12편은 INNER JOIN을 소개한다.

2020년 12월 10일자 [즐겁게 배우는 SQL #12] 테이블을 조인하자 - INNER JOIN 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블을 조인하자 - INNER JOIN 소개
  • 00:41 데이터 질의 방법 소개
  • 01:56 테이블 2개 INNER JOIN
  • 06:48 테이블 3개 INNER JOIN
  • 09:28 WHERE 조건 붙이기

원본 학습자료는 SQLite Inner Join을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT a1, a2, b1, b2
    FROM A
    INNER JOIN B on B.f = A.f;
    
  • 단계 2: 테이블 2개 INNER JOIN
    1. SQL> SELECT trackid, name, title FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid;
    2. SQL> SELECT trackid, name, tracks.albumid AS album_id_tracks, albums.albumid AS album_id_albums, title FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid;
  • 단계 3: 테이블 3개 INNER JOIN
    1. SQL> SELECT trackid, tracks.name AS track, albums.title AS album, artists.name AS artist FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid INNER JOIN artists ON artists.artistid = albums.artistid;
  • 단계 4: WHERE 조건 붙이기
    1. SQL> SELECT trackid, tracks.name AS Track, albums.title AS Album, artists.name AS Artist FROM tracks INNER JOIN albums ON albums.albumid = tracks.albumid INNER JOIN artists ON artists.artistid = albums.artistid WHERE artists.artistid = 10;
EOB

수요일, 12월 09, 2020

[유튜브 방송] (즐겁게 배우는 SQL #11) 테이블을 조인하자 - JOIN 설명

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 11편을 공개해드리겠다. 11편은 JOIN에 대한 기초를 설명한다.

2020년 12월 9일자 [즐겁게 배우는 SQL #11] 테이블을 조인하자 - JOIN 설명 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블을 조인하자 - JOIN 설명 소개
  • 01:30 SQL에서 join이 중요한 이유?
  • 03:49 예제 테이블 소개
  • 05:27 왜 다음과 같이 하지 않았을까?
  • 07:32 앨범 이름과 아티스트를 함께 출력하는 방법은?
  • 10:02 JOIN의 정체는? 곱집합(Cartesian Product)
  • 13:02 그런데 조건을 줄 수 있어요…
  • 14:08 집합처럼 생각하지 맙시다.

원본 학습자료는 SQLite Join을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

EOB

화요일, 12월 08, 2020

[유튜브 방송] (즐겁게 배우는 SQL #10) 데이터를 필터링하자 - IS NULL

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 10편을 공개해드리겠다. 10편은 WHERE에서 필터링 조건을 지정하는 방법 중에 IS NULL과 IS NOT NULL을 소개한다.

2020년 12월 8일자 [즐겁게 배우는 SQL #10] 데이터를 필터링하자 - IS NULL 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 필터링하자 - IS NULL 소개
  • 01:29 NULL = NULL ?
  • 02:55 IS NULL 적용
  • 03:41 IS NOT NULL 적용

원본 학습자료는 SQLite IS NULL을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    { column | expression } IS NULL;
    
  • 단계 2: 필수 예제
    1. 참고(X): SELECT Name, Composer FROM tracks WHERE Composer = NULL;
    2. SQL> SELECT Name, Composer FROM tracks WHERE Composer IS NULL ORDER BY Name;
    3. SQL> SELECT Name, Composer FROM tracks WHERE Composer IS NOT NULL ORDER BY Name;
EOB

월요일, 12월 07, 2020

[유튜브 방송] (즐겁게 배우는 SQL #9) 데이터를 필터링하자 - GLOB

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 9편을 공개해드리겠다. 9편은 WHERE에서 필터링 조건을 지정하는 방법 중에 GLOB를 소개한다.

2020년 12월 7일자 [즐겁게 배우는 SQL #9] 데이터를 필터링하자 - GLOB 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 필터링하자 - GLOB 소개
  • 04:00 * 예제
  • 05:08 ? 예제
  • 05:48: [] 예제
  • 06:40: ^ 예제

원본 학습자료는 SQLite GLOB을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 유닉스의 정규 표현식을 생각하자
    • *: 0 or more
    • ?: 1
    • []: 범위
    • ^: 제외
  • 단계 2: 필수 예제
    1. 참고: MySQL에는 GLOB 연산자가 없다. 앞서 배운 like 연산자로 처리해야 한다.
    2. SQL> SELECT trackid, name FROM tracks WHERE name GLOB 'Man*';
    3. SQL> SELECT trackid, name FROM tracks WHERE name GLOB '*Man';
    4. SQL> SELECT trackid, name FROM tracks WHERE name GLOB '?ere*';
    5. SQL> SELECT trackid, name FROM tracks WHERE name GLOB '*[1-9]*';
    6. SQL> SELECT trackid, name FROM tracks WHERE name GLOB '*[^1-9]*';
    7. SQL> SELECT trackid, name FROM tracks WHERE name GLOB '*[1-9]';
EOB

[개발자 이야기] (12월 5일) 스타트업, SI 개발자를 채용해도 될까?

2020년 12월 5일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

2020년 12월 5일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 금주 새로운 소식 개괄
  • 07:17 reveal.js – HTML 프리젠테이션 프레임워크
  • 10:44 애플 실리콘이 로제타 2에서 높은 성능을 내는 이유?
  • 13:10‘PHP 8’ 정식 출시
  • 15:52 스타트업, SI 개발자를 채용해도 될까?
  • 21:00 AWS에 EC2 Mac 인스턴스 등장
  • 22:51 문서 저장소로서 sqlite3
  • 25:31 구글 폰트에게 작별의 인사를 할 시점이…
  • 28:00 2020년 소프트웨어 기술자 일일 평균 임금은?
EOB

토요일, 12월 05, 2020

[B급 프로그래머] 12월 1주 소식(빅데이터/인공지능, 읽을거리 부문)

(오늘의 짤방: Blogging vs. Blog Setups @newsycombinator)
  1. 빅데이터/인공지능
  2. 읽을거리
보너스: @Binsworld_dev
EOB

금요일, 12월 04, 2020

[유튜브 방송] (즐겁게 배우는 SQL #8) 데이터를 필터링하자 - like

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 8편을 공개해드리겠다. 8편은 WHERE에서 필터링 조건을 지정하는 방법 중에 Like를 소개한다.

2020년 12월 4일자 [즐겁게 배우는 SQL #8] 데이터를 필터링하자 - like 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 필터링하자 - like 소개
  • 02:17 % 예
  • 04:38 _ 예
  • 05:46 ESCAPE로 % 일치하게 만들기

원본 학습자료는 SQLite Like를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT
    	column_list
    FROM
    	table_name
    WHERE
    	column_1 LIKE pattern;
    
  • 단계 2: %와 _를 적용한 단순한 예제
    1. SQL> SELECT trackid, name FROM tracks WHERE name LIKE 'Wild%'
    2. SQL> SELECT trackid, name FROM tracks WHERE name LIKE '%Wild'
    3. SQL> SELECT trackid, name FROM tracks WHERE name LIKE '%Wild%'
    4. SQL> SELECT trackid, name FROM tracks WHERE name LIKE '%Br_wn%';
  • 단계 3: %가 들어있는 문자열을 찾기 위한 ESCAPE 예제
    1. SQL> CREATE TABLE t(c TEXT);
    2. SQL> INSERT INTO t(c) VALUES('10% increase'), ('10 times decrease'), ('100% vs. last year'), ('20% increase next year');
    3. SQL> SELECT c FROM t WHERE c LIKE '%10%%';
    4. SQL> SELECT c FROM t WHERE c LIKE '%10\%%' ESCAPE '\';
EOB