묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 - 기본편
서브쿼리 메인쿼리 논리적 순서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서 서브쿼리가 먼저 실행된다고 설명해주셨는데, 그럼 메인쿼리 입장에서는 WHERE절이 먼저 실행되는거 아닌가요? 메인쿼리 입장에서는 FROM절 -> WHERE절 실행이니까 FROM먼저 실행되고, 그 다음에 서브쿼리(서브쿼리 내에서도 논리적 실행 순서 동일)가 실행되는건지 아니면 서브쿼리 즉 메인쿼리 입장에선 WHERE절이 먼저 실행되는건지 궁긍합니다.
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
동시성 테스트
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 4-8 여기까지 이해하신 내용은 무엇인가요? mysql 내부에서 자체적으로 공유락과 배타락을 사용 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 코드상에서 직접적으로 락을 사용하지 않아도 결론적으로 mysql 내부에서 락을 사용하는데 왜 동시성 테스트는 실패하는건가요?? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
-
해결됨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)이 성능이 더 좋다고 알고 있는데 제가 잘못 알고 있는 부분일까요? 성능적인측면에서도 답변 부탁드리면 감사하겠습니다~
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
Gradle Build 시 에러 발생
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?2-7강 여기까지 이해하신 내용은 무엇인가요?git Action CI/CD 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?git push 후 workflow에서 Gradle 빌드 실패코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?git push 후 workflow에서 Gradle 빌드 실패현재 작성하신 코드를 공유해주세요 빌드를 진행할 때 먼저 3개의 테스트에서 실패합니다.SimpleEventListenerTest > 현재 코드 구조에서 @TransactionalEventListener는 작동하지 않는다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @TransactionalEventListener는 활성 트랜잭션이 필요하다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111 SimpleEventListenerTest > @EventListener는 트랜잭션이 없어도 정상 동작한다 FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1770 Caused by: jakarta.persistence.PersistenceException at AbstractEntityManagerFactoryBean.java:421 Caused by: org.hibernate.exception.JDBCConnectionException at SQLExceptionTypeDelegate.java:49 Caused by: java.sql.SQLNonTransientConnectionException at SQLError.java:111이후, Redis에 Reconnecting 하려고 시도하지만 Connection이 Refused되면서 빌드에 실패합니다.2025-08-21T08:34:32.560Z INFO 2235 --- [xecutorLoop-1-2] i.l.core.protocol.ConnectionWatchdog : Reconnecting, last destination was localhost/127.0.0.1:32770 2025-08-21T08:34:32.570Z WARN 2235 --- [ioEventLoop-8-2] i.l.core.protocol.ConnectionWatchdog : Cannot reconnect to [localhost/<unresolved>:32770]: Connection closed prematurely io.lettuce.core.RedisConnectionException: Connection closed prematurely at io.lettuce.core.protocol.RedisHandshakeHandler.channelInactive(RedisHandshakeHandler.java:91) ~[lettuce-core-6.2.6.RELEASE.jar:6.2.6.RELEASE] // 생략로컬 환경과 AWS EC2 환경에서 동일하게 발생합니다. 해결 방법gradle build를 5번 정도 시도했는데, 5번 중 4번은 SimpleEventListenerTest에서 테스트가 실패하고, 1번은 다른 Test에서 실패하였습니다.그래서, SimpleEventListenerTest에 대해 개별 테스트를 진행해보니 통과하였습니다.전체 테스트 진행에서는 JDBC Connection 관련 오류가 발생했고, 개별 테스트 진행에서는 문제가 발생하지 않는다는 점에서 커넥션 풀 설정 문제를 의심하였습니다. spring: datasource: url: jdbc:mysql://${RDS_ENDPOINT:localhost}:3306/portfolio?useSSL=false&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false&rewriteBatchedStatements=true username: portfolio_user password: ${RDS_PASSWORD:portfolio1234} driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 32@TestConfiguration public class TestDatabaseConfig { @Container private static final MySQLContainer<?> mysqlContainer;application.yml 의 최대 풀 사이즈는 32로 설정되어 있고, mySQL 컨테이너는 전역으로 설정되어 있으므로 병렬 처리 과정에서 커넥션 풀이 부족할 수 있겠다는 판단하에, maximum-pool-size를 100으로 늘려보았습니다.package ding.co.backendportfolio.config; import jakarta.annotation.PreDestroy; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.testcontainers.containers.MySQLContainer; import org.testcontainers.junit.jupiter.Container; @TestConfiguration public class TestDatabaseConfig { @Container private static final MySQLContainer<?> mysqlContainer; static { mysqlContainer = new MySQLContainer<>("mysql:8.0.33") .withDatabaseName("testdb") .withUsername("test") .withPassword("test"); mysqlContainer.start(); // A) 기본 설정 + rewriteBatchedStatements 옵션 String originalJdbcUrl = mysqlContainer.getJdbcUrl() + "?rewriteBatchedStatements=true"; // TODO: BulkInsert 모니터링 - 아래 주석을 해제해야함 // originalJdbcUrl = originalJdbcUrl + "&profileSQL=true&logger=Slf4JLogger&maxQuerySizeToLog=2147483647"; System.setProperty("spring.datasource.url", originalJdbcUrl); System.setProperty("spring.datasource.username", mysqlContainer.getUsername()); System.setProperty("spring.datasource.password", mysqlContainer.getPassword()); // 커넥션 풀 늘리기 System.setProperty("spring.datasource.hikari.maximum-pool-size", "100"); System.setProperty("spring.datasource.hikari.minimum-idle", "10"); } @Bean public MySQLContainer<?> mySQLContainer() { return mysqlContainer; } @PreDestroy public void stop() { if (mysqlContainer != null && mysqlContainer.isRunning()) { mysqlContainer.stop(); } } } 이후 테스트를 진행해보니, 기존에 작성해두신 커넥션 풀 테스트인 EventJoinWithExternalConnectionPoolTest를 제외하고 테스트에 통과하였습니다.따라서, EventJoinWithExternalConnectionPoolTest이 테스트에만 작은 커넥션 풀을 적용하도록 하였습니다.@Slf4j @IntegrationTest // 커넥션 설정 @TestPropertySource(properties = { "spring.datasource.hikari.maximum-pool-size=32", "spring.datasource.hikari.minimum-idle=5" }) class EventJoinWithExternalConnectionPoolTest {문제가 발생한 원인은, Gradle 병렬 테스트 진행 시 커넥션 풀이 부족하여 커넥션이 이뤄지지 않았던 것 같습니다.사실 최대 커넥션 풀을 100개로 늘리는 건 임시방편인 것 같고, 테스트별로 독립적인 컨테이너 환경을 만들어주는게 좋을 것 같다고 생각합니다. P.S.) GPT, 클로드코드, Cursor, ... 다 문제 원인을 파악하지 못하더라고요 ㅎㅎ
-
해결됨김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
문제5번 - 함수 코드 중복 방지를 위한 방법 중 서브쿼리와 CTE의 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]질문이 서론과 본론으로 구분되어 있으며, 실제 질문 내용은 본론에 있습니다! 서론안녕하세요 영한님.문제5번에서는 SUBSTRING_INDEX(email, '@', 1) 함수를 user_id와 id_length에서 두 번 반복해서 사용하게 됩니다.중복 문제를 개선하기 위해 초기에는 다음과 같이 CHAR_LEGNTH(user_id) AS id_length로 시도를 했으나 실패했습니다. -- 에러 발생 코드 SELECT email, SUBSTRING_INDEX(email, '@', 1) AS user_id, CHAR_LENGTH(SUBSTRING_INDEX(user_id) AS id_length FROM customers ;그 이유는 SELECT 절의 모든 표현식이 논리적으로 동시에 평가되기 때문이라고 판단했고, 이를 해결하기 위한 방법 중 서브쿼리와 CTE(Common Table Expression) 방식을 찾았고 이를 직접 적용해봤습니다. -- sol1. 서브 쿼리 SELECT email, user_id, CHAR_LENGTH(user_id) AS id_length FROM (SELECT email, SUBSTRING_INDEX(email, '@', 1) AS user_id FROM customers ) AS dt ;-- sol2. CTE WITH email_parts AS ( SELECT email, SUBSTRING_INDEX(email, '@', 1) AS user_id FROM customers ) SELECT email, user_id, CHAR_LENGTH(user_id) AS id_length FROM email_parts; 본론이 과정에서 "서브 쿼리와 CTE의 성능 차이가 있는가?"에 대한 의문이 들어서 리서치를 했으나 제 수준이 부족한 탓인지 이에 대한 명확한 답변을 찾지 못했는데요(현재 '상황에 따라 다르다' 수준으로만 이해한 상태입니다).혹시 실무에서는 서브 쿼리와 CTE 중 (성능, 가독성, 개발팀 관례 등의 이유로 인해) 무엇을 선호하는지 의견을 들을 수 있을까 싶어 질문 남깁니다!혹시 다음 강의에서 다루는/다룰 내용이라면 제가 추후에 해당 강의를 들을 때 학습하도록 하겠습니다!
-
미해결김영한의 실전 데이터베이스 - 기본편
중복제거
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]풀이 시간에SELECT distinct u.name, u.email FROM users u JOIN orders o on u.user_id = o.user_id WHERE o.quantity > 1;한 번의 주문으로 상품을 2개 이상 구매한 고객의 쿼리는 중복제거를 해주셨는데요,SELECT u.name AS 고객명, u.email AS 이메일 FROM users u JOIN orders o on u.user_id = o.user_id JOIN products p on o.product_id = p.product_id WHERE p.category = '전자기기''전자기기' 카테고리 상품을 한 번이라도 구매한 고객은 중복제거를 해주지 않았더라구요. 하나의 그룹에 고객이 두명이 나오는 게 이상해서이 경우 distinct 혹은 GROUP BY u.name, u.email을 추가해주어 중복제거 해주면 될까요? distinct 와 GROUP BY 중 어떤걸 사용하는 게 더 좋을까요? 집계함수를 사용하지 않으니 distinct가 더 나을까요?
-
해결됨5천억건이 넘는 금융 데이터를 처리하는 토스 개발자에게 배우는 MySQL
실례합니다만.. 혹시 강의 할인
기존강의들.. 대폭할인 이벤트는 더 이상 하지 않으시겠죠..?한번씩 최신강의들 대폭 할인 하시던데.. 아쉬워서 한번 여쭤봅니다..
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
12.7. 방장기능(강퇴) 질문드립니다.
socket.on('kicked', (data) => { console.log('강퇴 이벤트 수신'); alert(data.message); window.location.href = data.redirectUrl; }); socket.on('kickUser', (userId) => { console.log('강퇴 요청 받음:', userId); const targetSocket = chat.sockets.get(userId); if (targetSocket) { console.log('강퇴 대상 소켓 찾음'); targetSocket.emit('kicked', { message: '강퇴되었습니다.', redirectUrl: '/' }); setTimeout(() => { // 강퇴된 소켓 연결 해제 targetSocket.disconnect(true); console.log(`사용자 ${userId} 강퇴 완료`); }, 100); } else { console.log(`사용자 ${userId} 소켓을 찾을 수 없음`); } }); socket.on('kicked',가 작동을안하네요 서버쪽에서는 targetSocket.disconnect(true)정상작동합니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
아우터 조인 기준 테이블 우선순위
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요, 영한님.강의를 수강하던 중 아우터 조인과 관련하여 고민이 생겨 질문드립니다. 아우터 조인의 기준 테이블은 질문의 의도에 따라 선정해야 함을 배웠습니다. 그러나 LEFT JOIN 사용의 편의성과 1:N 관계에서 발생하는 행 중복을 피해야 한다는 원칙이 서로 충돌하는 상황에서 어떤 기준을 우선하여 테이블을 선정해야 할지 판단이 서지 않아 문의드립니다. 이 두 가지 원칙이 상충될 때, 어떤 기준으로 우선순위를 결정하고 쿼리를 설계해야 하는지 영한님의 실무 팁에 대해서 바쁘신 와중에 답변해주시면 진심으로 감사하겠습니다.
-
해결됨5천억건이 넘는 금융 데이터를 처리하는 토스 개발자에게 배우는 MySQL
2번째 더미데이터 생성이 되지 않습니다.
1분이 넘어가도록 실행이 끝나질 않습니다.
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
order 테이블 생성이 안되네요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스크린샷과 쿼리문은 다음과 같습니다..CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, customer_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, order_date DATETIME DEFAULT CURRENT_TIMESTAMP, status VARCHAR(20) NOT NULL DEFAULT '주문접수', CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES customers(customer_id), CONSTRAINT fk_orders_products FOREIGN KEY (product_id) REFERENCES products(product_id));
-
미해결김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
ifnull()과 default 차이
ifnull(인자1, 인자2) 은 인자1이 null이면 인자2를 값으로 사용한다고 설명하셨는데요.이것을 보고 생각나는 것이 테이블 생성시에 필드에 지정하는 default 가 생각나는데요.이 default도 필드 값이 null이면 지정한 default값을 사용하는데 그렇다면 ifnull()과 default의 차이점은 뭔가요?당장 제 수준에서 생각나는건 ifnull()은 매 쿼리 작성할때 기본값을 유연하게 변경할 수 있다? 이정도일 것 같은데이것말고 특별한 차이점 같은 것이 있을까요?
-
미해결김영한의 실전 데이터베이스 - 기본편
섹션3. 조인2 - 외부 조인과 기타조인 / 문제와 풀이2 강의 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요~문제와 풀이2의 문제2(모든 상품 옵션 조합에 재질 추가하기)에서 선생님 실행 결과가 (사이즈) S -> M -> L -> XL 순서로 나오던데요, 제 생각에는 기본 문자열 정렬이라면 L -> M -> S -> XL 순서가 맞는 것 아닌가요? 혹시 제가 놓친 부분이 있을까요?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
인덱스 설계
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3-7 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?개인 프로젝트 중 여러 테이블이 where절 조건에 있을 때는 어떤식으로 인덱스를 설계해야 하나요??코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 select o1_0.order_id, o1_0.city, o1_0.street, o1_0.zipcode, o1_0.created_at, o1_0.deleted_at, o1_0.delivery_id, o1_0.member_id, o1_0.name, o1_0.no, o1_0.payment_id, o1_0.tid, o1_0.total_price, o1_0.updated_at from orders o1_0 join member m1_0 on m1_0.member_id=o1_0.member_id join delivery d1_0 on d1_0.id=o1_0.delivery_id join payment p1_0 on p1_0.payment_id=o1_0.payment_id where d1_0.delivery_status=? and o1_0.created_at between ? and ? and o1_0.total_price>=? order by o1_0.total_price limit ?, ?orders테이블과 delivery 테이블 where절에서 조건이 걸려있습니다. 이럴 경우는 어떻게 해야 하나요??쿼리 조건이 좀 이상할 수 있지만 공부하는 겸 여러 조건들을 시도하고 인덱스 설계하는 중입니다. ㅎㅎ제가 시도해본 인덱스들은, orders 테이블에 create_at, total_price 복합 인덱스와 total_price, created_at 복합 인덱스이며 첫 번째 인덱스는 속도가 느려졌고 두번째 인덱스는 속도가 빨라졌습니다. 인덱스 X desc 결과첫번째 인덱스 desc 결과두번째 인덱스 desc 결과 이후 delivery_status로 인덱스를 만들었더니 속도가 더 빨라졌습니다.-> where 절에 여러개에 테이블이 조건으로 있더라도 각 테이블마다 인덱스를 생성해주면 될까요?? 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
-
해결됨김영한의 실전 데이터베이스 - 기본편
배치 처리 방식과 파이프라인 처리 방식
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요 영한님! 데이터베이스 입문/기본편 강의에서 GROUP BY, 집계함수, CASE 문 등을 배우고 공부하면서, DBMS에서 레코드를 읽고 표현식을 처리하는 내부 과정에 대해 관심을 갖게 되었습니다.이번 강의에 조건부 집계 같은 나름 복잡한? 쿼리를 이해하려고 노력하면서 몇 가지 궁금증이 떠올랐습니다. 질문1) 배치 처리 방식 vs 파이프라인 처리 방식영한님의 자바 고급편 강의에서, 데이터 요소들의 처리하는 방식에는 파이프라인 방식과, 배치 처리 방식이 있다고 하셨던 부분이 떠올랐습니다. 데이터베이스 쿼리의 논리적 순서는 FROM -> WHERE -> (GROUP BY -> HAVING -> ) SELECT -> .... 과정으로 이뤄지는데, 실제 DBMS에서는 FROM 절 -> WHERE 절 배치처리 -> SELECT 절 배치처리 이런 과정으로 이뤄지는지,아니면 레코드 하나를 단위로 FROM -> WHERE -> SELECT 파이프라인을 거쳐 처리가 되는 것인지 궁금합니다.질문 2) GROUP BY와 집계 함수 처리 시점COUNT()나 SUM()과 같은 집계함수는 select 절에 존재하고, 쿼리의 논리적 순서에 따르면 GROUP BY 다음 SELECT 절이 실행되는데요. (HAVING 제외) 실제로는 GROUP BY를 실행하면서 SELECT 절에서 필요한 집계 값을 누적시키는지,아니면 특별한 자료구조에 그룹별로 레코드를 모아두고 SELECT절 수행 시점에 집계함수 값을 얻어내는건지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
application.yml파일에 작성한 username과 password는 암호화 안해도 되나요?
안녕하세요, 보다가 궁금한점이 있어 질문드립니다.혹시 서버에 배포할 때 실제 운영되는 서비스면 저 비밀번호를 암호화해서 저장해야하는건지 문득 궁금증이생겨서 여쭤봅니다.
-
미해결김영한의 실전 데이터베이스 - 기본편
잡담
[질문 내용]4:13초에 아잇아아아잇 이런 인간적인 모습까지 ㅋㅋㅋㅋ 당황하시는 모습에 빵터졌네요 ㅋㅋㅋㅋㅋ 이런 거 편집 안해주셔서 감사합니다ㅋㅋㅋㅋㅋㅋㅋ
-
미해결김영한의 실전 데이터베이스 - 기본편
문제4 - orders를 기준으로 할 경우
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]users 말고, orders 기준으로 쿼리를 작성 중인데요 여기서 봉착한 난관이... 주문 기록이 없다면, null로 표현되는 부분을 어떻게 풀어나가야 할지 모르겠어서 문의드립니다ㅠㅠSELECT u.name as user_name, p.name as product_nameFROM orders AS oLEFT JOIN users AS u ON o.user_id=u.user_idLEFT JOIN products AS p ON o.product_id=p.product_idORDER BY u.name, p.name;
-
미해결김영한의 실전 데이터베이스 - 기본편
외부조인2 - 실습2 - is NULL
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]외부 조인2강 - 실습2 관련 질문입니다!SELECT *FROM products AS pLEFT JOIN orders AS o ON p.product_id = o.product_idWHERE o.product_id is NULL; WHERE 절에 o.order_id is NULL로 작성해주셨는데, 위와 같이 WHERE o.product_id is NULL; 써도 괜찮은 걸까요?