Node.js 入门 —— 数据库

1 前言

本文内容来自bilibili 黑马程序员

2 数据库的基本概念

2.1 什么是数据库

  • 数据库(database)是用来组织、存储和管理数据的仓库
  • 当今世界是一个充满着数据的互联网世界,充斥着大量的数据。数据的来源有很多,比如出行记录、消费记录,浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都足数据
  • 为了方便管理互联网世界中的数据,就有了数据库管理系统的概念 (简称:数据库)。用户可以对数据库中的数据进行新增、查询、更新、删除等操作

2.2 常见的数据库及分类

市面上的数据库有很多种,最常见的数据库有如下几个:

  • MysQL 数据库 (目前使用最广泛、流行度最高的开源免费数据库;Community + Enterprise)
  • Oracle 数据库(收费)
  • SQL Server 数据库(收费)
  • Mongodb 数据库 (Community + Enterprise)

其中,MysQL、 Oracle、 SQL Server 属于传统型数据库 (又叫做:关系型数据库 或 SQL 数据库),这三者的设计理念相同,用法比较类似。
而 Mongodb 属于新型数据库 (又叫做:非关系型数据库 或 NoSQL 数据库),它在一定程度上弥补了传统型数据库的缺陷。

2.3 传统型数据库的数据组织结构

在传统型数据库中,数据的组织结构分为数据库(database)、数据表(table)、数据行(row)和字段(field)这4个部分组成

  • 在实际项目开发中,一般情况下,每个项目都对应独立的数据库
  • 不同的数据,要存储到数据库的不同表中,例如:用户数据存储到 users 表中,图书数据存储到 books 表中
  • 每个表中具体存储哪些信息,由字段来决定,例如:我们可以为 users 表设计 id 、 uername 、 password 这3个字段
  • 表中的行,代表每一条具体的数据

3 mysql 的基本使用

3.1 什么是 SQL

SQL(英文全称:Structured Query Language)是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据

  • SQL是一门数据库编程语言
  • 使用 SQL 语言编写出来的代码,叫做 SQL 语句SQL语言只能在关系型数据库中使用(例如 MysQL Oracle. SQl Server),非关系型数据库(例如 Mongodb)不支持 SQL 语言

3.2 SQL 能做什么

  1. 从数据库中查询数据
  2. 向数据库中插入新的数据
  3. 更新数据库中的数据
  4. 从数据库删除数捃
  5. 可以创建新数据库
  6. 可在数据库中创建新表
  7. 可在数据库中创建存储过程、视图
  8. etc…

3.3 SQL 的学习目标

  • 重点掌握如何使用 SQL 从数据表中:
    查询数据(select)、插入数据(insert into)、更新数据(update)、删除数据(delete)
  • 额外需要掌握 4 中语法:
    where 条件、 and 和 or 运算符、 order by 排序、 count(*)函数
3.3.1 SELECT 语句

SELECT 语句用于从数据表中查询数据,执行结果被存储在一个结果表(结果集)中

SELECT * FROM 表名
SELECT 列名 FROM 表名
3.3.2 INSERT INTO 语句

INSERT INTO 语句用于向数据表中插入新的数据行

INSERT INTO 表名(1,2, ...) VALUES (1,2, ...)
3.3.3 UPDATE 语句

UPDATE 语句用于更新数据表某一行中的某一列

UPDATE 表名 SET1='值1' WHERE 列名='值'
UPDATE 表名 SET1='值1',2='值2' WHERE 列名='值'
3.3.4 DELETE 语句

DELETE 语句用于更新数据表某一行中的某一列

DELETE FROM 表名 WHERE 列名='值'

4 在项目中操作 MySQL

  1. 安装操作 MySQL 数据库的第三方模块(mysql)
  2. 通过 mysql 模块连接到 MySQL 数据库
  3. 通过 mysql 模块执行 SQL 语句
npm i mysql
const mysql = require('mysql')
// 通过 mysql 模块连接到 MySQL 数据库
const db = mysql.createPool({
  host: '', // 数据库的 IP 地址
  user: '', // 登录数据库的账号
  password: '', // 登录数据库的密码
  database: '' // 指定要操作哪个数据库
})
4.1 查询数据
db.query('SELECT * FROM users', (err ,res) => {
  if(err) return console.log(err.message);
  console.log(res);
})
4.2 插入数据
// 向 user 表中新增一条数据
const user = {
  username: 'zs',
  password: 'zs'
}
// 定义待执行的 SQL 语句
const sql = 'INSERT INTO users (username, password) VALUES(?, ?)'
// 执行 SQL 语句
db.query(sql, [user.username, user.password], (err, res) => {
  if(err) return console.log('执行 SQL 语句失败了')
  if(res.affectedRows === 1) console.log('插入数据成功');
})

便捷方式

const user = {
  username: 'ls',
  password: 'ls'
}
const sql = 'INSERT INTO users SET ?'
db.query(sql, user, (err, res) => {
  if(err) return console.log('执行 SQL 语句失败了')
  if(res.affectedRows === 1) console.log('插入数据成功');
})
4.3 更新数据
const user = {
  id: 20,
  username: 'ls',
  password: 'ls'
}
const sql = 'UPDATE users SET username=?, password=? WHERE id=?'
db.query(sql, [user.username, user.password, user.id], (err, res) => {
  if (err) return console.log('执行 SQL 语句失败了')
  if (res.affectedRows === 1) console.log('更新数据成功');
})

便捷方式

const user = {
  id: 19,
  username: 'ls',
  password: 'ls'
}
const sql = 'UPDATE users SET ? WHERE id=?'
db.query(sql, [user, user.id], (err, res) => {
  if (err) return console.log('执行 SQL 语句失败了')
  if (res.affectedRows === 1) console.log('更新数据成功');
})
4.4 删除数据
const sql = 'DELETE FROM users WHERE id=?'
db.query(sql, 20, (err, res) => {
  if (err) return console.log('执行 SQL 语句失败了')
  if (res.affectedRows === 1) console.log('删除数据成功');
})

标记删除:

  • 使用 DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。
  • 所谓的标记删除,就是在表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除。
  • 当用户执行了删除的动作时,我们并没有执行 DELETE 语句把数据删除掉,而是执行了 UPDATE 语句,将这条数据对应的 status 字段标记为删除即可。
const sql = 'UPDATE users SET status=? WHERE id=?'
db.query(sql, [1, 21], (err, res) => {
  if (err) return console.log('执行 SQL 语句失败了')
  if (res.affectedRows === 1) console.log('标记删除数据成功');
})
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值