什么是数据库查询?SQL和NoSQL查询说明

作者 : IT 大叔 本文共5675个字,预计阅读时间需要15分钟 发布时间: 2020-09-1

数据库对于构建应用程序至关重要。它们存储使我们的应用程序按其应有的方式工作的数据。一个数据库查询是数据库的数据的请求,所以我们可以检索或操纵它。但是,什么时候查询数据库,究竟在做什么呢?

在本文中,我们将向您介绍具有多种常见用途的数据库查询,包括SQL,NoSQL,MongoDB,PostgreSQL等。您将学习何时使用数据库查询以及最佳实践。让我们开始吧!

在本文中,我们将学习:

  • 什么是数据库查询?
  • 什么是示例查询?
  • 数据库查询语言
  • 使用PostgreSQL查询
  • 使用MongoDB查询
  • 使用猫鼬查询

了解数据库的基本概念。

了解数据库,关系图,规范化和SQL的基础。

什么是数据库查询?

从高度上讲,查询是一个问题。当我们谈论与他人有关的查询时,我们期望得到某种答案。当我们执行数据库查询时,这对于计算机没有什么不同。

数据库查询是与某种CRUD(创建,读取,更新,删除)功能最密切相关的类似操作。数据库查询是对访问数据库中的数据进行操作或检索的请求。

这使我们能够对响应查询而获得的信息执行逻辑。有几种不同的查询方法,从使用查询字符串到使用查询语言编写,或者使用诸如GraphQL或REST之类的QBE进行。

借助GraphQL,用户可以查询和仅接收他们正在寻找的特定数据。不多不少。

注意: GraphQL允许您请求特定数据,从而使客户端可以更好地控制发送哪些信息。

对于称为REST的替代体系结构,这更加困难,因为后端定义了URL上每个资源可使用的数据。

查询参数

查询参数作为查询字符串的一部分放在URL的末尾。这就是搜索引擎如何获取用户在搜索栏中输入的参数的搜索结果。您还可以将查询参数添加到端点的末尾以帮助分页。

什么是数据库查询?SQL和NoSQL查询说明插图

什么是数据库查询?SQL和NoSQL查询说明插图(2)

注意:使用查询参数时,大多数情况下无需了解或使用实际的查询语言。

什么是示例查询?

“示例查询”(QBE)由IBM的一位计算机科学家在1970年代提出,它是一种无需使用查询语言的数据库过滤或搜索系统。

它是为您完成的。QBE的时间表与结构化查询语言(SQL)的开发同时发生,我们将在下一部分中进行介绍。

用户很可能会填写图形用户界面。提交后,查询将在后台进行构建。这样可以避免丢失输入错误,因为查询仅根据给定的信息进行构建,而不是期望特定信息的预构建查询。

让我们来看一个例子。

Title: Jurassic Park
 Director: Steven Spielberg
     Year: 
 Language: 
  Release:

创建的结果SQL:

SELECT * FROM Movies WHERE Title=Jurassic Park AND Director='Steven Spielberg';

这是可用于生成SQL的QBE表单类型的非常基本的示例。其他形式将使用下拉菜单来添加其他SQL关键字,如LIKECONTAINS等。

QBE为最终用户开发铺平了道路,允许那些不是专业软件开发人员或程序员的人员扩展软件以满足他们的需求。它目前用于关系数据库和某些面向对象的数据库中。

数据库查询语言

查询语言使我们能够对数据库采取实际行动。它使我们能够创建,读取,更新和删除数据库中的项目,以及更高级的查询(如过滤和计数)。

结构化查询语言(SQL)是最著名的查询语言。SQL与1970年代IBM开发的Query by Example(QBE)系统一起成长。它是关系数据库的基础。

使用SQL,我们可以在RDBMS(关系数据库管理系统)中使用称为查询的简单代码段来存储,检索和处理数据。

数据以结构化的方式存储在RDBMS中,其中数据中的不同实体和变量之间存在关系。

这些关系由数据库架构定义,该数据库架构指定了各种实体与实体的数据组织之间的关系。

什么是数据库查询?SQL和NoSQL查询说明插图(4)

SQL的目的

定义数据

  • 使用创建数据库 CREATE DATABASE my_database;
  • 使用以下方法创建表:
CREATE TABLE my_table(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   columnN datatype,
   PRIMARY KEY( columnName )
);
  • 删除数据库 DROP DATABASE my_database;
  • 放一张桌子 DROP TABLE my_table;

处理数据

  • 将数据库与 USE my_database;
  • 使用以下命令将数据插入数据库:
INSERT INTO my_table (column1, column2, column3,columnN)  
VALUES (value1, value2, value3,valueN);
  • 通过以下方式选择数据: SELECT column1, column2, columnN FROM my_table;
  • 选择具有特定条件的数据:
