为什么使用数据库

为什么需要数据库?-知乎

相比与文件系统,数据库具有以下优势:

  • 高效率:查找效率高
  • 高可用:可数据库共享
  • 安全性强:数据不能随意修改

选择哪个数据库

数据库可以分为关系型数据库非关系型数据库

关系型数据库:是指采用了关系模型来组织数据的数据库,关系模型指的就是二维表格模型(一个表由行和列组成),而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

代表的数据库有:

非关系型数据库(NoSQL)NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”。以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对。

元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。

代表的数据库有:

参考1:关系型数据库和非关系型数据库区别、oracle与mysql的区别

参考2:非关系型数据库(NoSQL)相关概念介绍(附:常见的非关系型数据库)

参考3:数据库-维基百科

目前这个项目中使用的还是传统的MySQL数据库。

mysql2 使用

适用于Node.jsMySQL驱动,侧重于性能。支持预备语句,非utf8编码,二进制日志协议,压缩,ssl等。

地址:sidorares/node-mysql2

安装

npm install --save mysql2

使用

详细使用看sidorares/node-mysql2中的 README.md

简单使用例子:

// 获取实例
const mysql = require('mysql2'); // 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'test'
}); // 第一种查询数据的方式
connection.query(
'SELECT * FROM `table` WHERE `name` = "Page" AND `age` > 45',
function(err, results, fields) {
console.log(results); // results contains rows returned by server
console.log(fields); // fields contains extra meta data about results, if available
}
); // 另一种方式查询数据的方式
connection.query(
'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?',
['Page', 45],
function(err, results) {
console.log(results);
}
);

以上的数据库操作需要我们对SQL语句比较熟悉,如果不熟悉的话可以使用ORM来操作数据库。

为什么使用ORM

ORM全称:对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。对象关系映射-维基百科

使用ORM操作数据库,我们可以不用记住命令,只要使用ORM库提供的API即可实现相应的功能。

这里使用Sequelize来操作数据库,上面实现的例子只要记住基本的API

const user = await User.findAll({
where: {
name: 'Page',
age: 45
}
})

ps: 详细的Sequelize介绍可在后一章查看

Navicat

通过命令行的方式去查看数据库的数据显然不是一个好办法,这时候可视化查看和操作数据库的数据就显得很必要了,使用MySQL数据库的用户可以尝试使用Navicat for MySQL

Navicat for MySQL是管理和开发 MySQLMariaDB 的理想解决方案。了解更多 >官网

XAMPP

有些时候MySQL并不是那么容易安装,这时候可以使用集成的工具来安装,XAMPP就是个不错的选择。

XAMPP是最受欢迎的PHP开发环境 XAMPP是一个完全免费,易于安装的Apache发行版,其中包含MariaDBPHPPerlXAMPP开源软件包已设置为非常易于安装和使用。官网


咨询请加微信:轻撩即可。

全栈项目|小书架|服务器开发-Koa2 连接MySQL数据库(Navicat+XAMPP)的更多相关文章

  1. 全栈项目|小书架|服务器开发-Koa2 全局异常处理

    什么是异常 做开发的基本都知道异常,像Android开发中常见的ANR异常.空指针异常,服务器开发中经常遇到的异常404,500异常,还有一些其他常见的异常,具体可见HTTP状态码. 基本上这些异常可 ...

  2. 全栈项目|小书架|服务器开发-Koa2中间件机制洋葱模型了解一下

    KOA2 是什么? Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 asyn ...

  3. 全栈项目|小书架|服务器开发-Koa2 参数校验处理

    为什么需要做参数校验 在开发中,无论是App开发还是服务器接口开发, 我们无法去预测用户传入的数据,因此参数(数据)校验是开发中不可或缺的一环. 例如像App的注册登录表单提交页面,就要做好多层的判断 ...

  4. 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证

    通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...

  5. 全栈项目|小书架|服务器开发-NodeJS 项目分包

    唠嗑 参考的是慕课网七月老师的课程,七月的课质量真的挺高的,推荐一波.这次的小书架项目源码不会全部公开,因为用了七月老师课程的绝大部分代码.虽然代码不全,但是只要思路看得懂,代码实现就很简单了. 小书 ...

  6. 全栈项目|小书架|服务器开发-JWT 详解

    JWT 官方简介:Introduction to JSON Web Tokens 文章基本是官网内容的翻译,英文不错的同学可点击上面的链接直接看英文文档. 什么是 JWT JWT全称是JSON Web ...

  7. 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库

    安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...

  8. 全栈项目|小书架|服务器开发-Koa全局路由实现

    什么是路由 路由就是具体的访问路径,指向特定的功能模块.一个api接口是由ip(域名)+端口号+路径组成,例如 :https://www.npmjs.com/package/koa-router就是一 ...

  9. 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...

随机推荐

  1. 【POJ1321】棋盘问题

    本题传动门 本题知识点:深度优先搜索 + 枚举 + 回溯 题意是要求我们把棋子放在棋盘的'#'上,但不能把两枚棋子放在同一列或者同一行上,问摆好这k枚棋子有多少种情况. 我们可以一行一行地找,当在某一 ...

  2. mysql 提示ssl问题

    问题信息如下: rements SSL connection must be established by default if explicit option isn't set. For comp ...

  3. Res-DenseNetSegmentation模型调试记录

    参考:https://blog.csdn.net/AbstractSky/article/details/76769202 https://blog.csdn.net/jsliuqun/article ...

  4. JavaBitSet学习

    一.背景 之前公司项目需要对会员人群进行去重过滤,人群的维度是user_id: 因此采用了BitSet做简单的去重,方案将user_id作为bitset中的bit索引: 通过and\or\xor基础运 ...

  5. Service Fabric独立集群搭建

    开篇声明:巨坑,慎入.若实则无奈,建议直接上azure... 1.  开启服务器自动更新,安装最新的补丁. 2.  下载用于 Windows Server 的 Service Fabric 包(htt ...

  6. 啃OBS源码-界面汉字

    插件对应该字体目录:D:\project\vs\obs\obsstudio21.12\build\rundir\Debug\data\obs-plugins obs对应该字体目录:D:\project ...

  7. H5 FormData对象的使用——进行Ajax请求并上传文件

    XMLHttpRequest Level2 添加了一个新的接口——FormData .[ 主要用于发送表单数据,但也可以独立使用于传输键控数据.与普通的Ajax相比,它能异步上传二进制文件 ] 利用F ...

  8. 转:【微信公众号】微信snsapi_base静默授权与snsapi_userinfo网页授权的实现(不建议使用静默,直接用主动比较方便)

    版权声明:本文为CSDN博主「小璐謌」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/qq_37462176/ ...

  9. ElasticSearch5.2.2 安装(老版本)

    https://www.elastic.co/downloads/elasticsearchElasticSearch是一个高可扩展的开源的全文搜索分析引擎.它允许你快速的存储.搜索和分析大量数据.E ...

  10. Git push origin dev-rgq-istokenstatus 【dev-rgq-istokenstatus -> dev-rgq-istokenstatus】

    RenGuoQiang@PC-RENGUOQIANG MINGW64 /d/zgg/zgg-crm (dev-rgq-istokenstatus) $ git push origin dev-rgq- ...