線上 SQL 語法測試網站(SQL fiddle、MySQL Online)

林鼎淵
Dean Lin
Published in
Feb 26, 2021

--

當朋友問你 SQL 語法問題時如果沒有現成的資料庫真的很難幫上忙,並且也不確定自己的回答是不是真的能解決問題;今天就來介紹兩個我常用的 SQL 語法測試網站,並透過解說朋友遇到的題目讓大家快速了解網站的使用方式。

一、SQL Fiddle 簡介二、MySQL Online 簡介三、題目:找出每個 department 中 score 最高的兩個人並以 score 進行排序
1. 用 SQL Fiddle 解題
2. 用 MySQL Online 解題

一、SQL Fiddle 簡介

網址:http://sqlfiddle.com/

支援資料庫版本

介面說明:

  1. 選擇資料庫及版本
  2. DDL 區域:CREATE TABLE, INSERT 都在這個地方輸入,按下『Build Schema』即可生成 Schema;要先生成Schema才能執行SQL
  3. DML 區域:資料庫操作語言區域
  4. Result:顯示執行結果

二、MySQL Online 簡介

網址:https://paiza.io/en/projects/new?language=mysql

介面說明:

  1. 選擇測試語言:除了 MySQL 外,他還能測試 C、Java、R、php…
  2. 程式碼區域:他的DDL與DML是混合在一起的,所以要測試就全部貼上去
  3. Result:顯示執行結果

三、題目:找出每個 department 中 score 最高的兩個人,並符合輸出結果的排序

⚒️ 生成題目資料表的 SQL :

目標輸出結果:

這個題目表面上看起來很簡單,實際做起來會遇到一些沒想到的問題,有興趣的小夥伴建議自己先玩玩不要直接看答案,文章後面也會說明這兩種編輯器的最大差異

1. 用 SQL Fiddle 解題

你的 SQL 版本會被限制在 5.6,你需要在許多好用函數都無法使用的狀態下完成這個題目

解題思路:因為 5.6 並沒有 row_number() 這個函數,所以我們要自己製作出來;另外多利用 subquery 的概念讓解答符合題目的輸出結果。

解答的原始碼在這裡喔!

2. 用 MySQL Online 解題

你的 SQL 版本為 8.0,你解題的重點便在於對新的函數是否熟悉

解題思路:MySQL 8.0 是一個重大更新,ROW_NUMBER 這個函數就能讓你以輕鬆的姿態搞定這個題目,如果你不熟悉可以參考這份文檔

解答的原始碼在這裡喔!

我的解答僅供參考(尚未優化),有興趣的朋友可以在底下留言分享你的做法喔~希望這篇文章能幫助臨時需要寫 SQL 的朋友

▶︎ 如果這篇文章有幫助到你1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻
你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼▶︎ 如果你對工程師的職涯感到迷茫1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯

--

--

林鼎淵
Dean Lin

職涯中培育過多名工程師,🧰 目前在外商公司擔任 Software Specialist |✍️ 我專注寫 (1)最新技術 (2)團隊合作 (3)工程師職涯的文章,出版過 5 本專業書籍|👏🏻 如果對這些主題感興趣,歡迎點擊「Follow」來關注我~