在当今数据驱动的环境中,有效地从数据库中提取和操作信息的能力至关重要。结构化查询语言 (SQL) 仍然是数据检索的基石,使我们能够与数据库中存储的大量数据进行交互。本文深入研究了一个有趣的教程,并解释了我们如何高效地从数据库中检索数据而无需费力。
结构化查询语言 (SQL) 是由 IBM 研究人员 Raymond Boyce 和 Donald Chamberlin 于 20 世纪 70 年代初开发的,最初是 IBM 项目 System R 的一部分。该项目旨在创建一个原型关系数据库管理系统 (RDBMS),其灵感来自Edgar F. Codd 关于关系模型的开创性论文。
在 SQL 和 RDBMS 之前,数据库通常是分层的或基于网络的,这使得它们在查询和数据操作方面变得复杂且不灵活。
SQL 旨在为数据操作和检索提供更简单、更易读的语法,从而抽象化数据库管理中涉及的大部分复杂性。它允许用户使用高级命令与关系数据库交互,从而更轻松地存储、操作和检索数据。
随着时间的推移,SQL 成为 RDBMS 的标准语言,受到各个供应商和组织的支持,并且已经发展到包括触发器、存储过程等功能。
图片来源: CSVeda
SQL 是一种用于管理和查询关系数据库的领域特定语言。它作为与数据库通信的标准方式,使用户能够创建、修改、检索和删除数据。
SQL 通过多种命令进行操作,包括用于数据检索的 SELECT、用于数据插入的 INSERT、用于数据修改的 UPDATE 以及用于数据删除的 DELETE。其语法设计得既直观又富有表现力,允许用户定义表之间的关系、执行复杂的查询和聚合数据。SQL 在数据库管理系统中发挥着关键作用,可实现结构化数据的高效存储、检索和操作,使其成为广泛应用和行业的基石技术。
今天,我们将了解如何轻松自动创建数据库,使用特殊的聊天机器人(您会喜欢它,将在教程中讨论它)通过 SQL 提供一些数据,并通过简单的 Node.js 应用程序检索它。这将是令人兴奋的,让我们开始吧!
注意:在本教程中,我们将使用 SingleStore DB 作为我们的数据库。
注册 SingleStore 并领取价值 600 美元的免费资源使用权。
注册后,您将收到一封确认电子邮件,它将指导您在几分钟内设置完全托管的数据库。
首先,您将创建一个工作区来为数据库提供计算资源。
什么是工作空间? 工作区使客户能够在独立的计算部署上运行多个工作负载,同时提供对共享数据的超低延迟访问。这可确保应用程序始终基于最新数据运行。在此处了解有关工作空间的更多信息。
您的工作空间已配置有端点并可供使用。
它还加载了一个示例数据集,供您查看和感受。 您可以从此处创建您选择的数据库。 你可以看到我创建了3个数据库。
让我们通过笔记本向数据库提供一些内容。 笔记本在数据科学界越来越受欢迎,因为它们提供了一种有效的方式来探索、分析和可视化数据,使交流见解和结果变得更加容易。SingleStore 的 Notebook 功能基于流行的 Jupyter Notebook,广泛应用于数据科学和机器学习社区。
关于 SingleStore Notebooks 的一个有趣的事实是,它们允许用户直接从笔记本界面内查询 SingleStore 的分布式 SQL 数据库。
让我们看看如何做到这一点。
让我们前往我们的笔记本部分来体验一下。
创建一个新的空白笔记本。
将使用 SingleStore 的 Chatbot SQrL,它由 OpenAI 的 GPT-4 提供支持。它可以对 SingleStoreDB 相关问题提供即时且相关的答复。它可以帮助您进行部署、代码优化、集成、资源管理、故障排除等。
因此,我们将使用 SQrl 的帮助在我们的笔记本中进行查询,并将一些内容提供给我们创建的数据库。确保“Code with SQrL”处于 ON 模式。
假设您想要创建一个数据库,您只需询问 SQrL,它就会为您生成该数据库。
同样,让我们创建一个名为“cities”的表。 让我们要求 SQrL 也做同样的事情。
add table and 100 Indian cities in the database named 'saman' (we just created)
同样,要求它创建一个名为“population”的列,并为其提供一些虚拟数字。
add one more column 'Population' and add dummy population count
执行后,您将看到以下输出。
同样,我要求 SQrL 将以下内容添加到我的数据库中。
add one more column 'Developers' and add dummy developer count
您可以转到数据库仪表板并查看我们刚才通过笔记本输入数据库的示例数据。
这是一种在几秒或几分钟内向数据库提供大量数据的神奇方法。
我们将使用一个简单的 Node.js 应用程序在本地检索/显示此数据。
开始吧
npm init -y
安装 MySQL2 软件包,该软件包将允许您连接 Node.js 和 SingleStore,因为它们是有线兼容的 1。您可以通过在终端中运行以下命令来完成此操作:
npm install - save mysql2
要在本地主机端口 3009 上公开此数据,您需要使用 Express.js(一种流行的 Node.js Web 应用程序框架)之类的工具。确保使用 npm 安装 Express:
npm install express
此时,您的 package.json 应该如下所示
注意:如果 package.json 文件中不存在,请确保添加“type”:“module”。
创建一个index.js
文件,其中将包含我们的服务器代码。
import mysql from 'mysql2/promise';
import express from 'express';
// TODO: adjust these connection details to match your SingleStore deployment:
const HOST = '<your host end point>';
const USER = 'admin';
const PASSWORD = '<your password>';
const DATABASE = 'saman';
const app = express();
const port = 3009;
app.get('/', async (req, res) => {
// Create the connection
const conn = await mysql.createConnection({
host: HOST,
user: USER,
password: PASSWORD,
database: DATABASE
});
// Execute the query
const [rows, fields] = await conn.execute('SELECT * FROM cities');
// Return the results
res.send(rows);
await conn.end();
});
app.listen(port, () => {
console.log(`App running on http://localhost:${port}`);
});
确保将“HOST”、“PASSWORD”和“DATABASE”替换为您的特定参数。
可以通过您的工作区找到主机端点。
密码可以在“访问”选项卡中找到。
让我们添加所有这些参数,保存并运行应用程序。
node index.js
您应该看到您的应用程序在指定的本地主机上运行。
通过这种方式,我们可以轻松地自动化创建、更新数据库和检索数据的流程。
这些是帮助您入门的基本 SQL 命令。
-- Create a new database
CREATE DATABASE database_name;
-- Create a new table
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
);
-- Add a new column
ALTER TABLE table_name ADD column_name datatype;
-- Drop a column
ALTER TABLE table_name DROP COLUMN column_name;
-- Delete a table
DROP TABLE table_name;
-- Delete a database
DROP DATABASE database_name;
-- Insert data into a table
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
-- Update data in a table
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
-- Delete data from a table
DELETE FROM table_name WHERE condition;
- Selecting Data
-- Select all columns
SELECT * FROM table_name;
-- Select specific columns
SELECT column1, column2, ... FROM table_name;
-- Using WHERE clause for filtering
SELECT * FROM table_name WHERE condition;
-- Using multiple conditions with AND, OR
SELECT * FROM table_name WHERE condition1 AND/OR condition2;
-- Sorting data in ascending (ASC) or descending (DESC) order
SELECT * FROM table_name ORDER BY column_name ASC/DESC;
-- Count records
SELECT COUNT(column_name) FROM table_name;
-- Average of a column
SELECT AVG(column_name) FROM table_name;
-- Sum of a column
SELECT SUM(column_name) FROM table_name;
-- INNER JOIN
SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
-- LEFT JOIN
SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。