SELECT column1, column2, columnN 
FROM my_table
WHERE [condition] // use LIKE, CONTAINS, <, >, etc. here
  • 更新查询:
UPDATE my_table
SET column1 = value1, column2 = value2, columnN = valueN
WHERE [condition]; 
  • 删除查询:
DELETE FROM my_table
WHERE [condition];

控制数据

  • 交易:
COMMIT;
ROLLBACK;

SQL是为关系数据库创建结构化查询的基础。SQL还有许多其他的“风味”,它们各自以自己的方式使用SQL。SQL的不同版本包括Oracle PL / SQL,PostgreSQL和Microsoft Transact-SQL。从高层次看,所有这些都非常相似,但是对于某些操作,每种可能都有自己的语法

继续学习。

Maser数据库和SQL,而无需查看视频或文档。Educative的基于文本的课程易于浏览,并具有实时编码环境,从而使学习快速高效。

使用PostgreSQL的RDBMS

1.使用文档来创建一个文件,该文件设置与Postgres的配置和连接。

2.创建表

3.运行创建表的函数

4.使用Express创建简单的服务器

5. GET请求到示例API:

app.get('/info, (req, res) => {
pool.connect((err, client, done) => {
    const query = 'SELECT * FROM my_table;
    client.query(query, (error, result) => {
      done();
      if (error) {
        res.status(400).json({error})
      } 
      if(result.rows < '1') {
        res.status(404).send({
        status: 'Failed',
        message: 'No information found',
        });
      } else {
        res.status(200).send({
        status: 'Successful',
        message: Information retrieved',
        results: result.rows,
        });
      }
    });
  });
});
 

6. POST请求到示例API:

app.post('/info, (req, res) => {
  const data = {
    name : req.body.name,
    age : req.body.age,
    address : req.body.address,
    city : req.body.city,
    state : req.body.state,
  }
 
  pool.connect((err, client, done) => {
    const query = 'INSERT INTO my_table(name,age, address, city, state) VALUES($1,$2,$3,$4,$5) RETURNING *';
    const values = [data.name, data.age, data.address, data.city, data.state];
 
    client.query(query, values, (error, result) => {
      done();
      if (error) {
        res.status(400).json({error});
      }
      res.status(202).send({
        status: 'Successful',
        result: result.rows[0],
      });
    });
  });
});
 

使用MongoDB的NoSQL

1.使用文档来创建一个文件,以建立与MongoDB的配置和连接。

2.创建架构

3. GET请求样本API:

什么是数据库查询?SQL和NoSQL查询说明插图(6)

const client = new MongoClient(uri);
 
async function runMongo() {
  try {
    await client.connect();
 
    const database = client.db("my_database");
    const collection = database.collection("movies");
 
    // Query for a movie that has the title 'Jurassic Park'
    const query = { title: "Jurassic Park" };
 
    const options = {
      projection: { _id: 0, title: 1, imdb: 1 },
    };
 
    const movie = await collection.findOne(query, options);
    console.log(movie);
  } finally {
    await client.close();
  }
}
runMongo().catch(console.dir);
 

4. POST请求到示例API:

const client = new MongoClient(uri);
 
async function runMongo() {
  try {
    await client.connect();
 
    const database = client.db("my_database");
    const collection = database.collection("movies");
    // create a document to be inserted
    const doc = { title: "Jurassic World", imdb: {rating: 4.0, votes: 32333, id: 241567}};
    const result = await collection.insertOne(doc);
 
    console.log(
      `${result.insertedCount} documents were inserted with the _id: ${result.insertedId}`,
    );
  } finally {
    await client.close();
  }
}
runMongo().catch(console.dir);
 

NoSQL使用Mongoose – MongoDB的框架

1.使用文档来创建一个文件,以建立与Mongoose和Express的配置和连接。

2.创建架构

3. GET Sample API请求:

什么是数据库查询?SQL和NoSQL查询说明插图(8)

app.get('/info, async (req, res) => {
      let movies = await collection.find() {
      if(movies){
          res.status(200).json(movies);
      } else {
          res.status(500).json(movies not found);
      }
 });

4. POST请求样本API:

app.post('/info, async (req, res) => {
      const { title, imdb } = req.body;
      let movie = new Movie({title, imdb});
      Movies.save((err, movie)=> {
          if(movie){
                 res.status(201).json(movie);
          } else {
          res.status(500).json(movies not posted);
          }
});

接下来要学什么

恭喜!在本文中,我们介绍了遇到查询的各种方法。关系数据库,NoSQL数据库,搜索引擎,SQL和QBE只是您可能会遇到查询和查询语言的各种方式中的一些。

关于数据库和查询,还有很多东西要学习。接下来要学习的是:

  • 资料建模
  • 实体关系模型
  • 功能依赖
  • SQL运算符
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 什么是数据库查询?SQL和NoSQL查询说明

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论