如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力

devtools/2025/1/12 9:58:24/
aidu_pl">

DeepSeek-V3 介绍

在目前大模型主流榜单中,DeepSeek-V3 在开源模型中位列榜首,与世界上最先进的闭源模型不分伯仲。

准备工作:

笔者只演示实例o1 VS DeepSeek-V3两个模型,大家可以自行验证结果或者实验更多场景,同时也会简单说一下笔者使用感受!

1、openAI o1模型

PS: o1模型是由ChatGPT Plus/Pro 提供,童鞋可以参考教程
https://littlemagic8.github.io/2024/12/08/how-to-update-ChatGPTPro-plus/

2、注册DeepSeek账号 官网:https://www.deepseek.com/

为严谨,如下图所示

实际应用案例对比

为了更直观地了解 DeepSeek-V3 和 OpenAI o1 的实际表现,我们通过编程任务进行了对比测试。

***测试任务:*将自然语言查询转换为SQL语句: 显示所有今年销售额超过100万的产品 从新建数据库,新建表,新建字段开始,让萌新小白都能看懂的

DeepSeek-V3 的回答:

好的!下面我将从零开始,一步一步教你如何创建一个数据库、表、字段,并编写SQL语句来查询“今年销售额超过100万的产品”。即使是小白也能轻松看懂!


1. 创建数据库

首先,我们需要创建一个数据库来存储数据。数据库就像一个大仓库,里面可以放很多表格。

CREATE DATABASE SalesDB;
  • CREATE DATABASE 是SQL语句,用于创建数据库。
  • SalesDB 是数据库的名字,你可以根据需要改成其他名字。

2. 使用数据库

创建好数据库后,我们需要告诉SQL,接下来要在这个数据库里操作。

USE SalesDB;
  • USE 是SQL语句,用于选择要操作的数据库。

3. 创建表

接下来,我们需要创建一个表来存储产品信息。表就像Excel表格,每一行是一条记录,每一列是一个字段。

CREATE TABLE Products (ProductID INT AUTO_INCREMENT PRIMARY KEY, -- 产品ID,唯一标识ProductName VARCHAR(100) NOT NULL,        -- 产品名称SalesAmount DECIMAL(15, 2) NOT NULL,      -- 销售额SalesDate DATE NOT NULL                   -- 销售日期
);
  • CREATE TABLE 是SQL语句,用于创建表。
  • Products 是表的名字。
  • ProductID 是产品的唯一标识,AUTO_INCREMENT 表示自动递增,PRIMARY KEY 表示主键(唯一且不能重复)。
  • ProductName 是产品名称,VARCHAR(100) 表示最多存储100个字符。
  • SalesAmount 是销售额,DECIMAL(15, 2) 表示最多15位数字,其中2位小数。
  • SalesDate 是销售日期,DATE 表示日期类型。

4. 插入示例数据

为了测试查询,我们需要往表里插入一些数据。

INSERT INTO Products (ProductName, SalesAmount, SalesDate)
VALUES('产品A', 1200000.00, '2023-01-15'),('产品B', 800000.00, '2023-02-20'),('产品C', 1500000.00, '2023-03-10'),('产品D', 900000.00, '2022-12-05');
  • INSERT INTO 是SQL语句,用于插入数据。
  • 这里插入了4条记录,分别是产品A、B、C、D的销售信息。

5. 查询今年销售额超过100万的产品

现在,我们需要编写SQL语句来查询“今年销售额超过100万的产品”。

SELECT ProductName, SalesAmount, SalesDate
FROM Products
WHERE SalesAmount > 1000000 AND YEAR(SalesDate) = YEAR(CURDATE());
  • SELECT 是SQL语句,用于查询数据。
  • ProductName, SalesAmount, SalesDate 是要显示的字段。
  • FROM Products 表示从Products表中查询。
  • WHERE 是条件语句:
    • SalesAmount > 1000000 表示销售额超过100万。
    • YEAR(SalesDate) = YEAR(CURDATE()) 表示销售日期是今年的(CURDATE() 获取当前日期,YEAR() 提取年份)。

