<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel><title>databases | Hugo Ferreira</title>
    <link>https://hugo.ferreira.cc/tags/databases/</link>
    <description>Recent content in Databases by Hugo Ferreira</description>
    <image>
      <title>databases | Hugo Ferreira</title>
      <url>https://hugo.ferreira.cc/hf-bw.jpg</url>
      <link>https://hugo.ferreira.cc/tags/databases/</link>
    </image>
    <generator>Hugo -- 0.124.1</generator>
    <language>en</language>
    <copyright>2000–2024 by Hugo Ferreira · CC BY 4.0</copyright>
    <lastBuildDate>Thu, 26 Oct 2023 09:52:16 +0000</lastBuildDate>
    <atom:link href="https://hugo.ferreira.cc/tags/databases/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>🔗 PRQL - Pipelined Relational Query Language</title>
      <link>https://hugo.ferreira.cc/prql/</link>
      <pubDate>Thu, 26 Oct 2023 09:52:16 +0000</pubDate>
      <guid>https://hugo.ferreira.cc/prql/</guid>
      <description>PRQL
Pipelined Relational Query Language, pronounced “Prequel”
PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement
For example, “Top N by group”:
from employees group role ( sort join_date take 1 ) WITH table_0 AS ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY role ORDER BY join_date ) AS _expr_0 FROM employees ) SELECT * FROM table_0 WHERE _expr_0 &amp;lt;= 1 </description>
      <content:encoded><![CDATA[<p><a href="https://prql-lang.org/">PRQL</a></p>
<blockquote>
<p><strong>P</strong>ipelined <strong>R</strong>elational <strong>Q</strong>uery <strong>L</strong>anguage, pronounced “Prequel”</p>
<p>PRQL is a modern language for transforming data
— a simple, powerful, pipelined SQL replacement</p>
</blockquote>
<p>For example, “Top N by group”:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">from</span><span class="w"> </span><span class="n">employees</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">group</span><span class="w"> </span><span class="k">role</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">sort</span><span class="w"> </span><span class="n">join_date</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">take</span><span class="w"> </span><span class="mi">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">WITH</span><span class="w"> </span><span class="n">table_0</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">SELECT</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="o">*</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">ROW_NUMBER</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="k">role</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">join_date</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">_expr_0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">FROM</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">employees</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">SELECT</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="o">*</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">FROM</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">table_0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">WHERE</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">_expr_0</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="mi">1</span><span class="w">
</span></span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>🏞 SQL Iceberg Meme Explanation</title>
      <link>https://hugo.ferreira.cc/sql-iceberg-explanation/</link>
      <pubDate>Wed, 06 Sep 2023 13:07:34 +0000</pubDate>
      <guid>https://hugo.ferreira.cc/sql-iceberg-explanation/</guid>
      <description>“SQL Iceberg Meme” (Avestura&amp;rsquo;s Blog)
Explaining The Postgres Meme
One of the best ways to learn something is to explain it, and this blog post aims to do exactly that. Let&amp;rsquo;s review and explain every part of this meme, while unraveling its meaning and secrets.</description>
      <content:encoded><![CDATA[<figure><a href="https://avestura.dev/blog/explaining-the-postgres-meme">
    <img loading="lazy" src="sql-iceberg-meme.webp"
         alt="Iceberg meme indicating the deeper levels of understanding databases, from novice at the top to deep expert at the bottom"/> </a><figcaption>
            <p>“<a href="https://avestura.dev/blog/explaining-the-postgres-meme">SQL Iceberg Meme</a>”
                    <a href="https://avestura.dev">(Avestura&rsquo;s Blog)</a></p>
        </figcaption>
</figure>

<p><a href="https://avestura.dev/blog/explaining-the-postgres-meme">Explaining The Postgres Meme</a></p>
<blockquote>
<p>One of the best ways to learn something is to explain it, and this blog post aims to do exactly that. Let&rsquo;s review and explain every part of this meme, while unraveling its meaning and secrets.</p>
</blockquote>
<!-- TODO: Review captions format -->
]]></content:encoded>
    </item>
    <item>
      <title>🔗 Navicat -- Premium Overview -- A cross-database admin and data migration GUI admin tools. It supports MySQL, SQL Server, SQLite, SQL Azure, Oracle &amp; PostgreSQL for Windows, Mac OS X &amp; Linux -- Download Now!</title>
      <link>https://hugo.ferreira.cc/navicat-premium-overview-a-cross-database/</link>
      <pubDate>Wed, 04 May 2011 07:07:28 +0000</pubDate>
      <guid>https://hugo.ferreira.cc/navicat-premium-overview-a-cross-database/</guid>
      <description>Navicat &amp;ndash; Premium Overview &amp;ndash; A cross-database admin and data migration GUI admin tools. It supports MySQL, SQL Server, SQLite, SQL Azure, Oracle &amp;amp; PostgreSQL for Windows, Mac OS X &amp;amp; Linux &amp;ndash; Download Now!
Navicat Premium is a multi-connections Database Administration tool allowing you to connect to MySQL, SQL Server, SQLite, Oracle and PostgreSQL databases simultaneously within a single application, making database administration to multiple kinds of database so easy.</description>
      <content:encoded><![CDATA[<p><a href="http://www.navicat.com/en/products/navicat_premium/premium_overview.html">Navicat &ndash; Premium Overview &ndash; A cross-database admin and data
migration GUI admin tools. It supports MySQL, SQL Server, SQLite, SQL
Azure, Oracle &amp; PostgreSQL for Windows, Mac OS X &amp; Linux &ndash; Download
Now!</a></p>
<blockquote>
<p>Navicat Premium is a multi-connections Database Administration tool
allowing you to connect to MySQL, SQL Server, SQLite, Oracle and
PostgreSQL databases simultaneously within a single application,
making database administration to multiple kinds of database so easy.</p>
</blockquote>
]]></content:encoded>
    </item>
  </channel>
</rss>
