ChatGPT會不會寫MySQL指令?

最近ChatGPT非常火紅,據說可以寫程式、可以寫文章、可以寫書、還可以畫圖,我們現在來看看他能否正確的寫MySQL指令。

使用兩個工具 :

ChatGPT : https://chat.openai.com/chat

線上MySQL翻譯器 : https://onecompiler.com/mysql/

嘗試使用不太精準的說法,看ChatGPT能否理解。

我說 : 「幫我寫個mysql語法,建立一個資料表,有4個欄位,studid 字串,studname 字串,studaddr 字串,studtel 字串」

ChatGPT給我的結果如下 :

CREATE TABLE students ( studid VARCHAR(255), studname VARCHAR(255), studaddr VARCHAR(255), studtel VARCHAR(255) );

截圖如下 :


我發現沒有主鍵,因此再說 : 「如果主鍵是 studid,改寫一下」

ChatGPT給我的結果如下 :

CREATE TABLE students ( studid VARCHAR(255) PRIMARY KEY, studname VARCHAR(255), studaddr VARCHAR(255), studtel VARCHAR(255) );

截圖如下 :


如上圖,他記得剛剛的資料表,所以正確的修改主鍵為studid。

我發現沒有限制空白資料,因此再說 : 「如果個欄位都不能空白,改寫一下」

ChatGPT給我的結果如下 :

CREATE TABLE students ( studid VARCHAR(255) PRIMARY KEY, studname VARCHAR(255) NOT NULL, studaddr VARCHAR(255) NOT NULL, studtel VARCHAR(255) NOT NULL );

截圖如下 :


我再要求建立另外資料表 : 「再幫我寫個mysql語法,建立一個資料表,有4個欄位,classid 字串,classname 字串,主鍵 classid」

ChatGPT給我的結果如下 :

CREATE TABLE classes ( classid VARCHAR(255) PRIMARY KEY, classname VARCHAR(255) NOT NULL );

我說有4個欄位,但是其實只給兩個欄位的名稱,他自動忽略我說錯的資訊,並且知道要命名資料表為classes。

截圖如下 :


我再要求建立另外資料表 : 「再幫我寫個mysql語法,建立一個成績資料表,classid, studid, score 整數, 主鍵是兩個id」

ChatGPT給我的結果如下 :

CREATE TABLE scores ( classid VARCHAR(255), studid VARCHAR(255), score INT, PRIMARY KEY (classid, studid) );

我說主鍵是兩個id,他可以自動的認知是classid 與 studid。

截圖如下 :


我再要求 : 「現在寫個mysql指令 抓出成績及格的學生及課程名稱」

ChatGPT給我的結果如下 :

SELECT s.studid, s.studname, c.classname FROM students s JOIN scores sc ON s.studid = sc.studid JOIN classes c ON sc.classid = c.classid WHERE sc.score >= 60;

截圖如下 :


我再要求 : 「在這些表中插入一些資料」

ChatGPT給我的結果如下 :

INSERT INTO students (studid, studname, studaddr, studtel) VALUES ('1', 'John Doe', '123 Main St', '555-555-5555'); 

INSERT INTO classes (classid, classname) VALUES ('C101', 'Math'), ('C102', 'Science'); 

INSERT INTO scores (classid, studid, score) VALUES ('C101', '1', 80), ('C102', '1', 90);

我說插入一些資料,他可以知道是插入資料到三個資料表,並且自動認知各欄位的意思,假造了一些範例資料。

截圖如下 :


我再要求 : 「再多些資料」

ChatGPT給我的結果如下 :

INSERT INTO students (studid, studname, studaddr, studtel) VALUES ('2', 'Jane Doe', '456 Oak Ave', '555-555-5556'), ('3', 'John Smith', '789 Maple St', '555-555-5557'); 

INSERT INTO scores (classid, studid, score) VALUES ('C101', '2', 70), ('C102', '2', 80), ('C101', '3', 65), ('C102', '3', 75);

我只說再多些資料,他主動在兩個資料表中加了幾筆資料,算是懶得剛剛好。

截圖如下 :


以上的MySQL指令是否正確無誤呢? 我們使用MySQL線上翻譯來看看,由於資料都是60分以上,所以我改了指令只秀出75分以上,結果如下 :


檢驗結果,完全正確。

以上的結果,表示教學也將有革命性的變化,人工智慧已經有能力替代老師,也意味著學生以後的工作也可能被取代。

[後記]

上面的測試也許簡單了一點,但是你不得不佩服ChatGPT可以很精準的知道我的意思。

而無聊人士也蠻多的,這篇"Can ChatGPT Write Better SQL than a Data Analyst?"作者還用DBA的身分跟ChatGPT拚了,看誰寫的指令比較好? 

這位DBA (DataBase Analyst 資料庫分析師)比較狠,不只要比正確性,還要比指令執行的速度。

第一個比賽題目是排序,這位DBA與ChatGPT都寫個指令來執行排序,比指令的正確性及執行速度。

結果兩個都正確,DBA寫的與ChatGPT寫的執行速度各是514ms與809ms。

第二個比賽題目是判斷樹狀結構,DBA第一次寫的是錯的,修改後正確了;ChatGPT也是第一次寫錯,修改兩次後就正確了,而且ChatGPT也能夠了解DBA給的暗示來修改錯誤。

兩個結果兩個都正確後,DBA寫的與ChatGPT寫的執行速度各是522ms與606ms。

第三個比賽題目是計算股市交易的輸贏,DBA第一次就寫對了,但是執行速度是1066ms,而ChatGPT則寫第三次才正確,執行速度是1354ms。

這三個題目,顯然都是人類DBA獲勝,但是ChatGPT撰寫的速度顯然比人類DBA快很多。

因此以目前的狀況來說,ChatGPT還不至於取代人類DBA的工作,但是這個比賽還有一個不公平的地方,就是人類是透過什麼方法來讓ChatGPT了解題目,ChatGPT沒有做對,很可能不是ChatGPT的問題。

不管如何,這個比賽的勝利者會是誰? 現在其實還不到下定論的時候,因為變因太多,應該算人類有輸有贏,也許ChatGPT今天輸了,可能明天他就贏到讓你看不到車尾燈了。

相關閱讀 : Power Up Your MySQL Queries: How ChatGPT Can Help You Retrieve MySQL Data

張貼留言

0 留言