6. 运行结果

假设当前年份是2023年,运行上面的查询语句后,结果可能是:

ProductNameSalesAmountSalesDate
产品A1200000.002023-01-15
产品C1500000.002023-03-10
  • 只有产品A和产品C满足条件(销售额超过100万且是今年的销售记录)。

总结

  1. 创建数据库:CREATE DATABASE SalesDB;
  2. 使用数据库:USE SalesDB;
  3. 创建表:CREATE TABLE Products (...);
  4. 插入数据:INSERT INTO Products (...);
  5. 查询数据:SELECT ... FROM Products WHERE ...;

通过以上步骤,你可以轻松创建一个数据库,并查询出今年销售额超过100万的产品。希望这个教程对你有帮助!如果有任何问题,欢迎随时提问! 😊

OpenAI o1 的回答:

当然!下面我将以一个简单易懂的方式,带你从零开始创建一个数据库,建立相关表格和字段,并最终编写SQL查询语句来显示所有今年销售额超过100万的产品。即使你是完全的数据库新手,也能跟随这个步骤逐步完成。

1. 安装和设置数据库管理系统(DBMS)

首先,你需要一个数据库管理系统(DBMS)来创建和管理你的数据库。常见的DBMS有:

  • MySQL
  • PostgreSQL
  • SQLite
  • Microsoft SQL Server

本教程将以MySQL为例,其他DBMS的操作类似。

1.1 下载和安装MySQL
  1. 访问 MySQL官方网站 下载适合你操作系统的安装包。
  2. 按照安装向导完成安装过程。
  3. 安装完成后,打开MySQL Workbench(图形化界面工具)或使用命令行工具进行操作。

2. 创建数据库

数据库是用来存储和管理数据的容器。在这个例子中,我们将创建一个名为SalesDB的数据库。

2.1 使用命令行创建数据库
CREATE DATABASE SalesDB;
2.2 使用MySQL Workbench创建数据库
  1. 打开MySQL Workbench并连接到你的MySQL服务器。
  2. 在左侧的“Navigator”面板中,右键点击“Schemas”。
  3. 选择“Create Schema…”。
  4. 输入数据库名称SalesDB,然后点击“Apply”完成创建。

3. 使用数据库

在创建好数据库后,你需要告诉MySQL你将要使用哪个数据库。

USE SalesDB;

4. 创建表格和字段

为了记录产品和销售数据,我们需要至少两个表:

  1. Products:存储产品信息。
  2. Sales:存储销售记录。
4.1 创建Products表
CREATE TABLE Products (ProductID INT AUTO_INCREMENT PRIMARY KEY,   -- 产品ID,自增主键ProductName VARCHAR(100) NOT NULL,         -- 产品名称Category VARCHAR(50),                       -- 产品类别Price DECIMAL(10,2)                         -- 产品价格
);

解释:

  • ProductID:每个产品的唯一标识,自动递增。
  • ProductName:产品的名称,不能为空。
  • Category:产品所属的类别。
  • Price:产品的价格,支持两位小数。
4.2 创建Sales表
CREATE TABLE Sales (SaleID INT AUTO_INCREMENT PRIMARY KEY,       -- 销售记录ID,自增主键ProductID INT,                               -- 产品ID,外键关联Products表SaleDate DATE,                               -- 销售日期Quantity INT,                                -- 销售数量TotalAmount DECIMAL(10,2),                   -- 销售总额FOREIGN KEY (ProductID) REFERENCES Products(ProductID) -- 外键约束
);

解释:

  • SaleID:每条销售记录的唯一标识,自动递增。
  • ProductID:关联到Products表的产品ID。
  • SaleDate:销售发生的日期。
  • Quantity:销售的数量。
  • TotalAmount:销售的总金额。

5. 插入示例数据

为了演示查询,我们需要向表中插入一些示例数据。

