SQL 연습은 아무것도 진짜로 느껴지지 않기 때문에 지루합니다. , 녹색 체크 마크를 얻고, 계속합니다. 데이터는 아무것도 의미하지 않습니다. 쿼리는 아무데도 가지 않습니다. 당신은 단지 진공에서 구문을 연습하고 있습니다. SELECT * FROM users 실제 SQL 작업은 그런 것이 아닙니다. 2am에 생산 버그를 찾는 것은 3 개의 테이블에 합류하고 비정상성을 발견함으로써 - 그것은 탐정 작업처럼 느껴집니다. 그래서 나는 건설 케이스를 해결할 때 휴대폰은 물리적 파일을 닫는 것과 같은 무거운 움직임을 제공합니다. 4 주 안에 매월 15,000 명의 사용자가 쿼리로 범죄를 해결하고 있습니다. SQL 케이스 파일 여기 SQL가 모든 것을 물리적으로 변화시키는 방법과 그것이 작동하게 만든 기술적 선택이 있습니다. 감각 코딩 : 왜 귀하의 터미널이 덤프해야하는지 "QUERY_VERIFIED" 스탬프 효과는 2am 실험 이었습니다.Query가 검증을 통과하면 세 가지 일이 동시에 발생합니다 : 터미널이 녹색으로 변하고, 스탬프 그래픽이 종이 스탬프 사운드 효과로 충돌하고 장치가 Taptic Engine을 통해 무거운 캡틱 펄스를 제공합니다. 그 감각적 인 피드백은 작업이 중요하다고 생각하도록 당신의 두뇌를 속이지 않습니다.도파민을 타격하는 방식으로 - "당신은 단지 실제 사례 파일을 닫았습니다" 방식으로.감각 루프는 "+10 XP" 알림이 결코하지 않는 메모리 앵커를 만듭니다. 나는 모든 상호 작용에 이것을 확장했다. 탐색을위한 가벼운 탭. 당신이 오류를 때릴 때 더 무거운 충돌. 증거 카드는 무작위 회전 각도, 드롭 그림자 및 코르크 텍스처를 가진 폴라로이드처럼 보입니다. 그들 위에 호버하고 그들은 물리적 인 핀처럼 반전합니다. 터미널은 섬세한 CRT 빛을 가지고 있기 때문에 터미널은 그렇게 보였고 괜찮았습니다. 이 중 어느 것도 SQL를 더 빨리 가르치지 않습니다.이 경험은 소프트웨어처럼 느껴지지 않으며 실제 무언가를 해결하는 방에있는 것처럼 느껴집니다. "Join" 라고 말하지 않고 함께 가르치기 증거 보드는 내가 가르치는 곳입니다. 어떤 SQL를 쓰기 전에, 당신은 증거 카드와 함께 코르크 보드를 볼 수 있습니다. 하나의 카드 : "비행기 404는 8시 15분에 출발했다."다른 카드 : "공항 스타벅스에서 신용 카드 요금, 08시 03분."당신의 두뇌는 일을합니다 - 그 두 조각은 위치와 시간을 공유합니다. JOIN 대부분의 플랫폼은 SQL을 뒤로 가르칩니다: 먼저 구문을 기억하고, 그 다음에 그것을 사용할 때를 파악합니다.The Evidence Board는 그것을 뒤집습니다.You see the problem, understand the relationship visually, then formalize what you already know in SQL. 기술적으로 이것은 시각적 쿼리 플래너입니다.I built it in React with custom JavaScript handling the physics. 사용자 지정 완화 곡선으로 모든 것이 오래된 안드로이드 장치에서 부드럽게 유지됩니다.Pushpins에는 3D 변환 및 충돌 감지 기능이 있으므로 당신이 그들과 상호 작용 할 때 자연스럽게 반전합니다.카드는 점진적으로 로딩되는 빈티지 종이 텍스처와 함께 붕괴 가능한 폴더 애니메이션을 사용합니다. requestAnimationFrame 기계는 실행 전에 계획을 강요하기 때문에 작동합니다.당신은 그냥 입력을 시작할 수 없습니다. 당신은 증거를보고, 관계를 매핑하고, 당신이 이미 논의 한 것을 표현하는 쿼리를 작성해야합니다. SELECT * The Validator: 결과 세트, SQL 텍스트가 아닙니다 쿼리 검증기는 예상 데이터 세트에 설정된 결과를 비교하고 SQL를 내 SQL에 비교하지 않습니다.이것은 여러 솔루션이 작동하는 것을 의미합니다.You can use a subquery or a 필터 with 또는 다른 테이블 별자리, 다른 열 순서, 결과가 일치하는 한, 당신은 통과합니다. JOIN WHERE HAVING SQL 데이터베이스는 예측할 수 없는 순서로 결과를 반환합니다.SQL databases return results in unpredictable orders unless you specify 열 이름은 다를 수 있습니다.플로팅 포인트 정밀도는 시스템에 따라 다릅니다. NULL 처리는 정상적인 비교 작업을 깨는 세 가지 값 논리를 따릅니다 (TRUE, FALSE, NULL). ORDER BY 솔루션: 비교하기 전에 두 결과 세트를 정상화합니다. 컨텐츠 해시로 행을 정렬합니다. 알파벳으로 열을 정렬합니다. 6 개의 십자리 위치로 둥근 움직이는 점 값을 정렬합니다. SQL의 SQL를 사용하여 NULL을 명시적으로 처리하십시오. 이것은 검증자가 합법성에 대해 엄격하게 유지하면서 합법성에 대해 용서 할 수있게 해줍니다. IS NULL 검증은 두 단계로 진행됩니다. 첫째, 귀하의 쿼리는 SQLite WASM을 사용하여 사기 데이터에 대해 로컬로 실행됩니다. 효과가 있다면 즉시 피드백을 얻고 결과가 즉시 표시됩니다. 그런 다음 쿼리는 실제 데이터 세트를 사용하여 서버에 대해 검증됩니다.이 하이브리드 접근 방식은 서버 측 검증의 보안과 함께 로컬 실행의 속도를 제공합니다. 모바일 코딩 : 6 인치 문제 해결 사용자의 60 %는 모바일에 있습니다.이것은 처음에 끔찍했기 때문에 전화에 SQL을 쓰는 것은 비참해야합니다.그러나 나는 공격적인 UX 최적화를 통해 그것을 작동시켰습니다. 데이터베이스 스키마는 하단 시트 상자에 살고 있습니다. 필요할 때 위로 스크립트하고, 필요하지 않을 때 아래로 스크립트합니다.SQL 키워드에는 키보드 위에 자동 완성 도구 표시줄이 있으므로 입력하지 않습니다. 쿼리 로그는 상단에 붙어 있으므로 현재 작업에서 멀리 스크롤하지 않고도 이전 시도를 참조할 수 있습니다.The query logs are sticky at the top so you can reference previous attempts without scrolling away from your current work. SELECT 튜토리얼 시스템은 습관을 사용합니다. 대부분의 웹 애플리케이션은 스크롤 이벤트 중 각 애니메이션 프레임에 요소 위치를 재 계산하여 고정하여 고정된 요소에서 포인터가 50px 떨어져 끝나는 "drifting highlights"가 있습니다.I fixed this by recalculating element positions on each animation frame during scroll events and dynamically adjusting the highlight offset to compensate. requestAnimationFrame 결과 상자는 유연한 커버 레이어로 바닥에서 위로 슬라이딩합니다. 모바일에서는 편집기를 화면 밖으로 밀어 넣을 수 없으므로 결과는 작업 영역을 방해하지 않는 확장 패널에 표시됩니다. 전체 결과를 위해 확장하기 위해 스프링하고 붕괴하도록 스프링하고 코딩을 계속하십시오. AI 조수 : 가격이 제한되어 있기 때문에 나는 그것을 지불합니다. "The Analyst"라고 불리는 AI 힌트 시스템이 있습니다 - 지역의 고위 탐정으로 구성되어 있습니다.그것은 쌍둥이 API를 사용합니다.당일 20 통화로 제한됩니다. 그러나 제한이 특징이되었습니다.당신이 도움을 요청할 기회가 20 개밖에 없다는 것을 알았을 때, 당신은 먼저 자신의 생각을 소모합니다.당신은 증거를 다시 읽습니다.당신은 다른 쿼리를 실험합니다.당신은 검색 바처럼 AI를 취급하는 대신 투쟁을 통해 배웁니다. 이것은 우연히 좋은 디자인이었습니다. 비용 이유로 가격 제한이 필요했습니다. 그것은 SQL에서 사람들을 더 잘 만들었습니다. 기술적 구현은 간단합니다 - 프론트 엔드 POST 요청은 컨텍스트 인식 프롬프트를 구축하고 Gemini API를 호출하는 Netlify 함수입니다. 복잡성은 프롬프트 엔지니어링에있었습니다. 나는 그들이 실제로 도움이 될만큼 명확하면서 학습 도전을 유지하기 위해 충분히 암호화 될 수 있도록 훈련해야했습니다. 너무 모호하고 사용자가 좌절됩니다. 너무 명백하고 당신은 그들에게 대답을 제공합니다. 응답은 본부에서 라디오 통화처럼 모드 스타일로 반영되며 정적 사운드 효과로 완료됩니다. 부족함은 긴장을 창출합니다. 프레젠테이션은 몰입을 만듭니다. 함께 도움을 요청하는 것은 습관이 아닌 전략적 결정을 느끼게합니다. The Structure: Seasons vs The Vault에 대한 리뷰 보기 SQL Case Files에는 두 가지 모드가 있습니다.The Academy (Seasons)는 학습 경로입니다. 운영. 시즌 2는 필터링과 집계를 가르칩니다. 시즌 8은 윈도우 기능에 들어갑니다. 각 시즌에는 SQL을 통해 이야기 미스터리를 해결하는 8-12개의 사례가 포함되어 있습니다. JOIN "The Midnight Train"은 타임 시리즈 데이터에 대한 교훈이 아닙니다. 그것은 당신이 타임 스탬프 쿼리를 사용하여 그들의 마지막 움직임을 재구성하는 실종 승객에 대한 사례입니다. 또는 다중 비교 운영자. BETWEEN Case Vault는 이미 SQL를 알고 인터뷰 수준의 도전을 원하는 사람들을위한 것입니다. 튜토리얼이 없습니다. 방어선이 없습니다. 어떤 SQL 기능이 필요한지에 대한 힌트가 없습니다. 데이터와 질문 만합니다.이 케이스는 프리미엄 또는 잠금 해제 가능한 콘텐츠입니다. 보상 구조는 이것이 다른 모든 학습 플랫폼과 다릅니다. 당신은 포인트를 얻지 못합니다. 당신은 레벨을 올리지 않습니다. 당신은 업적을 해제하지 않습니다. 당신이 사례를 해결하면 이야기는 진행됩니다. 용의자는 고백합니다. 증인은 깨집니다. 신비는 해결됩니다. 복잡한 글을 쓰는 당신의 보상 퀴즈는 narrative가 지불한다는 것입니다. GROUP BY SQL는 플롯을 진행하는 유일한 방법입니다.코드는 퀴즈가 아닙니다 - 그것은 조사 도구입니다.그 프레밍 변화는 모든 차이를 만듭니다. Technical Stack 근처 오락거리 Frontend: React, Tailwind CSS (코어 유틸리티만), 물리학 및 애니메이션을 위한 사용자 지정 JavaScript 데이터베이스: 로컬 실행을 위한 SQLite WASM, 서버 검증을 위한 PostgreSQL Validation: Netlify serverless functions running result set comparis AI: context-aware prompting를 가진 Gemini API 오프라인: 진보적인 웹 앱 아키텍처, 첫 번째 로드에서 모든 자산을 캐시 오프라인 첫 번째 디자인은 첫 번째 방문 후에 모든 것이 연결없이 작동한다는 것을 의미합니다. 사례, 증거, SQLite WASM 실행 시간 - 모두 로컬로 캐시됩니다. 서버없는 기능은 온라인 상태에 있고 검증 할 준비가되었을 때만 화재합니다.이것은 비행기, 기차 또는 다른 어디서나 SQL 신비를 해결하려는 빠르고 반응하는 인터페이스를 제공합니다. 기술 선택은 의도적이었습니다. 구성 요소 재사용 가능성을 위해 반응합니다. Tailwind 핵심 유틸리티는 브라우저에서 컴파일러를 실행할 수 없기 때문에. 애니메이션을위한 사용자 지정 JavaScript는 가벼운 곡선과 타이밍에 대한 정확한 제어가 필요하기 때문에. SQLite WASM는 빠르고 클라이언트 측면에서 완전히 실행되기 때문에. Netlify 기능은 간단하고 저렴하며 자동으로 확장되기 때문에. 왜 이것이 존재하는가 나는 스티커 차트를 필요로하는 어린이와 같은 유능한 성인을 다루는 학습 플랫폼에 지쳤기 때문에 SQL 케이스 파일을 구축했습니다.The gamification trend assumes everyone needs extrinsic motivation through badges, streaks, and leaderboards. 그러나 개발자는 그런 방식으로 작동하지 않습니다.우리는 문제가 흥미 롭기 때문에 문제를 해결합니다.우리는 호기심이 있기 때문에 새로운 것을 배우거나 무언가를 할 필요가 있기 때문에.우리는 매일 연습에 우리를 탓하는 만화 캐릭터가 필요하지 않습니다. SQL Case Files는 내가 원했던 학습 플랫폼입니다. 도전적인 문제, 깨끗한 인터페이스, 이야기 구조, 후원 보상 시스템이 없습니다. 4 주 동안, 15,000 명의 월간 활성 사용자는 내가 이것을 원하는 것에 혼자가 아니라고 제안합니다.그들은 "게임화 된 학습"을 싫어하는 개발자입니다.데이터 과학자들은 실제 문제를 원합니다. 그들은 전략적으로 매일 3 개의 AI 호출을 사용하고 있습니다.그들은 "마침내, 바보처럼 나를 대하지 않는 SQL 게임"과 "사례를 종료 할 때 움직이는 피드백은 이상하게 만족스럽습니다." 시도해 보세요 No signup. No credit card. No email capture. 그냥 가기 , 케이스를 열고 쿼리를 작성하기 시작합니다. 스크래치필스.com 당신의 터미널은 좋은 SQL을 쓸 때 진동합니다.그것은 비유가 아닙니다.