原創(chuàng)|行業(yè)資訊|編輯:胡濤|2023-05-24 11:51:10.720|閱讀 196 次
概述:近年來(lái),人工智能工具的普及率飆升,開(kāi)發(fā)人員越來(lái)越認(rèn)識(shí)到它們?cè)诤?jiǎn)化工作各個(gè)方面的潛力,讓我們一起來(lái)看看AI工具:ChatGPT-4 與 Bard,對(duì)于 PostgreSQL 開(kāi)發(fā)者來(lái)說(shuō)有什么區(qū)別?
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在人類智能 (AI) 的快節(jié)奏世界中,開(kāi)發(fā)人員正在尋找最高效率和突破性的解決方案來(lái)更快地提高他們的工作質(zhì)量。對(duì)于PostgreSQL開(kāi)發(fā)人員來(lái)說(shuō),選擇理想的AI支持的工具以最專業(yè)的解決方案解決了他們的查詢至關(guān)重要的問(wèn)題。
今年來(lái),人類智能工具的普及率飆升,開(kāi)發(fā)人員越來(lái)越了解它在簡(jiǎn)單化工作各個(gè)方面的潛力。一些最知名的AI工作包括 OpenAI 的 ChatGPT、Google 的 Bard、IBM 的 Watson 和 Microsoft 的 Azure Cognitive服務(wù)等。這些工具徹底改變了開(kāi)發(fā)人員解決問(wèn)題的方式,并使以前服務(wù)員的工作更容易管理。在本文中,我們將重點(diǎn)比較ChatGPT-4 和 Google Bard 對(duì)一系列常見(jiàn) SQL 開(kāi)發(fā)相關(guān)問(wèn)題的響應(yīng)通過(guò)這種方式,我們?cè)缭绲卦谇宄亓私饬嗣糠N工具的功能,并幫助您確定哪種工具更適合您在SQL開(kāi)發(fā)領(lǐng)域的特定需求求。
什么是ChatGPT?
ChatGPT 由 OpenAI 開(kāi)發(fā),是一種基于 GPT(Generative Pre-trained Transformer)架構(gòu)的最先進(jìn)的 AI 語(yǔ)言模型。作為一種大規(guī)模語(yǔ)言模型,ChatGPT 旨在生成類人文本并與用戶進(jìn)行對(duì)話,了解上下文并提供相關(guān)響應(yīng)。它能夠執(zhí)行各種任務(wù),例如回答問(wèn)題、提供建議、創(chuàng)建內(nèi)容等。
開(kāi)發(fā)人員和企業(yè)可以通過(guò)將 ChatGPT 集成到他們的應(yīng)用程序、服務(wù)或產(chǎn)品中來(lái)利用 ChatGPT 的強(qiáng)大功能,通過(guò)自然語(yǔ)言的理解和生成來(lái)增強(qiáng)用戶體驗(yàn)。ChatGPT 已成功應(yīng)用于客戶支持、內(nèi)容創(chuàng)建、虛擬協(xié)助以及自然語(yǔ)言處理必不可少的許多其他領(lǐng)域。
什么是Google Bard?
Google Bard 是一種大型語(yǔ)言模型,也稱為對(duì)話式 AI 或聊天機(jī)器人,經(jīng)過(guò)訓(xùn)練可提供豐富的信息和全面的信息。巴德接受過(guò)大量文本數(shù)據(jù)的訓(xùn)練,能夠通過(guò)交流和生成類似人類的文本來(lái)響應(yīng)范圍廣泛的提示和問(wèn)題。
雖然仍處于開(kāi)發(fā)階段,但該工具已經(jīng)可以通過(guò)多種方式幫助 SQL 開(kāi)發(fā)人員,包括回答有關(guān) SQL 語(yǔ)法和用法的問(wèn)題、幫助調(diào)試 SQL 查詢、生成針對(duì)特定任務(wù)定制的 SQL 代碼,以及提供有關(guān) SQL 的教程和文檔,以及其他功能.
ChatGPT 與 Google Bard
ChatGPT 和 Google Bard 都是大型語(yǔ)言模型,但它們有一些關(guān)鍵的區(qū)別。
ChatGPT | Google Bard | |
開(kāi)發(fā)商 | OpenAI | 谷歌 |
語(yǔ)言模型 | OpenAI 的 Generative Pre-training Transformer 3 (GPT-3) 或 Generative Pre-training Transformer 4 (GPT-4) 的定制版本,具體取決于版本 | Google 的對(duì)話應(yīng)用程序語(yǔ)言模型 (LaMDA) |
數(shù)據(jù)源 | ChatGPT 使用大量文本數(shù)據(jù)進(jìn)行訓(xùn)練,包括 Common Crawl、維基百科、書(shū)籍、文章和從開(kāi)放互聯(lián)網(wǎng)獲得的各種文檔等資源。然而,它的訓(xùn)練數(shù)據(jù)只延伸到 2021 年,這限制了它對(duì)最近世界事件和研究進(jìn)展的了解。 | Bard 使用 Infiniset 進(jìn)行訓(xùn)練,這是一個(gè)包含 Common Crawl、維基百科、文檔以及來(lái)自互聯(lián)網(wǎng)的對(duì)話和對(duì)話的數(shù)據(jù)集。據(jù)稱,巴德可以進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)搜索,以提供最新的查詢答案和最新的研究成果。 |
價(jià)錢 | ChatGPT 向用戶免費(fèi)提供,而 ChatGPT Plus 每月收取 20 美元的訂閱費(fèi)。ChatGPT Plus 的訂閱者受益于高需求期間的訪問(wèn)、加快響應(yīng)時(shí)間、優(yōu)先訪問(wèn)新功能以及 GPT-4 的使用。 |
有訪問(wèn)權(quán)限的用戶可以免費(fèi)使用 Bard。 |
如何使用 ChatGPT 和 Bard 進(jìn)行 PostgreSQL 開(kāi)發(fā)
通過(guò)提供語(yǔ)法和使用指導(dǎo)、生成 SQL 代碼、協(xié)助查詢調(diào)試等,人工智能可以在 PostgreSQL 開(kāi)發(fā)中發(fā)揮重要作用。在本文中,我們將向 Bard 和 ChatGPT 提出與 SQL 開(kāi)發(fā)相關(guān)的相同問(wèn)題,然后比較和驗(yàn)證他們的回答。我們的目標(biāo)是評(píng)估這兩種人工智能在 PostgreSQL 開(kāi)發(fā)環(huán)境中的可靠性和實(shí)用性。為了驗(yàn)證 AI 提供的答案,我們將使用市場(chǎng)上最好的 PostgreSQL GUI 工具之一——dbForge Studio for PostgreSQL。
先決條件
示例 #1:函數(shù)
假設(shè),我們需要?jiǎng)?chuàng)建一個(gè)函數(shù)來(lái)返回給定時(shí)間段內(nèi)租借次數(shù)最多的電影及其租借次數(shù)。讓我們請(qǐng) ChatGPT-4 來(lái)完成任務(wù)。
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;
現(xiàn)在讓我們打開(kāi) dbForge Studio for PostgreSQL 并驗(yàn)證 AI 創(chuàng)建的代碼。
如您所見(jiàn),Studio 拋出錯(cuò)誤,因?yàn)槲?指定用于創(chuàng)建函數(shù)的架構(gòu)。讓我們稍微修改一下代碼,然后再試一次。
這次查詢成功,并且該函數(shù)現(xiàn)在在數(shù)據(jù)庫(kù)資源管理器中可見(jiàn)。
現(xiàn)在,是時(shí)候運(yùn)行 SELECT 語(yǔ)句以確保一切都按要求工作了。
哎呀。又出現(xiàn)錯(cuò)誤。在函數(shù)語(yǔ)法中,rental_count 列數(shù)據(jù)類型已指定為 INTEGER,這顯然是錯(cuò)誤的。我們需要修改語(yǔ)法并重試。因此,工作代碼如下:
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;
因此,我們刪除之前創(chuàng)建的函數(shù),創(chuàng)建一個(gè)新函數(shù),然后運(yùn)行 SELECT。這次成功了。
現(xiàn)在讓我們?cè)u(píng)估一下 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$;
讓我們?cè)?Studio 中運(yùn)行它,好嗎?壓力來(lái)了!我們得到了同樣的錯(cuò)誤——模式?jīng)]有被指定。
于是,我們修改代碼,再次運(yùn)行。并得到另一個(gè)錯(cuò)誤。
我們需要進(jìn)一步修改查詢。指定語(yǔ)言并執(zhí)行語(yǔ)法后,我們運(yùn)行 SELECT。并且……再次出錯(cuò)。
Google Bard 在其腳本中引用了不存在的表;除此之外,rental_count 列的數(shù)據(jù)類型被錯(cuò)誤地指定為 INT。在我們解決了所有這些問(wèn)題之后,我們終于得到了工作代碼。不好玩,對(duì)吧?使用 Google Bard,我們不得不調(diào)整生成的代碼很長(zhǎng)一段時(shí)間,這需要一定程度的專業(yè)知識(shí),這意味著 SQL 初學(xué)者可能無(wú)法利用它的提示。
示例 #2:日期函數(shù)
假設(shè),我們要?jiǎng)?chuàng)建一個(gè)日期函數(shù),返回指定范圍內(nèi)電影租金最高的星期幾。讓我們首先請(qǐng) ChatGPT-4 協(xié)助我們完成這項(xiàng)任務(wù)。
因此,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 中運(yùn)行此代碼之前,我們需要指定架構(gòu)。否則,我們會(huì)得到一個(gè)錯(cuò)誤。
該函數(shù)已成功創(chuàng)建。讓我們檢查一下它是如何工作的。
讓我們看看 Google Bard 將如何應(yīng)對(duì)這項(xiàng)任務(wù)。
這是我們得到的代碼。
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;
我們指定架構(gòu)并在 Studio for PostgreSQL 中運(yùn)行它。當(dāng)試圖從此函數(shù)執(zhí)行 SELECT 時(shí),我們得到一個(gè)錯(cuò)誤。PostgreSQL 中沒(méi)有 TABLE 數(shù)據(jù)類型。
我們要求 Google Bard 重寫語(yǔ)法,但我們沒(méi)有得到功能代碼。因此,它會(huì)因這項(xiàng)特定任務(wù)而被記過(guò)。
示例 #3:窗口函數(shù)
PostgreSQL 中的窗口函數(shù)是一種對(duì)與當(dāng)前行相關(guān)的一組行執(zhí)行計(jì)算的函數(shù)。它允許您執(zhí)行高級(jí)計(jì)算,包括將當(dāng)前行與指定窗口或分區(qū)內(nèi)的其他行進(jìn)行比較。窗口函數(shù)對(duì)于排名、累積和、移動(dòng)平均等任務(wù)很有用。
假設(shè),我們要計(jì)算每個(gè)客戶的累計(jì)付款金額,并獲得按付款日期排序的金額。讓我們首先向 ChatGPT-4 尋求幫助。
這是我們得到的語(yǔ)法,如果您想自己檢查一下:
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;
現(xiàn)在我們打開(kāi) dbForge Studio for PostgreSQL 并運(yùn)行 ChatGPT-4 為我們生成的查詢。
讓我們向 Google Bard 問(wèn)同樣的問(wèn)題。
這是我們得到的代碼:
SELECT
customer_id,
SUM(payment_amount) AS cumulative_sum_of_payments,
payment_date
FROM payments
GROUP BY customer_id
ORDER BY payment_date;
但是,它有很多問(wèn)題:
新手可能很難使用該提示,因?yàn)樾枰獙?duì)查詢進(jìn)行大量修改才能正常工作。
示例 #4:JOIN 子句
JOIN用于根據(jù)它們之間的相關(guān)列組合來(lái)自關(guān)系數(shù)據(jù)庫(kù)中兩個(gè)或多個(gè)表的數(shù)據(jù)。它們?cè)试S您在單個(gè)查詢中從多個(gè)表中檢索信息,使其成為使用關(guān)系數(shù)據(jù)庫(kù)的重要工具。
假設(shè),我們想要獲得所有電影及其所屬類別的列表。讓我們先問(wèn)一下ChatGPT-4。
這是我們得到的語(yǔ)法
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;
乍一看,查詢看起來(lái)不錯(cuò)。讓我們驗(yàn)證一下。
我們現(xiàn)在嘗試Google
下面是我們得到的語(yǔ)法
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;
讓我們?cè)?Studio 中運(yùn)行由 Google Bard 生成的查詢。
如您所見(jiàn),Google Bard 也完成了這項(xiàng)任務(wù)。查詢非常相似,唯一的區(qū)別是 ChatGPT-4 添加了 ORDER BY 子句以實(shí)現(xiàn)更好的結(jié)果分析和可見(jiàn)性。
示例 #5:數(shù)據(jù)透視表
在 PostgreSQL 中,數(shù)據(jù)透視表是一種數(shù)據(jù)匯總工具,可讓您聚合數(shù)據(jù)并將其從數(shù)據(jù)庫(kù)轉(zhuǎn)換為更易讀的格式。
假設(shè),我們想要獲得一個(gè)數(shù)據(jù)透視表,按電影類別顯示每個(gè)客戶的總租賃金額。讓我們?nèi)フ?qǐng) ChatGPT 為我們編寫相應(yīng)的查詢。
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;
現(xiàn)在是時(shí)候在 dbForge Studio for PostgreSQL 中驗(yàn)證它了。準(zhǔn)備好?
相當(dāng)令人印象深刻,不是嗎?現(xiàn)在我們帶著同樣的請(qǐng)求去谷歌驗(yàn)證
我們得到以下代碼:
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;
然而,當(dāng)我們運(yùn)行 Google Bard 為我們生成的查詢時(shí),我們會(huì)遇到一些錯(cuò)誤。
哪個(gè)人的智能工具更好?
Google Bard 和 ChatGPT-4 都在不斷發(fā)展,這些工具在 AI 語(yǔ)言模型領(lǐng)域具有巨大的潛力。但是,根據(jù)本文件中進(jìn)行的分析,ChatGPT-4 在處理 PostgreSQL 中提供顯示出卓越的性能。ChatGPT-4 生成的代碼通常需要稍微的修改,從而提高了效率。另外,ChatGPT-4擁有更高的可訪問(wèn)性,因?yàn)榕c對(duì)應(yīng)的模型比較,獲得對(duì)該AI模型的訪問(wèn)是一個(gè)更直接的過(guò)程。
另外,ChatGPT生成的代碼更加人性化;例如,AI貼心地包含了ORDER BY和GROUP BY等子句,使結(jié)果更容易理解和分析。這有助于了解別勢(shì)和模式,最終改善使用輸出時(shí)的整體用戶體驗(yàn)。
Devart提供包括Oracle、SQL Server、MySQL、PostgreSQL、InterBase以及Firebird在內(nèi)的專業(yè)數(shù)據(jù)庫(kù)遠(yuǎn)程管理軟件,dbForge Studio for MySQL是一個(gè)在Windows平臺(tái)被廣泛使用的MySQL客戶端,它能夠使MySQL開(kāi)發(fā)人員和管理人員在一個(gè)方便的環(huán)境中與他們一起完成創(chuàng)建和執(zhí)行查詢,開(kāi)發(fā)和調(diào)試MySQL程序,自動(dòng)化管理MySQL數(shù)據(jù)庫(kù)對(duì)象等工作。
歡迎下載|體驗(yàn)更多Devart產(chǎn)品
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn