소개
강의
로드맵
전체 1수강평
- 필요할 때 찾아 쓰는 SQL 쿼리북, Part I
- 발표자를 위한 Freeplane
게시글
질문&답변
자료 준비가..
안녕하세요 ilovepc님.확인해 본 바로는 모든 영상에 pdf 강좌 파일이 각각 첨부되어 있으며 해당 pdf 파일은 내용 복사가 가능한 형태입니다.insert 문, SQL 등이 보이지 않는다는 말씀이 어떤 강좌에서 체크하신 부분인지 알려주시면 다시 확인해보도록 하겠습니다.
- 0
- 2
- 45
질문&답변
[스토리 그 자체, 실적 테이블](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 기반 + 워크벤치를 개발환경으로써 고려 중입니다.)
- 1
- 2
- 372
질문&답변
urlcodemap 쿼리 파일 확인요청
말씀하신 해당 파일에 대한 정보를 링크로 남깁니다. 다운로드하거나 복사 및 붙여 넣기를 통해 수행하시면 테이블과 해당 데이터가 생성 및 입력됩니다. https://drive.google.com/file/d/1kkYR7c_xZWpHKQ0TCSJRKyajK0qCrK5j/view?usp=sharing감사합니다.
- 1
- 2
- 177
질문&답변
[공유][대사와 액션, 회차정보테이블]contents2 생성관련
안녕하세요 류재안 님우선 제가 강좌를 만든 DB가 MariaDB 10.x이상이라 MySQL8.x에서 곧바로 적용하면 가끔 말씀하신 류와 같은 오류들이 발생합니다.MySQL8.x에서 GROUP_CONCAT 함수에 사용된 문자열 컬럼값의 크기가 1024를 넘어가면 오류를 발생합니다.언급하신 바와 같이 크기 조정 후 작업이 정상처리됩니다.변경 전에 확인을 하면 1024로 잡혀 있음을 알 수 있습니다.show variables like '%group_concat_max_len%';해결방안 올려주신 점 감사드립니다.(그런데 인프런 AI인턴 사우가 제 답변보다 더 섬세하고 정확해 보입니다. 😀 참고하시면 보다 도움 되실 듯합니다.)
- 1
- 2
- 280
질문&답변
[주인공과 등장인물의 집합채, 웹소설정보테이블]작가명 생성관련
충분히 의미 있는 데이터 가공이라고 생각합니다.현재 데이터들 조건이 일부 맞지 않지만 아래의 쿼리로 구현해 보았습니다.-- 중복된 레코드들 중 한 건만 남기고 삭제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일(다음 주 월요일)까지 자리를 비웁니다. 질문 남겨주시면 차주 화요일 이후로 꼭 답변드리도록 하겠습니다. 양해부탁드립니다 감사합니다.
- 1
- 1
- 198
질문&답변
[주인공과 등장인물의 집합체,웹소설정보테이블]wn_novel테이블 생성
해당 부분이 생략된 채 pdf 문서화되어 있었습니다.첨부 파일을 업데이트해놓았습니다. 강좌 "주인공과 등장인물의 집합체, 웸 소설 정보 테이블"의 교안, "03-2 DATA 생성-웹소설 정보. pdf" 파일을 다시 다운로드하십시오. 체크 감사드립니다.
- 1
- 1
- 166
질문&답변
[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련
안녕하세요 류재안님.1.웹소설별태그실적 테이블을 새로 하나 만드는 것을 권장합니다.표현하자면, "태그정보(참조)-웹소설별태그실적(실적)-웹소설정보(마스터)" 이겠네요. 웹소설별태그실적 테이블은 태그정보와 웹소설정보 각각의 PK를 복합키로 가진 테이블이 되겠죠.(작품번호+tgcd)위의 테이블 3개 모두 만들고 운영해야 하는 테이블입니다. 2.연재요일 테이블의 경우, 언급하신 것처럼 코드/요일 정보를 가진 테이블을 새로 만들어 작품번호+요일코드 형태로 복합키를 생성해도 상관없습니다. 다만 태그 정보와는 달리 '요일'이라는 정보는 일~토까지 더 이상 늘어나지 않는 상식적이고 제한적인 값을 가지고 있으므로 코드값을 부여하지 않고 그대로 쓰거나, 혹은 코드값을 쓰더라도 테이블이 아닌 데이터 수준에서 월(MO),화(TU),수(WE) 등과 같이 값 자체를 하나의 규칙처럼 정의해 쓰기도 합니다.(테이블이 없어도 명세서에 기재된 데이터 정의 내용을 바탕으로)참고로, 대용량데이터를 다루는 데이터웨어하우스의 경우 코드값이 따로 정의되어 있더라도 성능의 문제로 인해 코드와 값 모두를 실적테이블에 함께 저장해 놓는 경우도 종종 있습니다.(조인해 가져오기보다는 그대로 출력해 보여주는 것이 더 빠르기 때문이며, 코드테이블에 수정이 일어나지 않는다는 전제 조건도 있어야합니다만.)
- 1
- 1
- 204
질문&답변
[공유][워크밴치사용관련]한글깨짐
매우 유용한 워크벤치 활용 Tip입니다. 실제로 워크벤치 유저들이 ERD를 활용할 때 가장 불편해하는 점들 중 하나가 바로 '한글화' 부분입니다. 개발사에서 관심을 더 가져주었으면 좋겠네요. ( 저 역시 강좌를 만들면서 '나눔 고딕 12'로 모든 폰트를 변경해 놓고 작업했습니다만 그래도 깨지는 부분은 깨져 보이더라고요. ) 글 남겨주셔서 감사드립니다.
- 1
- 1
- 357
질문&답변
[가상데이터 생성]
안녕하세요 류재안 님.우선 제가 사용하는 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
- 1
- 134
질문&답변
[관계선 안쪽 작도의 의미](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);
- 1
- 1
- 142