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小时内与您取得联系。