2023/04/28
8384

ChatGPT應用教學-ChatGPT幫你寫SQL

ChatGPT應用教學-ChatGPT幫你寫SQL

SQL是什麼?

SQL(Structured Query Language)是操作關聯式資料庫的程式語言,包括新增、修改、刪除及查詢資料,其中查詢最複雜,常需要連結多個資料表,並進行各種篩選、排序、統計、小計等功能,如何查詢的準確,又兼具效率,對初入門的工程師是一個考驗。現在工程師可以使用自然語言敘述需求,ChatGPT自動將需求轉換為SQL指令,反之,也可以輸入複雜的SQL,請ChatGPT為工程師解析SQL的意涵。
 

使用ChatGPT產生SQL指令實測

以下我們就來做幾個測試,使用北風資料庫,可自https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/sql/linq/downloading-sample-databases 取得,如果沒有安裝MS SQL Server,可以直接下載SQLite版的北風資料庫,SQLite不須安裝軟體。北風資料庫含有銷售系統的相關資料表。部分資料庫關聯圖如下:

1.資料庫關聯圖
 

Q1. 自動產生SQL指令:提供訂單資料表欄位,查詢訂單編號=10248的訂單資料。

  • 輸入提示:自資料庫取出訂單資料表定義(Schema),再附上要求,要求已備註呈現(-- find all orders which order id is 10248),以有別於SQL指令。
2.產生SQL指令
  • 執行結果:完全正確。
SELECT * FROM Orders WHERE Id = 10248;
 

輸入中文提示

Q2. 改用中文輸入提示,查詢訂單編號=10248的訂單資料。

  • 輸入提示:查詢訂單編號=10248的訂單資料。
3.改用中文輸入提示
  • 執行結果:與Q1完全一樣。
SELECT * FROM Orders WHERE Id = 10248;
 

Q3. 加上統計函數,查詢找出訂單最多的客戶。

  • 提示:查詢與執行結果如下。
4.加上統計函數
 
  • 將SQL複製到資料庫管理工具執行,結果如下,找到客戶SAVEA:
5
 

Q4. 查詢找出訂單最多的客戶,並同時查詢該客戶的訂單數量。

  • 提示:查詢與執行結果如下。
6
  •  
  • 將SQL複製到資料庫管理工具執行,結果如下,找到客戶SAVEA及訂單張數:
7.執行結果
 

多個資料表連結

接下來,我們進行更複雜的查詢,連結(join)多個資料表。
 

Q5. 多個資料表連結:再提供訂單明細(OrderDetails)、客戶主表(Customers)。

  • 提示:額外提供兩個資料表結構,統計每個客戶的訂單總金額。
8

9

10
  •  
  • 執行結果:
11
  • 就算不提供Foreign key,ChatGPT也完全知道怎麼連結,例如訂單的CustomerId = 客戶主表的Id,實在太厲害了。
  • 訂單總金額 = 單價 x 數量 x (1-折扣率),ChatGPT竟然也曉得,太扯了。
 

SQL解析

反過來,如果有一個別人撰寫的SQL,我們想知道是怎麼一回事,也可以請ChatGPT幫我們解析。

Q6. 解析複雜的SQL指令:輸入SQL指令後,再接著提出要求,要求前面加『--』,代表備註,表示不屬於SQL指令。

  • 提示:
12
  •  
  • 執行結果:ChatGPT會分段解說SQL指令的功能。
13
 
  • 接手別人的應用系統,常會碰到一堆複雜的SQL或預存程序(Stored procedure),需要trace或debug,通常難度很高、也很費時,現在我們可以善用ChatGPT解析,減輕不少的工作負擔。
 

結語

關聯式資料庫通常會按照正規化(Normalization)原則設計,資料會散布在多個資料表,要製作一張報表常要連結很多個資料表,例如要產生一張客戶訂單,就要連結訂單表頭(Orders)、訂單明細(Order details)、客戶主表(Customers)、產品主表(Products)…,就算是資料庫老手也要費一番功夫才能完成,如果還要考慮查詢效能的話,花費的時間就更久了,現在請ChatGPT代勞,工程師的生產力可大幅提升了。

下次我們更進一步,探討如何將流程自動化,輸入查詢需求,自動產生SQL並執行,之後將查詢結果轉化為圖表,一氣呵成,彈指之間完成報表製作。

 


陳昭明老師

  陳昭明 老師
  專長:

 MVC架構開發:Python Django、ASP.NET/MVC、PHP Laravel
專案管理:參與過數十個專案,具PMP證照 系統分析方法論:從Team Building、架構規劃、分析、開發、測試至導入
資料庫:MS SQL Server、Oracle、MySQL、SQLite、PostgreSQL、MongoDB、Redis程式語言:Python、ASP.NET/MVC(VB/C#/ jQuery/HTML/CSS/AJAX/MVC)、PHP MVC、Java/SSH、Windows Forms、Mobile App(PhoneGap/Cordova)
電子商務:手機APP及網站開發包括雲端平台如Azure、Google App Engine

 

 
 
LINE-friend
近期文章熱搜文章排行
熱門標籤熱門標籤
近期文章你可能有興趣的文章
熱門標籤熱門標籤