開課查詢
課程總覽
工業設計
建築室內設計
視覺設計
網頁設計
3D多媒體動畫
影視特效
程式/資料庫
AI程式設計
手機APP設計
資安網路管理
辦公室應用
認證輔導
專業師資
新手專區
學員專區
登出
最新消息
文章分類
文章分類
Python
Java
Cisco網路管理
APP設計
AI邊緣運算
室內設計
Photoshop
Line貼圖
電商行銷
CSP
HOT 熱門課程
HOT 熱門課程
Blog首頁
練功寫程式
2023/04/28
9602
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不須安裝軟體。北風資料庫含有銷售系統的相關資料表。部分資料庫關聯圖如下:
Q1. 自動產生SQL指令:提供訂單資料表欄位,查詢訂單編號=10248的訂單資料。
輸入提示:自資料庫取出訂單資料表定義(Schema),再附上要求,要求已備註呈現(-- find all orders which order id is 10248),以有別於SQL指令。
執行結果:完全正確。
SELECT * FROM Orders WHERE Id = 10248;
輸入中文提示
Q2. 改用中文輸入提示,查詢訂單編號=10248的訂單資料。
輸入提示:查詢訂單編號=10248的訂單資料。
執行結果:與Q1完全一樣。
SELECT * FROM Orders WHERE Id = 10248;
Q3. 加上統計函數,查詢找出訂單最多的客戶。
提示:查詢與執行結果如下。
將SQL複製到資料庫管理工具執行,結果如下,找到客戶SAVEA:
Q4. 查詢找出訂單最多的客戶,並同時查詢該客戶的訂單數量。
提示:查詢與執行結果如下。
將SQL複製到資料庫管理工具執行,結果如下,找到客戶SAVEA及訂單張數:
多個資料表連結
接下來,我們進行更複雜的查詢,連結(join)多個資料表。
Q5. 多個資料表連結:再提供訂單明細(OrderDetails)、客戶主表(Customers)。
提示:額外提供兩個資料表結構,統計每個客戶的訂單總金額。
執行結果:
就算不提供Foreign key,ChatGPT也完全知道怎麼連結,例如訂單的CustomerId = 客戶主表的Id,實在太厲害了。
訂單總金額 = 單價 x 數量 x (1-折扣率),ChatGPT竟然也曉得,太扯了。
相關技術可參閱『A Survey on Text-to-SQL Parsing: Concepts, Methods, and Future Directions』論文(
https://arxiv.org/abs/2208.13629
)。
SQL解析
反過來,如果有一個別人撰寫的SQL,我們想知道是怎麼一回事,也可以請ChatGPT幫我們解析。
Q6. 解析複雜的SQL指令:輸入SQL指令後,再接著提出要求,要求前面加『--』,代表備註,表示不屬於SQL指令。
提示:
執行結果:ChatGPT會分段解說SQL指令的功能。
接手別人的應用系統,常會碰到一堆複雜的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
上一則
Java程式教室(十一):簡單的數位時鐘-Calendar類別的使用
下一則
Java程式教室(十):使用sort方法對陣列進行排序
分享
分享
X
NOW!即刻試聽選擇主題
NEW!限量送雙語線上卡
搶攻AI技能最新優惠
TOP
熱搜文章排行
文章分類
熱門標籤
你可能有興趣的文章
【JAVA 教學】初學者必看的Java基本語法,變數、常數與資料型態定義
Python 線上課程|Python for 迴圈基礎觀念與範例解說
Java程式教室(十四):換硬幣找錢程式
熱門標籤