1<!doctype html> 2<html class="h-100" lang="en"> 3<head> 4 <meta charset="utf-8" /> 5 <title>SQLforDevs.com - Ebooks</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 <meta name="description" content="I've written some books in addition to the many articles on SQL For Devs." /> 8 <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak="x-cloak"],[x-cloak=""] {display: none !important;}[wire\:cloak="wire:cloak"],[wire\:cloak=""] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 9 <link rel="preload" as="style" href="https://sqlfordevs.com/build/assets/app-BWjJr8sc.css" /><link rel="modulepreload" as="script" href="https://sqlfordevs.com/build/assets/main-CaQpsnJj.js" /><link rel="modulepreload" as="script" href="https://sqlfordevs.com/build/assets/preload-helper-CwIXHf_L.js" /><link rel="stylesheet" href="https://sqlfordevs.com/build/assets/app-BWjJr8sc.css" data-navigate-track="reload" />
9<script type="module" src="https://sqlfordevs.com/build/assets/main-CaQpsnJj.js" data-navigate-track="reload"></script>
9 <link rel="icon" href="https://sqlfordevs.com/favicon.ico" sizes="any"> 10 <link rel="icon" type="image/png" sizes="16x16" href="https://sqlfordevs.com/build/assets/favicon-16x16-CNx8FWVz.png"> 11 <link rel="icon" type="image/png" sizes="32x32" href="https://sqlfordevs.com/build/assets/favicon-32x32-D8t-ER3X.png"> 12 <link rel="icon" type="image/png" sizes="96x96" href="https://sqlfordevs.com/build/assets/favicon-96x96-Cv4Gl5x6.png"> 13 <link rel="canonical" href="https://sqlfordevs.com/books+courses" /> 14 <meta name="csrf-token" content=""> 15 <meta property="og:type" content="website"> 16 <meta property="og:url" content="https://sqlfordevs.com/books+courses"> 17 <meta property="og:title" content="SQLforDevs.com - Ebooks"> 18 <meta property="og:description" content="I've written some books in addition to the many articles on SQL For Devs."> 19 <meta property="og:image" content="https://sqlfordevs.com/build/assets/twittercard-CedOatTH.png"> 20 <meta name="twitter:card" content="summary_large_image"> 21 <meta property="twitter:url" content="https://sqlfordevs.com/books+courses"> 22 <meta name="twitter:creator" content="@tobias_petry"> 23 <meta name="twitter:title" content="SQLforDevs.com - Ebooks"> 24 <meta name="twitter:description" content="I've written some books in addition to the many articles on SQL For Devs."> 25 <meta name="twitter:image" content="https://sqlfordevs.com/build/assets/twittercard-CedOatTH.png"> 26 </head> 27<body class="d-flex flex-column h-100"><a href="https://sqlfordevs.com/cdn-cgi/content?id=YIknryA5XhNML4s3bBB.JgHUhWdXbV7v4zQmLOHmbBk-1791065413.046754-1.2.1.1-JXx0jmZu16zQGONU_dDBL_F4RC7m4ce9Uy0h8Xu9C7ZVZ1v6DmuHM4yp2BD.08pu" aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a> 28 29 30 <div class="bg-dark text-white app-multicolor-border" style="background-image:url(https://sqlfordevs.com/build/assets/pattern-1-ZNqyR-1e.svg)"> 31 <div class="container-lg"> 32 <div class="row justify-content-center"> 33 <div class="col-md-10 col-lg-8"> 34 <nav x-data="{ open: false }" class="navbar navbar-expand-lg navbar-dark pb-6 pb-md-9"> 35 <div class="container-fluid mx-0 g-0"> 36 <a class="navbar-brand d-flex align-items-center d-lg-none" href="https://sqlfordevs.com"> 37 <img src="https://sqlfordevs.com/build/assets/logo-Dk2SdJWS.svg" width="28" height="28" class="me-3"> 38 SQL for Devs 39 </a> 40 <button class="navbar-toggler" type="button" @click="open = !open"> 41 <span class="navbar-toggler-icon"></span> 42 </button> 43 <div class="text-center d-none d-lg-flex flex-basis-100 flex-lg-basis-auto" :style="open && `display:block!important`"> 44 <a class="navbar-brand d-none d-lg-flex align-items-center pe-lg-6 me-0" href="https://sqlfordevs.com"> 45 <img src="https://sqlfordevs.com/build/assets/logo-Dk2SdJWS.svg" width="28" height="28" class="me-3"> 46 SQL for Devs 47 </a> 48 <ul class="navbar-nav justify-content-start w-100"> 49 <li class="nav-item "> 50 <a class="nav-link" href="https://sqlfordevs.com/tips"> 51 Tips 52 </a> 53 </li> 54 <li class="nav-item "> 55 <a class="nav-link" href="https://sqlfordevs.com/books+courses"> 56 Books + Courses 57 </a> 58 </li> 59 <li class="nav-item "> 60 <a class="nav-link" href="https://sqlfordevs.com/newsletter"> 61 Newsletter 62 </a> 63 </li> 64 </ul> 65 </div> 66 </div> 67</nav> 68 </div> 69 <div class="col-md-10 col-lg-8 pb-6 pb-md-9"> 70 <h6 class="text-uppercase text-warning mb-4"> 71 More Knowledge. Less Magic. 72</h6> 73<h1 class="font-serif display-3 mb-5"> 74 SQL is not Complex 75</h1> 76<p class="fs-lg mb-0"> 77 A better understanding of SQL changes the database black box perception to a time saver reducing development effort. 78</p> 79 </div> 80 </div> 81 </div> 82 </div> 83 84 <section class="mt-6"> 85 <div class="container-lg"> 86 <div class="row justify-content-md-center"> 87 88 89 <div class="col-md-10 col-lg-8"> 90 91 <h2 id="Querying Data" class="display-3 mb-4 text-center">My Ebooks + Courses</h2> 92 <p class="mb-9"> 93 I've created more educational than the many articles on SQL For Devs.
94 If you want to support me, I would be happy if you buy my book about database indexes â¤ï¸ 95 </p> 96 </div> 97 </div> 98 99 <div class="row"> 100 <div class="col-12"> 101 <div class="position-absolute top-center top-md-start text-warning mt-n8 ms-md-n8"> 102 <svg width="185" height="186" viewBox="0 0 185 186" fill="none" xmlns="http://www.w3.org/2000/svg"> 103 <circle cx="2" cy="2" r="2" fill="currentColor"></circle><circle cx="22" cy="2" r="2" fill="currentColor"></circle><circle cx="42" cy="2" r="2" fill="currentColor"></circle><circle cx="62" cy="2" r="2" fill="currentColor"></circle><circle cx="82" cy="2" r="2" fill="currentColor"></circle><circle cx="102" cy="2" r="2" fill="currentColor"></circle><circle cx="122" cy="2" r="2" fill="currentColor"></circle><circle cx="142" cy="2" r="2" fill="currentColor"></circle><circle cx="162" cy="2" r="2" fill="currentColor"></circle><circle cx="182" cy="2" r="2" fill="currentColor"></circle><circle cx="2" cy="22" r="2" fill="currentColor"></circle><circle cx="22" cy="22" r="2" fill="currentColor"></circle><circle cx="42" cy="22" r="2" fill="currentColor"></circle><circle cx="62" cy="22" r="2" fill="currentColor"></circle><circle cx="82" cy="22" r="2" fill="currentColor"></circle><circle cx="102" cy="22" r="2" fill="currentColor"></circle><circle cx="122" cy="22" r="2" fill="currentColor"></circle><circle cx="142" cy="22" r="2" fill="currentColor"></circle><circle cx="162" cy="22" r="2" fill="currentColor"></circle><circle cx="182" cy="22" r="2" fill="currentColor"></circle><circle cx="2" cy="42" r="2" fill="currentColor"></circle><circle cx="22" cy="42" r="2" fill="currentColor"></circle><circle cx="42" cy="42" r="2" fill="currentColor"></circle><circle cx="62" cy="42" r="2" fill="currentColor"></circle><circle cx="82" cy="42" r="2" fill="currentColor"></circle><circle cx="102" cy="42" r="2" fill="currentColor"></circle><circle cx="122" cy="42" r="2" fill="currentColor"></circle><circle cx="142" cy="42" r="2" fill="currentColor"></circle><circle cx="162" cy="42" r="2" fill="currentColor"></circle><circle cx="182" cy="42" r="2" fill="currentColor"></circle><circle cx="2" cy="62" r="2" fill="currentColor"></circle><circle cx="22" cy="62" r="2" fill="currentColor"></circle><circle cx="42" cy="62" r="2" fill="currentColor"></circle><circle cx="62" cy="62" r="2" fill="currentColor"></circle><circle cx="82" cy="62" r="2" fill="currentColor"></circle><circle cx="102" cy="62" r="2" fill="currentColor"></circle><circle cx="122" cy="62" r="2" fill="currentColor"></circle><circle cx="142" cy="62" r="2" fill="currentColor"></circle><circle cx="162" cy="62" r="2" fill="currentColor"></circle><circle cx="182" cy="62" r="2" fill="currentColor"></circle><circle cx="2" cy="82" r="2" fill="currentColor"></circle><circle cx="22" cy="82" r="2" fill="currentColor"></circle><circle cx="42" cy="82" r="2" fill="currentColor"></circle><circle cx="62" cy="82" r="2" fill="currentColor"></circle><circle cx="82" cy="82" r="2" fill="currentColor"></circle><circle cx="102" cy="82" r="2" fill="currentColor"></circle><circle cx="122" cy="82" r="2" fill="currentColor"></circle><circle cx="142" cy="82" r="2" fill="currentColor"></circle><circle cx="162" cy="82" r="2" fill="currentColor"></circle><circle cx="182" cy="82" r="2" fill="currentColor"></circle><circle cx="2" cy="102" r="2" fill="currentColor"></circle><circle cx="22" cy="102" r="2" fill="currentColor"></circle><circle cx="42" cy="102" r="2" fill="currentColor"></circle><circle cx="62" cy="102" r="2" fill="currentColor"></circle><circle cx="82" cy="102" r="2" fill="currentColor"></circle><circle cx="102" cy="102" r="2" fill="currentColor"></circle><circle cx="122" cy="102" r="2" fill="currentColor"></circle><circle cx="142" cy="102" r="2" fill="currentColor"></circle><circle cx="162" cy="102" r="2" fill="currentColor"></circle><circle cx="182" cy="102" r="2" fill="currentColor"></circle><circle cx="2" cy="122" r="2" fill="currentColor"></circle><circle cx="22" cy="122" r="2" fill="currentColor"></circle><circle cx="42" cy="122" r="2" fill="currentColor"></circle><circle cx="62" cy="122" r="2" fill="currentColor"></circle><circle cx="82" cy="122" r="2" fill="currentColor"></circle><circle cx="102" cy="122" r="2" fill="currentColor"></circle><circle cx="122" cy="122" r="2" fill="currentColor"></circle><circle cx="142" cy="122" r="2" fill="currentColor"></circle><circle cx="162" cy="122" r="2" fill="currentColor"></circle><circle cx="182" cy="122" r="2" fill="currentColor"></circle><circle cx="2" cy="142" r="2" fill="currentColor"></circle><circle cx="22" cy="142" r="2" fill="currentColor"></circle><circle cx="42" cy="142" r="2" fill="currentColor"></circle><circle cx="62" cy="142" r="2" fill="currentColor"></circle><circle cx="82" cy="142" r="2" fill="currentColor"></circle><circle cx="102" cy="142" r="2" fill="currentColor"></circle><circle cx="122" cy="142" r="2" fill="currentColor"></circle><circle cx="142" cy="142" r="2" fill="currentColor"></circle><circle cx="162" cy="142" r="2" fill="currentColor"></circle><circle cx="182" cy="142" r="2" fill="currentColor"></circle><circle cx="2" cy="162" r="2" fill="currentColor"></circle><circle cx="22" cy="162" r="2" fill="currentColor"></circle><circle cx="42" cy="162" r="2" fill="currentColor"></circle><circle cx="62" cy="162" r="2" fill="currentColor"></circle><circle cx="82" cy="162" r="2" fill="currentColor"></circle><circle cx="102" cy="162" r="2" fill="currentColor"></circle><circle cx="122" cy="162" r="2" fill="currentColor"></circle><circle cx="142" cy="162" r="2" fill="currentColor"></circle><circle cx="162" cy="162" r="2" fill="currentColor"></circle><circle cx="182" cy="162" r="2" fill="currentColor"></circle><circle cx="2" cy="182" r="2" fill="currentColor"></circle><circle cx="22" cy="182" r="2" fill="currentColor"></circle><circle cx="42" cy="182" r="2" fill="currentColor"></circle><circle cx="62" cy="182" r="2" fill="currentColor"></circle><circle cx="82" cy="182" r="2" fill="currentColor"></circle><circle cx="102" cy="182" r="2" fill="currentColor"></circle><circle cx="122" cy="182" r="2" fill="currentColor"></circle><circle cx="142" cy="182" r="2" fill="currentColor"></circle><circle cx="162" cy="182" r="2" fill="currentColor"></circle><circle cx="182" cy="182" r="2" fill="currentColor"></circle> 104 </svg> 105 </div> 106 107 <div class="card card-lg rounded mb-9"> 108 <div class="row gx-0"> 109 <div class="col-md order-md-1 d-flex align-items-end bg-white"> 110 <a href="https://sqlfordevs.com/books+courses/timescale"> 111 <img class="card-img-top" src="https://sqlfordevs.com/build/assets/ad-square-Bj8NM97b.png" alt=""> 112 </a> 113 </div> 114 <div class="col-md-5 order-md-0 d-flex align-items-center bg-white"> 115 <div class="card-body text-center"> 116 <h1 class="font-sans-serif mb-4 mt-auto"> 117 Make Analytics Fast 118 </h1> 119 <p> 120 Your current database will struggle calculating statistics on many rows. 121 Learn to create fast dashboards by using TimescaleDB which is a database optimized for fast time-based analytics. 122 </p> 123 <a class="h6 text-uppercase text-decoration-none mt-auto" href="https://sqlfordevs.com/books+courses/timescale"> 124 View Course <i class="fe fe-arrow-right"></i> 125 </a> 126 127 </div> 128 </div> 129 </div> 130 </div> 131 132 <div class="card card-lg rounded mb-9"> 133 <div class="row gx-0"> 134 <div class="col-md order-md-1 d-flex align-items-end bg-primary"> 135 <a href="https://sqlfordevs.com/books+courses/indexing"> 136 <img class="card-img-top" src="https://sqlfordevs.com/build/assets/teaser-ebook-indexing-BrZBdpfQ.png" alt=""> 137 </a> 138 </div> 139 <div class="col-md-5 order-md-0 d-flex align-items-center bg-white"> 140 <div class="card-body text-center"> 141 <h1 class="font-sans-serif mb-4 mt-auto"> 142 Indexing Beyond The Basics 143 </h1> 144 <p> 145 Database indexes are not complicated; they just have been explained very bad. 146 Learn to create perfect indexes for your slow queries with a new approach aided by tons of illustrations. 147 </p> 148 <a class="h6 text-uppercase text-decoration-none mt-auto" href="https://sqlfordevs.com/books+courses/indexing"> 149 View Book <i class="fe fe-arrow-right"></i> 150 </a> 151 152 </div> 153 </div> 154 </div> 155 </div> 156 157 <div class="card card-lg rounded"> 158 <div class="row gx-0"> 159 <div class="col-md order-md-1 d-flex align-items-end bg-primary"> 160 <a href="https://sqlfordevs.com/books+courses/next-level"> 161 <img class="card-img-top" src="https://sqlfordevs.com/build/assets/teaser-ebook-next-level-DBDan1Ck.png" alt=""> 162 </a> 163 </div> 164 <div class="col-md-5 order-md-0 d-flex align-items-center bg-white"> 165 <div class="card-body text-center"> 166 <h1 class="font-sans-serif mb-4 mt-auto"> 167 Next-Level Database Techniques 168 </h1> 169 <p> 170 You don't know SQL. Aside from basic CRUD statements, you haven't used any advanced database features. This free ebook will share many recipes to make development faster by using a lot of stuff you probably never heard of. </p> 171 <a class="h6 text-uppercase text-decoration-none mt-auto" href="https://sqlfordevs.com/books+courses/next-level"> 172 View Book <i class="fe fe-arrow-right"></i> 173 </a> 174 175 </div> 176 </div> 177 </div> 178 </div> 179 </div> 180 </div> 181 </div> 182 </section> 183 184 <footer class="footer py-6 mt-6 mt-md-9 bg-dark border-multicolor"> 185 <div class="container-lg"> 186 <div class="row align-items-center justify-content-center text-gray-600"> 187 <div class="col-md-10 col-lg-8"> 188 <div class="row g-0"> 189 <div class="col-12 col-sm-auto text-center text-sm-left"> 190 <ul class="list-inline list-unstyled small mb-0"> 191 <li class="list-inline-item"> 192 <a href="https://sqlfordevs.com/privacy" class="text-reset">Privacy</a> 193 </li> 194 <li class="list-inline-item"> 195 <a href="https://sqlfordevs.com/terms-and-conditions" class="text-reset">Terms & Conditions</a> 196 </li> 197 <li class="list-inline-item"> 198 <a href="https://sqlfordevs.com/imprint" class="text-reset">Contact (Imprint)</a> 199 </li> 200 </ul> 201 </div> 202 <div class="col-12 col-sm order-first order-sm-last text-center text-sm-end"> 203 <ul class="list-inline list-unstyled mb-2 mb-sm-0"> 204 <li class="list-inline-item"> 205 <a class="icon icon-sm text-reset" href="https://x.com/tobias_petry" target="_blank" rel="noopener"> 206 <svg class="size-6" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-twitter-x" viewBox="0 0 16 16"> 207 <path d="M12.6.75h2.454l-5.36 6.142L16 15.25h-4.937l-3.867-5.07-4.425 5.07H.316l5.733-6.57L0 .75h5.063l3.495 4.633L12.601.75Zm-.86 13.028h1.36L4.323 2.145H2.865z"/> 208</svg> </a> 209 </li> 210 <li class="list-inline-item ms-1"> 211 <a class="icon icon-sm text-reset" href="https://www.linkedin.com/in/t-petry" target="_blank" rel="noopener"> 212 <svg class="size-6" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-linkedin" viewB
212ox="0 0 16 16"> 213 <path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z"/> 214</svg> </a> 215 </li> 216 </ul> 217 </div> 218 </div> 219 </div> 220 </div> 221 </div> 222</footer> 223
223<script src="https://sqlfordevs.com/js/script.js" data-domain="sqlfordevs.io" defer></script>
223 224
224<script src="https://sqlfordevs.com/a/script.js" defer></script>
224 225 226
226<script data-navigate-once="true">window.livewireScriptConfig = {"csrf":null,"uri":"https:\/\/sqlfordevs.com\/livewire-d21baec3\/update","moduleUrl":"https:\/\/sqlfordevs.com\/livewire-d21baec3","progressBar":"","nonce":""};</script>
vendor: 1 bytes, line 226
226
227<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"fdc9c61259f34cc6b1e69dcd5d90550e","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 227
227
228<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a44f468f8fa3bae6',t:'MTc5MTA2NTQxMw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
228</body> 229</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.