묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
db 공부관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한 강사님이 추천하시는 db설계책이 있을까요?
-
미해결graphRAG - Neo4J로 구현하는 지식 그래프 기반 RAG 시스템 (feat. LangChain)
neo4j의 장점
지금 영화 추천하는 강의 보고 있습니다.질문 있습니다. 일반적인 sql 쿼리를 써도 해당 내용으로 추천 내용 다 작성 할 수 있을 것 같은데 neo4j 랑 사이퍼 쿼리를 쓰는 이유는해당 데이터를 노드화 해서 연결 함으로써검색 속도가 빨라지는 장점이 있을까요? 감사합니다.
-
미해결견고한 결제 시스템 구축
seed 키 및 orderId 에 대한 질문
seed 키 값으로 LocalDateTime.now 로 설정하면 어차피 사용자가 연속으로 클릭을 한다고 해도 중복값으로 들어오지 않게 되는것 아닌가요?그러면 결론적으로 자료에서 설명하신 결제버튼을 누른만큼 Checkout API 가 호출되는것이 아닌지 궁금합니다.
-
해결됨김영한의 실전 데이터베이스 - 기본편
[오타 제보] 12. 저장 프로시저, 함수, 트리거.pdf
안녕하세요, 영한님. 강의록에 사소한 오타가 있어 제보합니다. [오타 정보]위치: 12. 저장 프로시저, 함수, 트리거.pdf - p.5 맨 위의 '프로시저 호출(CALL)' 부분내용:변경 전: 이제 user_id가 2번인 '네이트' 고객의 주소를 '경기도 성남시'로 변경하는 프로시저를 호출해 보자.변경 후: 이제 user_id가 2번인 '네이트' 고객의 주소를 '경기도 성남시2'로 변경하는 프로시저를 호출해 보자.
-
미해결김영한의 실전 데이터베이스 - 기본편
조인2 - 외부조인과 기타조인 : 조인의 특징
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 선생님 강의 잘 듣고 있습니다. 23:16초에서 "실무에서 이것이 왜 중요할까?" 부분이 잘 이해가 안가서 질문 드립니다. 제가 이해한 바로는 FROM users JOIN orders 와FROM orders JOIN users 의 차이는 안에서 복제를 해서 전체 행의 수가 늘어나는지, 자식 테이블의 행 개수가 그대로 유지인지 이 차이이고,결과물은 같다고 생각합니다. (inner join은 교집합이니깐) 그런데 지금 실무에서 이것이 왜 중요할까? 부분에서 <<집계함수인 COUNT(u.user_id)를 실행하면 어떻게 될까? 주문을 여러번 한 고객이 중복 계산되므로 전체 주문 수인 7이 나온다>>고 하셨는데 기준 테이블을 부모로 잡든 자식으로 잡든 결과는 똑같지 않나요? 제가 저 구문의 의도를 잘 파악하지못하여 질문 드립니다.
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
GROUP BY 에서 ORDER BY 를 사용했을 때 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 강사님의 예제처럼 GROUP BY 와 ORDER BY 를 사용했습니다. 이때, 카테고리별 구매금액 정렬이 함수와 백틱을 사용했을 때 경우가 다르게 동작하는데 그 이유가 궁금합니다. 세종대왕 케이스를 확인해주시면 감사하겠습니다. 함수를 직접 사용하였을 때 백틱을 사용하였을 때
-
미해결SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법
강의 연장 요청 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 연장 가능할까요? 바쁘시지만 연장해주시면 감사하겠습니다.
-
해결됨김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
오타 제보
교재 26~27 페이지SELECT customre_id FROM orders 실행 결과에 대해 1, 1, 2, 2, 2로 제공실제로는 1, 1, 2, 2, 3강의에서는 정상적으로 나와있습니다!
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
7.SQL - 집계와 그룹핑 : 문제와 풀이에서 2번문제
문제2 : 쇼핑몰 매출 현황 파악하기 에서 '평균 주문 금액'을 구하는것에 질문이 있습니다. 제가 생각한 답은 SELECT SUM(price*quantity) , SUM(price*quantity)/COUNT(*), MAX(price), MIN(price)FROM order_stat;이것인데, 강의에서는 AVG를 이용해서 하셨는데, 혹시 실무에서는 어떻게 구할까요?
-
미해결데이터 분석 SQL Fundamentals
10. 조인 실습 - 02 관련 질문
안녕하세요.강의를 들으면서 잘 이해가 되지 않는 부분이 있어 질문 드립니다.질문 드리고자 하는 부분은 "직원명 SMITH의 과거 소속 부서 정보를 구할 것"이라는 문제의 쿼리문인데요. 우선 제가 작성한 쿼리문은 아래와 같습니다.selecta.ename, a.empno, b.deptno, c.dname, b.fromdate, b.todatefromhr.empajoinhr.emp_dept_histbona.empno = b.empnojoinhr.deptcona.deptno = c.deptnowherea.ename = 'SMITH'; 그리고 강사님께서 작성하신 쿼리문은 아래와 같구요.selecta.ename, a.empno, b.deptno, c.dname, b.fromdate, b.todatefromhr.empajoinhr.emp_dept_histbona.empno = b.empnojoinhr.deptconb.deptno = c.deptnowherea.ename = 'SMITH'; 두 쿼리문의 차이는 join hr.dept c on 부분에서 "a.deptno = c.deptno"과 "b.deptno = c.deptno"입니다. 제 생각에는 위 두 쿼리문이 같은 결과를 뱉어야 할 것 같은데.. 아래 쿼리문 결과를 보면 dname 부분이 다르게 출력됩니다. 1) 제가 작성한 쿼리문 결과 2) 강사님이 작성하신 쿼리문 결과 제 짧은 지식으로는 두 결과가 동일해야 할 것 같은데, 제가 잘못 생각한 부분이 있다면 말씀 부탁드립니다 ㅠ
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
GROUP BY 강의 중 ORDER BY에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]46. GROUP BY - 그룹으로 묶기 강의 중 그룹으로 묶은 뒤 집계 함수를 사용한 컬럼을 기준으로 정렬하는 내용에 질문이 있습니다.ORDER BY에 총 구매 금액 이라는 alias로 지정한 컬럼명을 사용해도 되고, sum(price * quantity)로 SELECT 절에서 사용한 집계함수를 다시 사용해서 정렬해도 된다고 설명해주셨습니다.만약 집계함수를 사용했을 땐 계산을 또 해야하고, 컬럼명을 사용했을 땐 컬럼을 참조만 한다면 성능에 차이가 생기지 않을까라는 생각이 들었습니다.ORDER BY 절에 집계함수를 사용하는 것과 컬럼명을 사용하는 것의 동작 원리가 같은지, 성능상의 차이가 있는지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
애플리케이션 코드 관리
안녕하세요 스승님!질문드립니다! 데이터 정합성을 위한 확인 절차는 front, back, DB에서 3중으로 처리하는게 좋은가요? 아니면 애플리케이션 레이어에서 처리하는게 좋을까요? (3중으로 하면 처리가 빠르고 정확할 수 있다는 장점이 있지만 처리 조건이 변경되는 경우 3군데에서 모두 변경이 있어야한다는 점이 꽤 번거로울 것 같습니다...)이후 설계에서 다뤄주시겠지만, 1:1 관계의 테이블로 연결된 두 테이블에서 FK에 UNIQUE 제약을 거는게 일반적인지도 궁금합니다.매번 덕분에 성장하고있슴다!감사합니다!
-
미해결김영한의 실전 데이터베이스 - 기본편
SELECT 절에서 CASE문을 사용한 이후, ORDER BY 절에서도 동일한 CASE 문을 사용하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 대상 위치]강의 영상:03:00 지점강의록:6. CASE 문.pdf - CASE 문 기본2 - CASE 문과 사용 위치[질문 내용]안녕하세요, 영한님.다음과 같이 'SELECT 절에서 사용한 CASE 문을 그대로 복사-붙여넣기 해서 ORDER BY 절에서 사용(THEN 결과는 1, 2, 3으로 변경)' 하셨는데요(아래 코드. 방법1).ORDER BY CASE WHEN price >= 100000 THEN 1 WHEN price >= 30000 THEN 2 ELSE 3 END ASC 실습하던 중 아래 코드(방법2)와 같이 'SELECT 절에서 정의한 컬럼 별칭(price_label)과 THEN 값('고가', '중가', 저가')을 이용'해서 정렬할 수도 있겠다고 생각해서 시도해봤고, 실행이 성공하여 영한님 코드와 동일한 결과가 나왔습니다.ORDER BY CASE WHEN price_label = '고가' THEN 1 WHEN price_label = '중가' THEN 2 WHEN price_label = '저가' THEN 3 END ASC 이때 자바와 같은 프로그래밍 언어 입장에서 보면 방법2의 경우가 'SELECT 절의 CASE 문 로직이 바뀌더라도 ORDER BY 절의 CASE 문 로직은 변경할 필요가 없으므로' 유지보수성 측면에서 더 좋겠다고 판단했습니다. 그런데 다음과 같은 반론(?)도 생각나더라구요.(애플리케이션 로직과 달리) 쿼리 문은 엄청나게 길고 복잡해질 가능성이 적으므로, 그냥 방법1처럼 복사-붙여넣기 해서 써도 무방하다.오히려 ORDER BY 절의 CASE 문을 새롭게 작성하는 과정에서 오타가 발생하여 오류를 일으킬 위험이 존재하니, 그냥 방법1처럼 복사-붙여넣기 해서 써도 무방하다.간단한 쿼리의 경우 ORDER BY 절의 CASE 문을 새롭게 작성하는 데에 비교적 많은 시간이 소모되는 비효율성이 존재하니, 그냥 방법1처럼 복사-붙여넣기 해서 써도 무방하다.이에 대해서 영한님의 의견은 어디에 가까우신가 의견 여쭙고 싶어서 글 남깁니다!
-
미해결강의 하나로 끝내는 백엔드 모든 지식!
PDF로 내보내기 기능 활성화 부탁드립니다.
안녕하세요! 강의를 이제 시작하려고 하는데, 노션에 PDF 내보내기 기능 활성화 부탁드려도 될까요? ctrl + P 를 눌렀을때 잘리는 부분이 있어서 그렇습니다ㅠ
-
해결됨김영한의 실전 데이터베이스 - 기본편
[수정 건의] 문제3의 실행 결과
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요, 영한님. 중요한 내용은 아니지만, 강의자료 개선에 조금이나마 도움이 될까 해서 글 남깁니다.요약: 문제3의 [실행 결과]의 행 순서를 변경하는 것을 제안합니다. 본론:문제3: 회사 주요 이벤트 타임라인 만들기의 경우 '최신 이벤트가 가장 위에 오도록 내림차순으로 정렬'할 것을 요구하고 있습니다. 현재 강의록의 [실행 결과]에는 다음 사진과 같이 고객 가입 이벤트가 모두 상품 주문 이벤트 보다 아래에 위치하고 있고, "고객 가입 이벤트의 날짜는 쿼리 실행 시점의 created_at 값에 따라 달라질 수 있다" 고 명시되어 있습니다. 수강생들이 위 사진만 얼핏 보고 섣불리 접근한다면, "(고객 생성 일시)가 쿼리 실행 시점에 따라 달라지기는 하지만, 그래도 모든 상품 주문 이벤트 이후에 위치하는게 올바른 결과겠구나"라고 판단할 위험이 있다고 생각해서 다음과 같이 수정하면 어떨까 의견을 제시합니다.수정 이후: 모든 고객 가입 이벤트 행이 모든 상품 주문 행보다 위에 위치. 즉, 현재 [실행 결과]에서 두 이벤트의 위치를 맞바꿈. 수정 제안에 대한 근거는 다음과 같습니다.예제 데이터를 삽입할 때 users.created_at 컬럼의 경우 DEFAULT CURRENT_TIMESTAMP로 추가했음.수강생은 강의 오픈 날짜인 2025-08-01 이후에 쿼리를 실행하는 것이 보장되기 때문에 users.crated_at 컬럼의 값 또한 마찬가지로 보장됨.상품_주문 이벤트의 이벤트_날짜 중 가장 최근은 2025-06-17로 강의 오픈 날짜보다 이전임. 따라서 모든 상품_주문 이벤트 또한 마찬가지로 보장됨.따라서 모든 users.created_at 데이터는 orders.order_date보다 최근임이 보장됨. 아래 사진은 참고용으로, 수강생인 제 경우의 실행 결과입니다. 위에서 설명한 바와 같이 고객 가입 이벤트가 항상 상품 주문 이벤트보다 그 시점이 최근임을 확인할 수 있습니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
코드성 테이블과 캐시에 대한 질문
안녕하세요, 영한님. 다른 수강생 분의 질문 글에 남겨주신 답변에다가 제 질문을 작성했는데 혹시 이에 대한 알람은 가지 않을까봐 질문글을 따로 올리고, 아래에 그 링크를 첨부하도록 하겠습니다..!!(현재 글은 추후 자체 삭제 예정입니다)질문 글 링크https://inf.run/Rywjc
-
해결됨김영한의 실전 데이터베이스 - 기본편
실무에서 인덱스 설계는 보통 개발 어느 시점에 진행하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]영한님이 제시해주신 가이드라인을 보면서'모든 기능 요구사항을 기본적으로 구현한 후, 작성된 쿼리를 전반적으로 훑어보면서 인덱스를 설계' 하는 것이 가장 효율적일 것이라고 생각이 들었는데요.영한님은 실무에서 인덱스 설계는 보통 개발 어떤 시점에 진행하시는지 궁금합니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
서브쿼리 메인쿼리 논리적 순서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서 서브쿼리가 먼저 실행된다고 설명해주셨는데, 그럼 메인쿼리 입장에서는 WHERE절이 먼저 실행되는거 아닌가요? 메인쿼리 입장에서는 FROM절 -> WHERE절 실행이니까 FROM먼저 실행되고, 그 다음에 서브쿼리(서브쿼리 내에서도 논리적 실행 순서 동일)가 실행되는건지 아니면 서브쿼리 즉 메인쿼리 입장에선 WHERE절이 먼저 실행되는건지 궁긍합니다.
-
미해결Real MySQL 시즌 1 - Part 1
ep12. (2) LEFT JOIN 사용 방법 준수 - 오타 질문
안녕하세요(2) LEFT JOIN 사용 방법 준수 - 오타 질문 (3:58 부근) 에서 첫 번째 SQL이 아래와 같이 써있는데요 select u.id, u.name, ua.value from user u left join user_attribute ua on ua.user_id=u.id where ua.name='address' where 조건에 ua.name이 아니고, ua.value가 아닐까 의미적으로 맞는게 아닌가 싶어서 질문드립니다. 전체 스키마가 있는게 아니다보니 제가 오해한 걸수도 있어서, user, user_attribute 테이블 전체 스키마를 주시면 감사하겠습니다!
-
해결됨Real MySQL 시즌 1 - Part 1
ep.12 count(*) 질문
안녕하세요, count(1) 대신 count(*)을 쓰라고 하셨는데요, count(1)이 성능이 더 좋다고 알고 있는데 제가 잘못 알고 있는 부분일까요? 성능적인측면에서도 답변 부탁드리면 감사하겠습니다~