開課查詢
課程總覽
工業設計
建築室內設計
視覺設計
網頁設計
3D多媒體動畫
影視特效
程式/資料庫
AI程式設計
手機APP設計
資安網路管理
辦公室應用
認證輔導
專業師資
新手專區
學員專區
我的課表
課程檔案下載
課程觀看記錄
學習諮詢
直播教學課程劃位
取消劃位
個資維護
購買記錄
上課權益查詢
點數卡產品兌換
申請線上設備檢測
常見問題
登出
最新消息
文章分類
文章分類
Python
Java
Cisco網路管理
APP設計
AI邊緣運算
室內設計
Photoshop
Line貼圖
電商行銷
CSP
HOT 熱門課程
HOT 熱門課程
Blog首頁
練功寫程式
2023/04/28
8384
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!限量送雙語線上卡
39週年慶報名抽大獎
TOP
熱搜文章排行
文章分類
熱門標籤
你可能有興趣的文章
【JAVA 教學】初學者必看的Java基本語法,變數、常數與資料型態定義
Python 線上課程|Python for 迴圈基礎觀念與範例解說
Java程式教室(十四):換硬幣找錢程式
熱門標籤