原創|行業資訊|編輯:胡濤|2023-05-24 11:51:10.720|閱讀 196 次
概述:近年來,人工智能工具的普及率飆升,開發人員越來越認識到它們在簡化工作各個方面的潛力,讓我們一起來看看AI工具:ChatGPT-4 與 Bard,對于 PostgreSQL 開發者來說有什么區別?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在人類智能 (AI) 的快節奏世界中,開發人員正在尋找最高效率和突破性的解決方案來更快地提高他們的工作質量。對于PostgreSQL開發人員來說,選擇理想的AI支持的工具以最專業的解決方案解決了他們的查詢至關重要的問題。
今年來,人類智能工具的普及率飆升,開發人員越來越了解它在簡單化工作各個方面的潛力。一些最知名的AI工作包括 OpenAI 的 ChatGPT、Google 的 Bard、IBM 的 Watson 和 Microsoft 的 Azure Cognitive服務等。這些工具徹底改變了開發人員解決問題的方式,并使以前服務員的工作更容易管理。在本文中,我們將重點比較ChatGPT-4 和 Google Bard 對一系列常見 SQL 開發相關問題的響應通過這種方式,我們早早地在清楚地了解了每種工具的功能,并幫助您確定哪種工具更適合您在SQL開發領域的特定需求求。
什么是ChatGPT?
ChatGPT 由 OpenAI 開發,是一種基于 GPT(Generative Pre-trained Transformer)架構的最先進的 AI 語言模型。作為一種大規模語言模型,ChatGPT 旨在生成類人文本并與用戶進行對話,了解上下文并提供相關響應。它能夠執行各種任務,例如回答問題、提供建議、創建內容等。
開發人員和企業可以通過將 ChatGPT 集成到他們的應用程序、服務或產品中來利用 ChatGPT 的強大功能,通過自然語言的理解和生成來增強用戶體驗。ChatGPT 已成功應用于客戶支持、內容創建、虛擬協助以及自然語言處理必不可少的許多其他領域。
什么是Google Bard?
Google Bard 是一種大型語言模型,也稱為對話式 AI 或聊天機器人,經過訓練可提供豐富的信息和全面的信息。巴德接受過大量文本數據的訓練,能夠通過交流和生成類似人類的文本來響應范圍廣泛的提示和問題。
雖然仍處于開發階段,但該工具已經可以通過多種方式幫助 SQL 開發人員,包括回答有關 SQL 語法和用法的問題、幫助調試 SQL 查詢、生成針對特定任務定制的 SQL 代碼,以及提供有關 SQL 的教程和文檔,以及其他功能.
ChatGPT 與 Google Bard
ChatGPT 和 Google Bard 都是大型語言模型,但它們有一些關鍵的區別。
ChatGPT | Google Bard | |
開發商 | OpenAI | 谷歌 |
語言模型 | OpenAI 的 Generative Pre-training Transformer 3 (GPT-3) 或 Generative Pre-training Transformer 4 (GPT-4) 的定制版本,具體取決于版本 | Google 的對話應用程序語言模型 (LaMDA) |
數據源 | ChatGPT 使用大量文本數據進行訓練,包括 Common Crawl、維基百科、書籍、文章和從開放互聯網獲得的各種文檔等資源。然而,它的訓練數據只延伸到 2021 年,這限制了它對最近世界事件和研究進展的了解。 | Bard 使用 Infiniset 進行訓練,這是一個包含 Common Crawl、維基百科、文檔以及來自互聯網的對話和對話的數據集。據稱,巴德可以進行實時網絡搜索,以提供最新的查詢答案和最新的研究成果。 |
價錢 | ChatGPT 向用戶免費提供,而 ChatGPT Plus 每月收取 20 美元的訂閱費。ChatGPT Plus 的訂閱者受益于高需求期間的訪問、加快響應時間、優先訪問新功能以及 GPT-4 的使用。 |
有訪問權限的用戶可以免費使用 Bard。 |
如何使用 ChatGPT 和 Bard 進行 PostgreSQL 開發
通過提供語法和使用指導、生成 SQL 代碼、協助查詢調試等,人工智能可以在 PostgreSQL 開發中發揮重要作用。在本文中,我們將向 Bard 和 ChatGPT 提出與 SQL 開發相關的相同問題,然后比較和驗證他們的回答。我們的目標是評估這兩種人工智能在 PostgreSQL 開發環境中的可靠性和實用性。為了驗證 AI 提供的答案,我們將使用市場上最好的 PostgreSQL GUI 工具之一——dbForge Studio for PostgreSQL。
先決條件
示例 #1:函數
假設,我們需要創建一個函數來返回給定時間段內租借次數最多的電影及其租借次數。讓我們請 ChatGPT-4 來完成任務。
ChatGPT-4 生成了以下 SQL 代碼:
CREATE OR REPLACE FUNCTION most_rented_films(start_date DATE, end_date DATE) RETURNS TABLE (film_id INTEGER, title TEXT, rental_count INTEGER) AS $$ BEGIN RETURN QUERY SELECT f.film_id, f.title, COUNT(r.rental_id) AS rental_count FROM film AS f JOIN inventory AS i ON f.film_id = i.film_id JOIN rental AS r ON i.inventory_id = r.inventory_id WHERE r.rental_date BETWEEN start_date AND end_date GROUP BY f.film_id, f.title ORDER BY rental_count DESC; END; $$ LANGUAGE plpgsql;
現在讓我們打開 dbForge Studio for PostgreSQL 并驗證 AI 創建的代碼。
如您所見,Studio 拋出錯誤,因為未指定用于創建函數的架構。讓我們稍微修改一下代碼,然后再試一次。
這次查詢成功,并且該函數現在在數據庫資源管理器中可見。
現在,是時候運行 SELECT 語句以確保一切都按要求工作了。
哎呀。又出現錯誤。在函數語法中,rental_count 列數據類型已指定為 INTEGER,這顯然是錯誤的。我們需要修改語法并重試。因此,工作代碼如下:
CREATE OR REPLACE FUNCTION public.most_rented_films(start_date DATE, end_date DATE)
RETURNS TABLE (film_id INTEGER, title TEXT, rental_count BIGINT) AS $$
BEGIN
RETURN QUERY
SELECT f.film_id, f.title, COUNT(r.rental_id) AS rental_count
FROM film AS f
JOIN inventory AS i ON f.film_id = i.film_id
JOIN rental AS r ON i.inventory_id = r.inventory_id
WHERE r.rental_date BETWEEN start_date AND end_date
GROUP BY f.film_id, f.title
ORDER BY rental_count DESC;
END;
$$ LANGUAGE plpgsql;
因此,我們刪除之前創建的函數,創建一個新函數,然后運行 SELECT。這次成功了。
現在讓我們評估一下 Google Bard。
于是,我們得到了如下代碼:
CREATE OR REPLACE FUNCTION most_rented_films (start_date DATE,
end_date DATE) RETURNS TABLE (
film_id INT,
film_title VARCHAR(255),
rental_count INT
)
AS
$func$
BEGIN
RETURN QUERY
SELECT
f.film_id,
f.film_title,
COUNT(*) AS rental_count
FROM
film_rentals fr
JOIN
films f ON f.film_id = fr.film_id
WHERE
fr.rental_date >= start_date
AND fr.rental_date < end_date
GROUP BY
f.film_id,
f.film_title
ORDER BY
rental_count DESC;
END
$func$;
讓我們在 Studio 中運行它,好嗎?壓力來了!我們得到了同樣的錯誤——模式沒有被指定。
于是,我們修改代碼,再次運行。并得到另一個錯誤。
我們需要進一步修改查詢。指定語言并執行語法后,我們運行 SELECT。并且……再次出錯。
Google Bard 在其腳本中引用了不存在的表;除此之外,rental_count 列的數據類型被錯誤地指定為 INT。在我們解決了所有這些問題之后,我們終于得到了工作代碼。不好玩,對吧?使用 Google Bard,我們不得不調整生成的代碼很長一段時間,這需要一定程度的專業知識,這意味著 SQL 初學者可能無法利用它的提示。
示例 #2:日期函數
假設,我們要創建一個日期函數,返回指定范圍內電影租金最高的星期幾。讓我們首先請 ChatGPT-4 協助我們完成這項任務。
因此,ChatGPT-4 為我們生成了以下查詢:
CREATE OR REPLACE FUNCTION highest_rental_day(start_date DATE, end_date DATE)
RETURNS TEXT AS $$
DECLARE
day_of_week TEXT;
BEGIN
SELECT TO_CHAR(r.rental_date, 'Day') AS day_name
INTO day_of_week
FROM rental r
WHERE r.rental_date BETWEEN start_date AND end_date
GROUP BY EXTRACT(DOW FROM r.rental_date)::INTEGER, day_name
ORDER BY COUNT(*) DESC
LIMIT 1;
RETURN day_of_week;
END;
$$ LANGUAGE plpgsql;
您可能還記得示例 #1,在 dbForge Studio for PostgreSQL 中運行此代碼之前,我們需要指定架構。否則,我們會得到一個錯誤。
該函數已成功創建。讓我們檢查一下它是如何工作的。
讓我們看看 Google Bard 將如何應對這項任務。
這是我們得到的代碼。
CREATE FUNCTION get_highest_rental_day(
start_date DATE,
end_date DATE
) RETURNS VARCHAR(10) AS
$func$
BEGIN
DECLARE
-- Get the total number of film rentals for each day of the week.
rental_counts TABLE (
day_of_week VARCHAR(10),
total_rentals INT
);
BEGIN
-- Populate the rental_counts table.
INSERT INTO rental_counts (day_of_week, total_rentals)
SELECT
EXTRACT(DOW FROM rental_date),
COUNT(*)
FROM
film_rentals
WHERE
rental_date >= start_date
AND rental_date <= end_date
GROUP BY
EXTRACT(DOW FROM rental_date);
-- Get the day of the week with the highest number of rentals.
SELECT
day_of_week
FROM
rental_counts
ORDER BY
total_rentals DESC
LIMIT
1;
END;
END
$func$ LANGUAGE plpgsql;
我們指定架構并在 Studio for PostgreSQL 中運行它。當試圖從此函數執行 SELECT 時,我們得到一個錯誤。PostgreSQL 中沒有 TABLE 數據類型。
我們要求 Google Bard 重寫語法,但我們沒有得到功能代碼。因此,它會因這項特定任務而被記過。
示例 #3:窗口函數
PostgreSQL 中的窗口函數是一種對與當前行相關的一組行執行計算的函數。它允許您執行高級計算,包括將當前行與指定窗口或分區內的其他行進行比較。窗口函數對于排名、累積和、移動平均等任務很有用。
假設,我們要計算每個客戶的累計付款金額,并獲得按付款日期排序的金額。讓我們首先向 ChatGPT-4 尋求幫助。
這是我們得到的語法,如果您想自己檢查一下:
SELECT
customer_id,
payment_date,
amount,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY payment_date) as cumulative_amount
FROM
payment
ORDER BY
payment_date;
現在我們打開 dbForge Studio for PostgreSQL 并運行 ChatGPT-4 為我們生成的查詢。
讓我們向 Google Bard 問同樣的問題。
這是我們得到的代碼:
SELECT
customer_id,
SUM(payment_amount) AS cumulative_sum_of_payments,
payment_date
FROM payments
GROUP BY customer_id
ORDER BY payment_date;
但是,它有很多問題:
新手可能很難使用該提示,因為需要對查詢進行大量修改才能正常工作。
示例 #4:JOIN 子句
JOIN用于根據它們之間的相關列組合來自關系數據庫中兩個或多個表的數據。它們允許您在單個查詢中從多個表中檢索信息,使其成為使用關系數據庫的重要工具。
假設,我們想要獲得所有電影及其所屬類別的列表。讓我們先問一下ChatGPT-4。
這是我們得到的語法
SELECT
f.title,
c.name as category
FROM
film f
JOIN
film_category fc ON f.film_id = fc.film_id
JOIN
category c ON fc.category_id = c.category_id
ORDER BY
f.title;
乍一看,查詢看起來不錯。讓我們驗證一下。
我們現在嘗試Google
下面是我們得到的語法
SELECT
film.film_id,
film.title,
category.name
FROM film
JOIN film_category ON film.film_id = film_category.film_id
JOIN category ON film_category.category_id = category.category_id;
讓我們在 Studio 中運行由 Google Bard 生成的查詢。
如您所見,Google Bard 也完成了這項任務。查詢非常相似,唯一的區別是 ChatGPT-4 添加了 ORDER BY 子句以實現更好的結果分析和可見性。
示例 #5:數據透視表
在 PostgreSQL 中,數據透視表是一種數據匯總工具,可讓您聚合數據并將其從數據庫轉換為更易讀的格式。
假設,我們想要獲得一個數據透視表,按電影類別顯示每個客戶的總租賃金額。讓我們去請 ChatGPT 為我們編寫相應的查詢。
ChatGPT 向我們提供了以下查詢:
WITH rental_amounts AS (
SELECT
c.customer_id,
cat.name AS category,
SUM(p.amount) AS total_amount
FROM
rental r
JOIN payment p ON r.rental_id = p.rental_id
JOIN inventory i ON r.inventory_id = i.inventory_id
JOIN film f ON i.film_id = f.film_id
JOIN film_category fc ON f.film_id = fc.film_id
JOIN category cat ON fc.category_id = cat.category_id
JOIN customer c ON r.customer_id = c.customer_id
GROUP BY
c.customer_id,
cat.name
)
SELECT
customer_id,
SUM(CASE WHEN category = 'Action' THEN total_amount ELSE 0 END) AS "Action",
SUM(CASE WHEN category = 'Animation' THEN total_amount ELSE 0 END) AS "Animation",
SUM(CASE WHEN category = 'Children' THEN total_amount ELSE 0 END) AS "Children",
-- Add more categories as needed
SUM(total_amount) AS "Total"
FROM
rental_amounts
GROUP BY
customer_id
ORDER BY
customer_id;
現在是時候在 dbForge Studio for PostgreSQL 中驗證它了。準備好?
相當令人印象深刻,不是嗎?現在我們帶著同樣的請求去谷歌驗證
我們得到以下代碼:
WITH rental_amount AS (
SELECT
customer_id,
film_id,
SUM(rental_amount) AS total_rental_amount
FROM rental
GROUP BY customer_id, film_id
)
SELECT
customer_id,
category.name AS category,
SUM(rental_amount) AS total_rental_amount
FROM rental_amount
JOIN film_category ON rental_amount.film_id = film_category.film_id
JOIN category ON film_category.category_id = category.category_id
GROUP BY customer_id, category
ORDER BY customer_id;
然而,當我們運行 Google Bard 為我們生成的查詢時,我們會遇到一些錯誤。
哪個人的智能工具更好?
Google Bard 和 ChatGPT-4 都在不斷發展,這些工具在 AI 語言模型領域具有巨大的潛力。但是,根據本文件中進行的分析,ChatGPT-4 在處理 PostgreSQL 中提供顯示出卓越的性能。ChatGPT-4 生成的代碼通常需要稍微的修改,從而提高了效率。另外,ChatGPT-4擁有更高的可訪問性,因為與對應的模型比較,獲得對該AI模型的訪問是一個更直接的過程。
另外,ChatGPT生成的代碼更加人性化;例如,AI貼心地包含了ORDER BY和GROUP BY等子句,使結果更容易理解和分析。這有助于了解別勢和模式,最終改善使用輸出時的整體用戶體驗。
Devart提供包括Oracle、SQL Server、MySQL、PostgreSQL、InterBase以及Firebird在內的專業數據庫遠程管理軟件,dbForge Studio for MySQL是一個在Windows平臺被廣泛使用的MySQL客戶端,它能夠使MySQL開發人員和管理人員在一個方便的環境中與他們一起完成創建和執行查詢,開發和調試MySQL程序,自動化管理MySQL數據庫對象等工作。
歡迎下載|體驗更多Devart產品
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn