데이터 초심자를 위한 SQL 생존 키트
₩86,900
초급 / MariaDB, MySQL, SQL, HeidiSQL
MariaDB와 HeidiSQL을 활용한 실습 중심의 커리큘럼을 통해 데이터를 수집, 전처리, 그리고 분석하는 과정에서 SQL의 핵심 개념과 실무 활용법을 익힐 수 있습니다.
초급
MariaDB, MySQL, SQL
안녕하세요 『소프트웨어알림장』입니다. 데이터베이스 및 미들웨어 애플리케이션 개발, 응용 분야의 경험을 쌓아왔으며 MySQL과 MariaDB를 바탕으로 SQL을 활용한 강좌들을 제작하고 있습니다. 유튜브 채널 "SQL뱅크" 를 운영하고 있습니다.
Hello, this is "SQL BANK". I have accumulated experience in developing database and middleware applications and in various application fields. I create tutorials utilizing SQL based on MySQL and MariaDB. I also run a YouTube channel called "SQL BANK".
데이터 초심자를 위한 SQL 생존 키트
₩86,900
초급 / MariaDB, MySQL, SQL, HeidiSQL
MariaDB와 HeidiSQL을 활용한 실습 중심의 커리큘럼을 통해 데이터를 수집, 전처리, 그리고 분석하는 과정에서 SQL의 핵심 개념과 실무 활용법을 익힐 수 있습니다.
초급
MariaDB, MySQL, SQL
VS Code를 활용한 Remote 개발환경 만들기
₩22,000
초급 / wsl, VSCode, code-server, Linux, termux
VS Code 및 확장팩을 활용해 원격 개발 환경을 만들고, 더불어 WSL과 웹 상에서 사용하는 VS Code인 code-server에 대해 학습합니다.
초급
wsl, VSCode, code-server
발표자를 위한 Freeplane
₩39,600
초급 / Freeplane, mindmap, 프레젠테이션
5.0
(2)
마인드맵을 잘 쓰고 있다면 활용 분야를 넓혀 보세요. 발표 자료, 주간 보고서, 연대기 타임라인, 애자일 스크럼 및 ToDo 리스트, 스토리 보드 등 다양한 분야에서 활용될 수 있습니다.
초급
Freeplane, mindmap, 프레젠테이션
필요할 때 찾아 쓰는 SQL 쿼리북, Part I
₩23,100
초급 / SQL, MariaDB, HeidiSQL
4.0
(6)
가끔 데이터 처리가 막혀 답답한 경우가 있습니다. 전문 프로그래머나 개발자도 아닌데 파이썬이나 Java 같은 생소한 분야를 배우기엔 시간도 모자라고 쉬워 보이지도 않죠. 자주 쓰는 거라면 엑셀과 SQL 기초 정도가 전부인 분들을 위해 준비했습니다. 필요할 때 찾아 쓰는 SQL 쿼리북, 첫 번째 파트입니다.
초급
SQL, MariaDB, HeidiSQL
MariaDB 클라이언트 개발, 내부함수 편
₩23,100
초급 / MariaDB
HeidiSQL 개발 도구를 이용해 MariaDB에서 제공되는 주요 108개 내부 함수들에 대한 사용법 및 활용 예제들을 살펴봅니다.
초급
MariaDB
데이터지도 ERD를 그려보자, MySQL 워크벤치
₩33,000
초급 / mysql-workbench, ERD
5.0
(5)
MySQL 워크벤치를 통해 ERD를 그려보고, 데이터베이스와 테이블로 전환하는 방법에 대해 알아봅니다.
초급
mysql-workbench, ERD
질문&답변
자료 준비가..
안녕하세요 ilovepc님.확인해 본 바로는 모든 영상에 pdf 강좌 파일이 각각 첨부되어 있으며 해당 pdf 파일은 내용 복사가 가능한 형태입니다.insert 문, SQL 등이 보이지 않는다는 말씀이 어떤 강좌에서 체크하신 부분인지 알려주시면 다시 확인해보도록 하겠습니다.
질문&답변
[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations
안녕하세요 류재안 님.강좌 생성 시 사용한 DB와 버전이 MariaDB 10.x이상이라 MySQL8.x과 다른 설정값을 가지고 있습니다.앞서 인프런 AI 인턴님의 답변과 같이 cte_max_recursion_depth 값을 조정하여 사용할 수 있습니다.SHOW VARIABLES LIKE 'cte_max_recursion_depth';기본값은 1000 이므로 교안과 같이 100000 으로 변경하여 사용하시면 됩니다. 참고로, 인스톨하는 버전에 따라서 제공되는 시스템변수들은 업그레이드 내용에 따라 충분히 변할 수 있습니다. 하지만 해당 경우는 MariaDB와 MySQL이 서로 다른 길을(제품군) 가고 있는데서 발생한 이종 DB 제품 간 시스템 변수명 차이입니다.이러한 부분은 두 DB가 뿌리가 같지만 완전히 다른 것도, 또 똑같은 것도 아니라 뭐라 정확한 설명을 드리기가 쉽지 않습니다. 같은 목적과 용도인데 제품이 달라 발생하는 문제가 아닐까 합니다.(향후 일부 강좌들에서는 MySQL8.x 기반 + 워크벤치를 개발환경으로써 고려 중입니다.)
질문&답변
urlcodemap 쿼리 파일 확인요청
말씀하신 해당 파일에 대한 정보를 링크로 남깁니다. 다운로드하거나 복사 및 붙여 넣기를 통해 수행하시면 테이블과 해당 데이터가 생성 및 입력됩니다. https://drive.google.com/file/d/1kkYR7c_xZWpHKQ0TCSJRKyajK0qCrK5j/view?usp=sharing감사합니다.
질문&답변
[공유][대사와 액션, 회차정보테이블]contents2 생성관련
안녕하세요 류재안 님우선 제가 강좌를 만든 DB가 MariaDB 10.x이상이라 MySQL8.x에서 곧바로 적용하면 가끔 말씀하신 류와 같은 오류들이 발생합니다.MySQL8.x에서 GROUP_CONCAT 함수에 사용된 문자열 컬럼값의 크기가 1024를 넘어가면 오류를 발생합니다.언급하신 바와 같이 크기 조정 후 작업이 정상처리됩니다.변경 전에 확인을 하면 1024로 잡혀 있음을 알 수 있습니다.show variables like '%group_concat_max_len%';해결방안 올려주신 점 감사드립니다.(그런데 인프런 AI인턴 사우가 제 답변보다 더 섬세하고 정확해 보입니다. 😀 참고하시면 보다 도움 되실 듯합니다.)
질문&답변
[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련
충분히 의미 있는 데이터 가공이라고 생각합니다.현재 데이터들 조건이 일부 맞지 않지만 아래의 쿼리로 구현해 보았습니다.-- 중복된 레코드들 중 한 건만 남기고 삭제DELETE FROM kidsetWHERE (kid, meaning)IN (SELECT kid, meaning FROM (SELECT kid, meaning,ROW_NUMBER() OVER (PARTITION BY kid ORDER BY meaning) AS row_number_FROM kidset) aWHERE a.row_number_ != 1);-- 중복된 레코드들 중 한 건만 남기고 삭제DELETE FROM eidsetWHERE (eid, meaning)IN (SELECT eid, meaning FROM (SELECT eid, meaning,ROW_NUMBER() OVER (PARTITION BY eid ORDER BY meaning) AS row_number_FROM eidset) aWHERE a.row_number_ != 1);-- 작가명, 회원아이디 컬럼에 각각 중복되지 않은 유일한 값들로 조회-- 동시에 seq 컬럼에 시퀀스값을 생성하여 임시테이블 nm 생성SET @rownum :=0;SET @rownum1:=0;SET @rownum2:=0;CREATE OR REPLACE TABLE nmASWITHa AS (SELECT @rownum1:=@rownum1+1 AS num, CONCAT('*',kid) AS idset FROM kidset),b AS (SELECT @rownum2:=@rownum2+1 AS num, CONCAT(eid,'*') AS idset FROM eidset)SELECT@rownum:=@rownum+1 AS seq,a.idset AS 작가명, b.idset AS 회원아이디FROM a, bWHERE b.num = a.numORDER BY a.idset, b.idset;-- 검증(0건 정상)SELECT 작가명,COUNT(*) FROM nmgroup BY 작가명HAVING COUNT(*)>1;-- 검증(0건 정상)SELECT 회원아이디,COUNT(*) FROM nmgroup BY 회원아이디HAVING COUNT(*)>1;-- 작가명 유일한 값, 회원아이디 유일한 값으로 wn_novel 테이블 해당 컬럼 UPDATEUPDATE wn_novel a INNER JOIN nmON a.`작품번호` = nm.seqSETa.`작가명` = nm.`작가명`,a.`회원아이디` = nm.`회원아이디`;문제는 wn_novel 테이블은 총 1,002 건인데 반해 eidset 테이블은(회원아이디) 329 건(유일한 값) 밖에 되지 않아 유일한 값을 넣을 수가 없습니다. kidset 테이블은(작가명) 1,372 건(유일한 값)이므로 충분히 유일한 값 입력이 가능합니다.eidset 테이블의 eid 컬럼값이 유일하도록 1,002 건 이상 데이터 추가 후 위의 쿼리들을 수행한다면 정상 처리될 것으로 여겨집니다. ● 개인 사정으로 24~26일(다음 주 월요일)까지 자리를 비웁니다. 질문 남겨주시면 차주 화요일 이후로 꼭 답변드리도록 하겠습니다. 양해부탁드립니다 감사합니다.
질문&답변
[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성
해당 부분이 생략된 채 pdf 문서화되어 있었습니다.첨부 파일을 업데이트해놓았습니다. 강좌 "주인공과 등장인물의 집합체, 웸 소설 정보 테이블"의 교안, "03-2 DATA 생성-웹소설 정보. pdf" 파일을 다시 다운로드하십시오. 체크 감사드립니다.
질문&답변
[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련
안녕하세요 류재안님.1.웹소설별태그실적 테이블을 새로 하나 만드는 것을 권장합니다.표현하자면, "태그정보(참조)-웹소설별태그실적(실적)-웹소설정보(마스터)" 이겠네요. 웹소설별태그실적 테이블은 태그정보와 웹소설정보 각각의 PK를 복합키로 가진 테이블이 되겠죠.(작품번호+tgcd)위의 테이블 3개 모두 만들고 운영해야 하는 테이블입니다. 2.연재요일 테이블의 경우, 언급하신 것처럼 코드/요일 정보를 가진 테이블을 새로 만들어 작품번호+요일코드 형태로 복합키를 생성해도 상관없습니다. 다만 태그 정보와는 달리 '요일'이라는 정보는 일~토까지 더 이상 늘어나지 않는 상식적이고 제한적인 값을 가지고 있으므로 코드값을 부여하지 않고 그대로 쓰거나, 혹은 코드값을 쓰더라도 테이블이 아닌 데이터 수준에서 월(MO),화(TU),수(WE) 등과 같이 값 자체를 하나의 규칙처럼 정의해 쓰기도 합니다.(테이블이 없어도 명세서에 기재된 데이터 정의 내용을 바탕으로)참고로, 대용량데이터를 다루는 데이터웨어하우스의 경우 코드값이 따로 정의되어 있더라도 성능의 문제로 인해 코드와 값 모두를 실적테이블에 함께 저장해 놓는 경우도 종종 있습니다.(조인해 가져오기보다는 그대로 출력해 보여주는 것이 더 빠르기 때문이며, 코드테이블에 수정이 일어나지 않는다는 전제 조건도 있어야합니다만.)
질문&답변
[공유][워크밴치사용관련]한글깨짐
매우 유용한 워크벤치 활용 Tip입니다. 실제로 워크벤치 유저들이 ERD를 활용할 때 가장 불편해하는 점들 중 하나가 바로 '한글화' 부분입니다. 개발사에서 관심을 더 가져주었으면 좋겠네요. ( 저 역시 강좌를 만들면서 '나눔 고딕 12'로 모든 폰트를 변경해 놓고 작업했습니다만 그래도 깨지는 부분은 깨져 보이더라고요. ) 글 남겨주셔서 감사드립니다.
질문&답변
[가상데이터 생성]
안녕하세요 류재안 님.우선 제가 사용하는 MariaDB서버 버전을 알려드리면 10.6 및 11.x 입니다. 혹시 버전 문제 소지가 있을 수 있어 말씀드립니다.요청하신 쿼리는 다음과 같습니다.DELETE FROM sc_paymentWHERE (usr_phnumber, DATE_FORMAT(pay_dt,'%Y-%m-%d %H'))IN ( SELECT usr_phnumber, pay_dt FROM ( SELECT usr_phnumber,DATE_FORMAT(pay_dt,'%Y-%m-%d %H') AS pay_dt ,ROW_NUMBER() OVER (PARTITION BY usr_phnumber ORDER BY usr_phnumber,DATE_FORMAT(pay_dt,'%Y-%m-%d %H') DESC) AS row_number_ FROM sc_payment ) a WHERE a.row_number_ != 1);위의 쿼리는 년-월-일-시까지만 보았을 때 하루동안 중복된 건들을 처리합니다. 초 단위까지 하시려면 DATE_FORMAT의 시간형식 포맷을 초 단위까지 적절히 기재해 주시면 됩니다.수행 내용은 동일한 전화번호에 대해 하루 동안 마지막 건수만 남기고 나머지를 삭제하는 쿼리입니다. 유사한 내용이 채널에 있어 URL을 남깁니다.https://www.youtube.com/watch?v=tqClIDsoa3U&t=50s
질문&답변
[관계선 안쪽 작도의 의미](1:22) titles 테이블 작성관련
안녕하세요 반갑습니다 류재안 님.결론부터 말씀드리면, 동일하든 다르든 상관없습니다.(맞추어 주지 않아도 됩니다) 물리적으로는 ForeignKeys탭에(이하 F탭) 명시된 이름들을 활용해 객체가 생성되기 때문입니다.MySQL워크벤치 ERD 화면에서 하단의 Indexes탭에(이하 I탭) 'fk_'로 표시되는 인덱스들은 PK 혹은 직접 유저가 생성한 인덱스가 아니라면 다소 상징적인 면이 있습니다. '외래 키를 생성하면 반드시 인덱스가 생성된다'라는 사실을 알려주는 정도라고 생각하시면 됩니다.따라서 나중에 Forward Engineer 등의 기능을 통해(ERD->테이블생성) 실제 물리적인 테이블 객체를 생성하고 나면, ERD 하단에 보이는 탭들 중 F탭에 정의된 내용으로 ForeignKey가 생성됩니다. I탭에 정의된 FK명은 나타나지 않습니다.(워크벤치에 숨겨진 또 다른 설정이 있다면 모르지만요) (테이블 생성 스크립트 실례)CREATE TABLE titles (emp_no varchar(8) NOT NULL,title varchar(50) NOT NULL,from_date date NOT NULL,to_date date DEFAULT NULL,PRIMARY KEY (`emp_no`,`title`,`from_date`),CONSTRAINT emp_no1 FOREIGN KEY (`emp_no`) REFERENCES employees (`emp_no`) ON DELETE NO ACTION ON UPDATE NO ACTION);