5.1 插入Products表数据
INSERT INTO Products (ProductName, Category, Price) VALUES
('智能手机', '电子产品', 5000.00),
('笔记本电脑', '电子产品', 8000.00),
('电动自行车', '交通工具', 15000.00),
('咖啡机', '家电', 1200.00),
('无线耳机', '电子产品', 800.00);
5.2 插入Sales表数据
INSERT INTO Sales (ProductID, SaleDate, Quantity, TotalAmount) VALUES
(1, '2025-01-05', 50, 250000.00),
(2, '2025-02-10', 30, 240000.00),
(3, '2025-03-15', 10, 150000.00),
(4, '2025-04-20', 100, 120000.00),
(5, '2025-05-25', 200, 160000.00),
(1, '2024-12-15', 40, 200000.00),
(2, '2024-11-20', 25, 200000.00);

注意: 这里假设当前年份是2025年,插入了一些2025年和2024年的销售记录。

6. 编写SQL查询语句

现在,我们要编写一个SQL查询,来显示所有今年销售额超过100万的产品

6.1 确定“今年”

假设当前年份是2025年,我们需要筛选SaleDate在2025年的销售记录。

6.2 汇总销售额

我们需要按产品汇总今年的销售总额,并筛选出超过100万的产品。

6.3 完整的SQL查询
SELECT p.ProductID,p.ProductName,SUM(s.TotalAmount) AS TotalSales
FROM Products p
JOIN Sales s ON p.ProductID = s.ProductID
WHERE YEAR(s.SaleDate) = 2025
GROUP BY p.ProductID, p.ProductName
HAVING SUM(s.TotalAmount) > 1000000;

解释:

  • SELECT:选择要显示的列,包括产品ID、产品名称和销售总额。
  • FROM Products p JOIN Sales s ON p.ProductID = s.ProductID:连接ProductsSales表,通过ProductID关联。
  • WHERE YEAR(s.SaleDate) = 2025:筛选销售日期在2025年的记录。
  • GROUP BY p.ProductID, p.ProductName:按产品分组,汇总每个产品的销售额。
  • HAVING SUM(s.TotalAmount) > 1000000:筛选出销售总额超过100万的产品。

7. 执行查询并查看结果

在MySQL Workbench或命令行工具中运行上述查询,你将得到所有今年(2025年)销售额超过100万的产品列表。

示例输出:

ProductIDProductNameTotalSales
1智能手机250000.00
2笔记本电脑240000.00
3电动自行车150000.00
4咖啡机120000.00
5无线耳机160000.00

注意: 根据插入的数据,上述示例中没有任何产品的销售额超过100万,因此实际结果可能为空。为了达到超过100万的条件,你可以增加更多的销售记录或调整TotalAmount的值。

8. 完整的SQL脚本

以下是从创建数据库到执行查询的完整SQL脚本,供你参考和练习:

-- 1. 创建数据库
CREATE DATABASE SalesDB;-- 2. 使用数据库
USE SalesDB;-- 3. 创建Products表
CREATE TABLE Products (ProductID INT AUTO_INCREMENT PRIMARY KEY,ProductName VARCHAR(100) NOT NULL,Category VARCHAR(50),Price DECIMAL(10,2)
);-- 4. 创建Sales表
CREATE TABLE Sales (SaleID INT AUTO_INCREMENT PRIMARY KEY,ProductID INT,SaleDate DATE,Quantity INT,TotalAmount DECIMAL(10,2),FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);-- 5. 插入Products表数据
INSERT INTO Products (ProductName, Category, Price) VALUES
('智能手机', '电子产品', 5000.00),
('笔记本电脑', '电子产品', 8000.00),
('电动自行车', '交通工具', 15000.00),
('咖啡机', '家电', 1200.00),
('无线耳机', '电子产品', 800.00);-- 6. 插入Sales表数据
INSERT INTO Sales (ProductID, SaleDate, Quantity, TotalAmount) VALUES
(1, '2025-01-05', 50, 250000.00),
(2, '2025-02-10', 30, 240000.00),
(3, '2025-03-15', 10, 150000.00),
(4, '2025-04-20', 100, 120000.00),
(5, '2025-05-25', 200, 160000.00),
(1, '2024-12-15', 40, 200000.00),
(2, '2024-11-20', 25, 200000.00);-- 7. 查询今年销售额超过100万的产品
SELECT p.ProductID,p.ProductName,SUM(s.TotalAmount) AS TotalSales
FROM Products p
JOIN Sales s ON p.ProductID = s.ProductID
WHERE YEAR(s.SaleDate) = 2025
GROUP BY p.ProductID, p.ProductName
HAVING SUM(s.TotalAmount) > 1000000;

