ySQL 在預覽版中引入了 Javascript 支持。
Oracle 最近宣布 MySQL 數據庫服務器現在支持 JavaScript 函數和過程。用于存儲例程的 JavaScript 目前處于預覽狀態,并且僅在 MySQL Enterprise Edition 和 MySQL Heatwave 中可用。
JavaScript 支持的引入使開發人員能夠在數據庫中實現高級數據處理邏輯。通過最大限度地減少數據庫服務器和客戶端應用程序之間的數據移動,存儲函數和過程可以減少延遲、網絡開銷和出口成本。Oracle 高級首席軟件工程師?ystein Gr?vlen和技術人員顧問成員Farhan Tauheed寫道:
對JavaScript存儲程序的支持,不僅可以利用龐大的生態系統來提高開發人員的生產力;現在,更多的開發人員將具備編寫存儲程序所需的技能。換句話說,組織現在可以利用廣泛可用的 JavaScript 技能集進行后端開發,從而挖掘更廣泛的開發人才。
在新功能的常見用例中,Oracle 重點介紹了數據提取、數據格式化、近似搜索、數據驗證、壓縮、編碼和數據轉換。該公告提供了一個將 JavaScript 代碼直接嵌入到 SQL 定義中的函數示例,受到社區的好評:
CREATE FUNCTION gcd_js (a INT, b INT) RETURNS INT
LANGUAGE JAVASCRIPT AS $$
let [x, y] = [Math.abs(a), Math.abs(b)];
while(y) [x, y] = [y, x % y];
return x;
$$;
當使用傳統的 CALL 語句調用函數時,SQL 類型和 JavaScript 類型之間會發生隱式類型轉換。根據文檔,JavaScript 支持基于 ECMAScript 2021 標準,并且支持整數、浮點和CHAR/VARCHAR類型的所有變體。Gr?vlen 和 Tauheed 補充道:
MySQL-JavaScript 集成針對其特定用例使用定制的 VM,以實現最佳的端到端性能。這種定制基于 GraalVM 的提前 (AOT) 編譯,其中語言實現被編譯為本機二進制表示形式以進行快速處理。GraalVM 有自己的基于 ECMAScript 2021 標準的 JavaScript 實現。盡管它是使用 GraalVM 的 Polyglot 框架實現的,但該語言實現在性能方面具有競爭力。
GraalVM運行時包括 JDK、語言實現( JavaScript、R、Python、Ruby 和 Java)以及具有沙箱功能和工具支持的托管虛擬機。雖然 MySQL-JavaScript 在 OCI、AWS 和 Azure 上的 MySQL 企業版和 MySQL Heatwave 云服務中可用,但 MySQL 社區版不支持。
MySQL 并不是第一個在存儲例程中支持 Javascript 的開源關系數據庫,PLV8是 PostgreSQL 最流行的 Javascript 語言擴展。PLV8 受 PostgreSQL 的所有當前版本支持,包括Amazon RDS等托管服務,并且可用于存儲例程和觸發器。
Oracle 在 YouTube 上發布了三個 MySQL HeatWave 視頻,演示如何運行 Mustache 庫、驗證 Web 表單輸入或使用 JavaScript 中存儲的程序處理 Web URL。
及如何使用這個驚人的工具來增強我們的SQL技能。
圖片來自編輯 |微軟設計師
ChatGPT可以做很多很酷的事情。其中之一是編寫代碼。您只需要給出正確的指示,ChatGPT 將為您完成這項工作。
如果你想學習SQL,ChatGPT是一個很好的入門資源。它可以幫助您使用自然語言創建SQL查詢,解決您可能遇到的任何編碼問題,甚至可以幫助您理解您不理解的預定義查詢。
在本文中,我將概述如何使用 ChatGPT 學習 SQL 并精通這項寶貴的技能。
讓我們一起弄清楚吧!
首先,所以...ChatGPT到底是什么?
ChatGPT是由OpenAI訓練的大型語言模型。它能夠根據收到的輸入生成類似人類的文本,并可用于回答問題和與人進行對話。
所以基本上,我們可以利用它的知識——以及它以一種非常簡單和人性化的方式告訴我們任何事情的能力——來理解SQL并從中學習。
要開始使用 ChatGPT,您需要在此處注冊一個帳戶。
注冊 ChatGPT 顯示。
您必須提供您的電子郵件地址和電話號碼才能開始使用 ChatGPT。
啟用 ChatGPT 后,您應該會看到以下顯示:
聊天GPT聊天顯示的屏幕截圖。
在下面的輸入框中,我們可以編寫任何內容來開始與 ChatGPT 交互。由于我會打擾她或他一段時間,我會提前道歉;)
自制動圖。ChatGPT回答我的第一條消息。
所以現在,我們可以開始向ChatGPT詢問任何事情。我將專注于學習SQL。通過使用 ChatGPT,我們可以要求 5 件主要事情來提高我們的 SQL 技能。
當崩潰到一種新的編程語言時,我們通常對每個命令都有很多疑問和困惑。ChatGPT 可以通過簡單的解釋幫助我們理解任何命令,并根據我們的要求向我們提供盡可能多的用法示例。
讓我們從 SQL 中最基本的東西開始——命令。SELECT
簡要解釋一下什么是命令以及如何使用它的示例SELECT
ChatGPT 回答了一個解釋命令的簡短答案,并給出了最基本的示例:選擇 * FROMSELECT
ChatGPT 聊天的屏幕截圖。
但是,我可以進一步請求命令。SELECT
向我解釋什么是命令以及一些演示如何使用它的示例SELECT
如下圖所示,ChatGPT 解釋了該命令的基礎知識,并向我們提供了一些用法示例。
ChatGPT 聊天的屏幕截圖。給出更多 SELECT 命令的示例。
您可以嘗試詢問任何您能想到的命令,例如更具挑戰性的命令,例如 .HAVING
給我一些SQL中HAVE命令的例子
ChatGPT 用幾個例子來回答,如下所示:
SELECT
name,
salary
FROM employees
GROUP BY name
HAVING salary > (SELECT AVG(salary) FROM employees);
2.要查找過去一年中下過10個以上訂單的所有客戶的姓名,您可以使用這樣的查詢。
SELECT
name
FROM customers
WHERE customer_id
IN
(
SELECT customer_id
FROM orders
WHERE date >= DATEADD(year, -1, GETDATE())
GROUP BY customer_id
HAVING COUNT(*) > 10
);
當然,我們可以不斷要求更多的解釋和更多的例子。嘗試您能想到的任何其他命令,它會立即回答。
我可以詢問如何執行特定操作,ChatGPT 會讓我知道我需要使用什么命令。
我想合并兩個表,我應該在SQL中使用什么命令?
ChatGPT 回答我使用任何連接命令,如下圖所示。
ChatGPT 聊天的屏幕截圖。解釋如何合并兩個表。
但是,我知道當行在某些特定列中具有重合的值時,我只想連接兩個表。在這種情況下,我可以再次詢問并了解我應該使用什么命令。
我想連接兩個表,只獲取在某些給定列中具有重合值的數據。
因此,ChatGPT 讓我知道只有允許我這樣做,如下圖所示:INNER JOIN
ChatGPT 聊天的屏幕截圖。解釋如何合并兩個表并僅保留重合的值。
它給了我相應的查詢:
SELECT
*
FROM table1
INNER JOIN table2
ON table1.id = table2.id
AND table1.name = table2.name;
現在讓我們想象一下,我知道我需要什么結果,但我不知道如何制定該查詢。 我可以簡單地解釋我想對 ChatGPT 做什么,它會給我一個可以遵循的結構。 因此,我可以按照 ChatGPT 的示例學習如何構建查詢。
向我解釋如何創建一個SQL查詢,該查詢計算歐洲最昂貴的城市,其中包含每個城市中不同項目的價格。
ChatGPT 立即回答我,如下圖所示。
ChatGPT 給了我一個查詢示例,并解釋了這個查詢的作用。
現在讓我們想象一下,你可以從一個生病的同事那里做工作,但你不理解他的查詢——有些人以混亂的方式編碼,或者你可能只是覺得懶惰,不想浪費很多時間理解別人的查詢。
這很正常 - 您可以使用ChatGPT來避免此任務。我們可以很容易地要求 ChatGPT 解釋給定的查詢。
假設我們想了解以下查詢的作用:
以下查詢有什么作用:[在此處插入查詢]
ChatGPT只是立即回答:
ChatGPT 聊天的屏幕截圖。它解釋了給定查詢的作用。
如上圖所示,ChatGPT 逐步解釋了此查詢的作用。
首先,它解釋了所有包含的子查詢及其作用。然后,它解釋了最終查詢以及它如何使用前面的子查詢來合并所有數據。 我們甚至可以在給定的子查詢中要求更詳細的解釋。
你能進一步解釋一下上一個查詢的第二個子查詢的作用嗎?
ChatGPT 聊天的屏幕截圖。它進一步解釋了給定查詢的第二個子查詢的作用。
正如您在上圖中觀察到的那樣,ChatGPT 詳細解釋了第二個子查詢的執行方式。
你可以用任何你能想象到的查詢來挑戰 ChatGPT!
對我來說,ChatGPT 最好的部分是要求一些練習和答案來練習和測試你的技能。它甚至可以告訴你什么時候做得好——或者沒有。
你能給我一些練習SQL的練習嗎
ChatGPT 的屏幕截圖給了我一些練習 SQL 的練習。
現在 ChatGPT 告訴我一些要執行的問題。在這種情況下,我可以嘗試解決第一個問題,并詢問 ChatGPT 我的解決方案是否正確。
以下查詢是否正確與上一個練習的答案正確 [插入查詢]
ChatGPT 會回答并寫下它是否正確以及為什么。
ChatGPT 回答我編碼的查詢是否正確的屏幕截圖。
我可以要求前面每個示例的正確答案:
你能給我前面練習的正確答案嗎?
如下圖所示,ChatGPT 將為我提供所有要執行的正確查詢。
?? 請注意,ChatGPT 提供給我的答案和我提供的要檢查的答案是完全不同的。
在當今數據驅動的世界中,SQL是一項寶貴的技能。通過使用 ChatGPT 學習基礎知識并練習您的技能,您可以精通 SQL。通過不斷的學習和實踐,您可以使用此工具繼續擴展您的技能并在您的數據職業生涯中實現飛躍。
讓我知道 ChatGPT 是否通過其他一些好的功能讓您感到驚訝。我會在評論中讀到你!:D
數據總是有更好的想法 - 相信它。
原文標題:Using ChatGPT to Learn SQL
原文鏈接:https://www.kdnuggets.com/2023/04/chatgpt-learn-sql.html
作者:Josep Ferrer
編譯:LCR
用戶在 HTML 表單中填寫并提交數據時,可以使用 PHP 來接收并處理這些數據。要實現這一點,需要創建一個 PHP 腳本來處理提交的數據,然后將 HTML 表單的 "action" 屬性設置為該腳本的文件路徑。表單提交的數據需要進行驗證和過濾,以確保數據的完整性和安全性。可以使用條件語句、正則表達式、過濾器函數等方法來驗證和過濾數據,并使用 htmlspecialchars() 函數轉義 HTML 標記,以防止 XSS 攻擊。
以下是一個簡單的示例:
HTML 表單代碼:
<form action="submit.php" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<button type="submit">Submit</button>
</form>
PHP 代碼(submit.php):
<?php
// 獲取表單提交的數據
$name = $_POST['name'];
$email = $_POST['email'];
// 在這里進行處理,例如將數據存儲到數據庫中
// ...
// 返回一個響應,告訴用戶數據已經被成功提交
echo "Thank you for submitting the form, $name!";
?>
在上面的示例中,表單的 "action" 屬性設置為 "submit.php",這意味著提交表單時,數據將被發送到 submit.php 文件中的 PHP 代碼中進行處理。PHP 代碼使用 $_POST 數組來獲取表單提交的數據,然后進行處理,例如將數據存儲到數據庫中。最后,PHP 代碼返回一個響應,告訴用戶數據已經被成功提交。在處理表單數據時,一定要對用戶輸入進行驗證和過濾,以防止安全漏洞。
需要對表單提交的數據進行驗證和過濾,以確保數據的完整性和安全性。以下是一些常見的方法:
1、驗證表單字段:在 PHP 代碼中使用條件語句和正則表達式等方法來驗證表單字段的有效性,例如驗證電子郵件地址的格式是否正確。
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// 如果郵件地址格式不正確,則顯示錯誤消息
echo "Invalid email address";
}
2、過濾輸入數據:使用 PHP 中的過濾器函數來過濾表單輸入數據,以防止 XSS 攻擊和 SQL 注入等安全漏洞。
$name = $_POST['name'];
$name = filter_var($name, FILTER_SANITIZE_STRING); // 過濾特殊字符和標簽
3、防止跨站腳本攻擊(XSS):在 PHP 代碼中使用 htmlspecialchars() 函數來轉義 HTML 標記,防止惡意腳本注入到頁面中。
$name = $_POST['name'];
$name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // 轉義 HTML 標記
4、防止 SQL 注入攻擊:在 PHP 代碼中使用參數化查詢或準備語句來執行數據庫操作,以防止惡意 SQL 語句注入到數據庫中。
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->execute();
通過這些方法,可以確保表單提交的數據是安全和有效的,并且能夠正常地處理和存儲到數據庫中。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。