<?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/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>MySQL Online｜林鼎淵 Dean Lin</title>
    <link>https://deanlin.net/tags/mysql-online/</link>
    <image><url>https://deanlin.net/images/author_hu_aa256fc934e9a932.jpg</url><title>MySQL Online｜林鼎淵 Dean Lin</title><link>https://deanlin.net/tags/mysql-online/</link><width>144</width><height>144</height></image>
    <description>林鼎淵（Dean Lin）的部落格：生成式 AI 企業內訓講師、外商資安公司軟體專家、7 本書作者。400 多篇文章用白話分享生成式 AI 實戰、Claude Code 與 Vibe Coding 教學、團隊合作與職場成長。</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <copyright>© 2020–2026 林鼎淵 Dean Lin</copyright>
    <lastBuildDate>Fri, 26 Feb 2021 13:16:12 +0800</lastBuildDate>
    <atom:link href="https://deanlin.net/tags/mysql-online/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>線上 SQL 語法測試網站(SQL fiddle、MySQL Online)</title>
      <link>https://deanlin.net/blog/202102/online-sql-playgrounds/</link>
      <pubDate>Fri, 26 Feb 2021 13:16:12 +0800</pubDate>
      <guid>https://deanlin.net/blog/202102/online-sql-playgrounds/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>技術教學</category>
      <description>當朋友問你 SQL 語法問題時如果沒有現成的資料庫真的很難幫上忙，並且也不確定自己的回答是不是真的能解決問題；今天就來介紹兩個我常用的 SQL 語法測試網站，並透過解說朋友遇到的題目讓大家快速了解網站的使用方式。</description>
      <media:content url="https://deanlin.net/blog/202102/online-sql-playgrounds/images/online-sql-playgrounds-og_hu_1ab28ebc893ef471.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<p>當朋友問你 SQL 語法問題時如果沒有現成的資料庫真的很難幫上忙，並且也不確定自己的回答是不是真的能解決問題；今天就來介紹兩個我常用的 SQL 語法測試網站，並透過解說朋友遇到的題目讓大家快速了解網站的使用方式。</p>
<pre tabindex="0"><code>一、SQL Fiddle 簡介
二、MySQL Online 簡介
三、題目：找出每個 department 中 score 最高的兩個人並以 score 進行排序
  1. 用 SQL Fiddle 解題
  2. 用 MySQL Online 解題
</code></pre><p><img src="https://deanlin.net/blog/202102/online-sql-playgrounds/images/online-sql-playgrounds-01.webp" width="1400" height="783" alt="線上 SQL 語法測試網站(SQL fiddle、MySQL Online)（圖 1）" fetchpriority="high" decoding="async"></p>
<h2 id="一sql-fiddle-簡介">一、SQL Fiddle 簡介<a class="h-anchor" href="#%e4%b8%80sql-fiddle-%e7%b0%a1%e4%bb%8b" aria-label="這個段落的連結"></a></h2>
<blockquote>
<p><strong>網址：<a href="http://sqlfiddle.com/">http://sqlfiddle.com/</a></strong></p>
</blockquote>
<h3 id="支援資料庫版本">支援資料庫版本：<a class="h-anchor" href="#%e6%94%af%e6%8f%b4%e8%b3%87%e6%96%99%e5%ba%ab%e7%89%88%e6%9c%ac" aria-label="這個段落的連結"></a></h3>
<a class="linkcard" href="https://sheetsu.com/tables/507fea70b1" target="_blank" rel="noopener">
  <span class="lc-body">
    <span class="lc-title">Table</span>
    <span class="lc-site"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M7 17 17 7M8.5 7H17v8.5"/></svg>sheetsu.com</span>
  </span>
</a>

<h3 id="介面說明">介面說明：<a class="h-anchor" href="#%e4%bb%8b%e9%9d%a2%e8%aa%aa%e6%98%8e" aria-label="這個段落的連結"></a></h3>
<ol>
<li><strong>選擇資料庫及版本</strong></li>
<li><strong>DDL 區域</strong>：CREATE TABLE, INSERT 都在這個地方輸入，按下『Build Schema』即可生成 Schema；<code><strong>要先生成Schema才能執行SQL</strong></code></li>
<li><strong>DML 區域</strong>：資料庫操作語言區域</li>
<li><strong>Result</strong>：顯示執行結果</li>
</ol>
<p><img src="https://deanlin.net/blog/202102/online-sql-playgrounds/images/online-sql-playgrounds-02.webp" width="1399" height="762" alt="介面說明：（圖 2）" loading="lazy" decoding="async"></p>
<h2 id="二mysql-online-簡介">二、MySQL Online 簡介<a class="h-anchor" href="#%e4%ba%8cmysql-online-%e7%b0%a1%e4%bb%8b" aria-label="這個段落的連結"></a></h2>
<blockquote>
<p><strong>網址：<a href="https://paiza.io/en/projects/new?language=mysql">https://paiza.io/en/projects/new?language=mysql</a></strong></p>
</blockquote>
<h3 id="介面說明-1">介面說明：<a class="h-anchor" href="#%e4%bb%8b%e9%9d%a2%e8%aa%aa%e6%98%8e-1" aria-label="這個段落的連結"></a></h3>
<ol>
<li><strong>選擇測試語言</strong>：除了 MySQL 外，他還能測試 C、Java、R、php…</li>
<li><strong>程式碼區域</strong>：他的DDL與DML是混合在一起的，所以要測試就全部貼上去</li>
<li><strong>Result</strong>：顯示執行結果</li>
</ol>
<p><img src="https://deanlin.net/blog/202102/online-sql-playgrounds/images/online-sql-playgrounds-03.webp" width="1399" height="882" alt="介面說明：（圖 3）" loading="lazy" decoding="async"></p>
<h2 id="三題目找出每個-department-中-score-最高的兩個人並符合輸出結果的排序">三、題目：找出每個 department 中 score 最高的兩個人，並符合輸出結果的排序<a class="h-anchor" href="#%e4%b8%89%e9%a1%8c%e7%9b%ae%e6%89%be%e5%87%ba%e6%af%8f%e5%80%8b-department-%e4%b8%ad-score-%e6%9c%80%e9%ab%98%e7%9a%84%e5%85%a9%e5%80%8b%e4%ba%ba%e4%b8%a6%e7%ac%a6%e5%90%88%e8%bc%b8%e5%87%ba%e7%b5%90%e6%9e%9c%e7%9a%84%e6%8e%92%e5%ba%8f" aria-label="這個段落的連結"></a></h2>
<h3 class="h-nomark" id="-生成題目資料表的-sql-">⚒️ 生成題目資料表的 SQL :<a class="h-anchor" href="#-%e7%94%9f%e6%88%90%e9%a1%8c%e7%9b%ae%e8%b3%87%e6%96%99%e8%a1%a8%e7%9a%84-sql-" aria-label="這個段落的連結"></a></h3>
<div class="highlight"><pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#ff7b72">CREATE</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">TABLE</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span>(<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">  </span>id<span style="color:#6e7681"> </span>INT,<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">  </span>name<span style="color:#6e7681"> </span>varchar(<span style="color:#a5d6ff">50</span>),<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">  </span>score<span style="color:#6e7681"> </span>INT,<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">  </span>department_id<span style="color:#6e7681">  </span>INT<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">CREATE</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">TABLE</span><span style="color:#6e7681"> </span>department<span style="color:#6e7681"> </span>(<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">  </span>id<span style="color:#6e7681"> </span>INT,<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">  </span>name<span style="color:#6e7681"> </span>varchar(<span style="color:#a5d6ff">50</span>)<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">1</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;John&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">83</span>,<span style="color:#a5d6ff">1</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">2</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Yannis&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">88</span>,<span style="color:#a5d6ff">2</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">3</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Victor&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">83</span>,<span style="color:#a5d6ff">1</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">4</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Jimmy&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">83</span>,<span style="color:#a5d6ff">3</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">5</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Richard&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">88</span>,<span style="color:#a5d6ff">1</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">6</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Hens&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">82</span>,<span style="color:#a5d6ff">2</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">7</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Peter&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">89</span>,<span style="color:#a5d6ff">2</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">8</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Brian&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">77</span>,<span style="color:#a5d6ff">1</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">9</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Kelvin&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">90</span>,<span style="color:#a5d6ff">3</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>employee<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">10</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Ben&#39;</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">80</span>,<span style="color:#a5d6ff">3</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>department<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">1</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Sales&#39;</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>department<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">2</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Operator&#39;</span>);<span style="color:#6e7681">
</span></span></span><span style="display:flex;"><span><span style="color:#ff7b72">INSERT</span><span style="color:#6e7681"> </span><span style="color:#ff7b72">INTO</span><span style="color:#6e7681"> </span>department<span style="color:#6e7681"> </span><span style="color:#ff7b72">VALUES</span><span style="color:#6e7681"> </span>(<span style="color:#a5d6ff">3</span>,<span style="color:#6e7681"> </span><span style="color:#a5d6ff">&#39;Development&#39;</span>);<span style="color:#6e7681">
</span></span></span></code></pre></div><p class="code-source">原始碼：<a href="https://gist.github.com/dean9703111/1a1e64627d699759e01e8f15fdf50518" rel="noopener">employee_score_question.sql</a>（GitHub Gist）</p>
<h3 id="目標輸出結果">目標輸出結果：<a class="h-anchor" href="#%e7%9b%ae%e6%a8%99%e8%bc%b8%e5%87%ba%e7%b5%90%e6%9e%9c" aria-label="這個段落的連結"></a></h3>
<a class="linkcard" href="https://sheetsu.com/tables/339e86faf8" target="_blank" rel="noopener">
  <span class="lc-body">
    <span class="lc-title">Table</span>
    <span class="lc-site"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M7 17 17 7M8.5 7H17v8.5"/></svg>sheetsu.com</span>
  </span>
</a>

<blockquote class="pullquote"><p>這個題目表面上看起來很簡單，實際做起來會遇到一些沒想到的問題，有興趣的小夥伴建議自己先玩玩不要直接看答案，文章後面也會說明這兩種編輯器的最大差異</p>
</blockquote>
<hr>
<h3 class="h-nomark" id="1-用-sql-fiddle-解題">1. 用 SQL Fiddle 解題<a class="h-anchor" href="#1-%e7%94%a8-sql-fiddle-%e8%a7%a3%e9%a1%8c" aria-label="這個段落的連結"></a></h3>
<blockquote>
<p>你的 <strong>SQL 版本會被限制在 5.6</strong>，你需要在許多好用函數都無法使用的狀態下完成這個題目</p>
</blockquote>
<p><strong>解題思路</strong>：因為 5.6 並沒有 row_number() 這個函數，所以我們要自己製作出來；另外多利用 subquery 的概念讓解答符合題目的輸出結果。</p>
<figure class="figure"><img src="https://deanlin.net/blog/202102/online-sql-playgrounds/images/online-sql-playgrounds-04.webp" width="1400" height="1098" alt="解答的原始碼在這裡喔！" loading="lazy" decoding="async">
  <figcaption><strong>解答的<a href="https://gist.github.com/dean9703111/1cd40fc06a6d78bb592cb83b1b2422ce">原始碼在這裡喔！</a></strong></figcaption>
</figure>

<h3 class="h-nomark" id="2-用-mysql-online-解題">2. 用 MySQL Online 解題<a class="h-anchor" href="#2-%e7%94%a8-mysql-online-%e8%a7%a3%e9%a1%8c" aria-label="這個段落的連結"></a></h3>
<blockquote>
<p>你的 <strong>SQL 版本為 8.0</strong>，你解題的重點便在於對新的函數是否熟悉</p>
</blockquote>
<p><strong>解題思路</strong>：MySQL 8.0 是一個重大更新，ROW_NUMBER 這個函數就能讓你以輕鬆的姿態搞定這個題目，如果你不熟悉可以<a href="https://www.begtut.com/mysql/mysql-row-number-function.html">參考這份文檔</a>。</p>
<figure class="figure"><img src="https://deanlin.net/blog/202102/online-sql-playgrounds/images/online-sql-playgrounds-05.webp" width="1400" height="859" alt="解答的原始碼在這裡喔！" loading="lazy" decoding="async">
  <figcaption><strong>解答的<a href="https://gist.github.com/dean9703111/b4bbcc0ff66d2544aeee18c89f9f63ad">原始碼在這裡喔！</a></strong></figcaption>
</figure>

<hr>
<blockquote class="pullquote"><p>我的解答僅供參考(尚未優化)，有興趣的朋友可以在底下留言分享你的做法喔～希望這篇文章能幫助臨時需要寫 SQL 的朋友</p>
</blockquote>
]]></content:encoded>
    </item>
  </channel>
</rss>