总结

通过以上步骤,你已经成功:

  1. 创建了一个名为SalesDB的数据库
  2. 建立了两个表格Products(产品信息)和Sales(销售记录)。
  3. 插入了示例数据到这两个表中。
  4. 编写并执行了一个SQL查询,以显示今年销售额超过100万的产品。

进一步学习建议

  • 学习SQL基础语法:了解更多SQL语句,如UPDATEDELETEALTER等。
  • 了解数据库设计原则:学习如何设计高效、规范的数据库结构。
  • 实践更多查询:尝试编写不同类型的查询,如多表连接、子查询、窗口函数等。
  • 使用图形化工具:如MySQL Workbench,可以帮助你更直观地管理和查询数据库。

希望这个指南对你有所帮助,祝你在学习SQL和数据库管理的旅程中取得成功!

End:

o1还是全面一点,全面数据资料丰富的o1,但是永远支持开源,为DeepSeek👏鼓掌👏👏,希望有业余时间的小伙伴也可以参与DeepSeek编码,让开源变得更好!!


http://www.ppmy.cn/devtools/149575.html

相关文章

HTML 迷宫游戏

HTML 迷宫游戏 相关资源文件已经打包成压缩文件,可双击index.html直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的想法,望大家喜欢&#xff0…

鸿蒙开发(29)弹性布局 (Flex)

概述 弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。常用于页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等。 容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方…

碰一碰发视频的剪辑功能开发的细节源码搭建,支持OEM

在短视频盛行的今天,为碰一碰发视频增添剪辑功能,能极大提升用户创作的灵活性与趣味性。下面将详细阐述这一功能从技术选型到源码搭建的全过程。 一、技术选型 前端 框架:选择 React 作为前端框架,其基于组件化的开发模式&#x…

基于SpringBoot的洗浴管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

不同音频振幅dBFS计算方法

1. 振幅的基本概念 振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值,幅度越大,声音听起来就越响。为了更好地理解和处理音频信号,通常会将振幅转换为分贝(dB)单位。分贝是一个对数单位,能…

数据库系统原理期末

第一章概述 文章目录 第一章概述1. 数据库概述2. 数据库相关概念3. 数据库系统 DBS4. 外模式/模式映像5. 模式/内模式映像6. 数据独立性 第二章关系数据库1. 关系模型2. 码(Key)3. 关系模型三要素4. 关系代数 第三章结构化查询语言 SQL1. 视图&#xff0…

Elasticsearch:优化的标量量化 - 更好的二进制量化

作者:来自 Elastic Benjamin Trent 在这里,我们解释了 Elasticsearch 中的优化标量量化以及如何使用它来改进更好的二进制量化 (Better Binary Quantization - BBQ)。 我们的全新改进版二进制量化 (Better Binary Quantization - BBQ) 索引现在变得更强大…

Java阶段四04

第4章-第4节 一、知识点 CSRF、token、JWT 二、目标 理解什么是CSRF攻击以及如何防范 理解什么是token 理解什么是JWT 理解session验证和JWT验证的区别 学会使用JWT 三、内容分析 重点 理解什么是CSRF攻击以及如何防范 理解什么是token 理解什么是JWT 理解session验…