node.js学习笔记5 MySQL数据库的基本使用、使用mysql模块在项目中操作MySQL


1. 数据库的基本概念

数据库是用来组织、存储和管理数据的仓库

1.1 常见的数据库及分类

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

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

其中,MySQLOracleSQL Server属于传统型数据库(又叫关系型数据库)
Mongodb属于新型数据库(又叫非关系型数据库)

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

传统型数据库中,数据的组织结构分为数据库数据表数据行字段

1.3 实际开发中库、表、行、字段的关系

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

2. 安装并配置MySQL

对于开发人员,只需要安装 MySQL ServerMySQL Workbench 这两个软件,就能满足开发的需要了

  • MySQL Server:专门用来提供数据存储和服务的软件
  • MySQL Workbench:可视化的 MySQL 管理工具,通过它可以方便地操作存储在 MySQL Server 中的数据

具体安装过程在这不记录了,教程也很多可以自己搜

3. MySQL的基本使用

3.1 使用MySQL Workbench管理数据库

  1. 连接数据库
    请添加图片描述请添加图片描述
    请添加图片描述
  2. 创建数据库
    请添加图片描述
  3. 创建数据表
    请添加图片描述
    请添加图片描述
    DataType数据类型:int整数、varchar字符串、tinyint(1)布尔值
    字段的特殊标识:
    • PK(Primary Key):主键、唯一标识(这里的id就要勾上PK)
    • NN(Not Null):值不允许为空
    • UQ(Unique):值唯一
    • AI(Auto Increment):值自动增长(一般id的值勾上AI,这样不用人为修改可以自动递增)
  4. 向表中写入数据
    请添加图片描述
    请添加图片描述

3.2 使用SQL管理数据库

3.2.1 SQL是什么

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

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

3.2.2 SQL能做什么

  • 从数据库中查询数据
  • 向数据库中插入新的数据
  • 更新数据库中的数据
  • 从数据库删除数据

3.2.3 SQL的 SELECT 语句

语法:
SELECT语句用于从表中查询数据。执行的结果被存储在一个结果表中(称为结果集)。语法格式如下:

-- 从 FROM 指定的表中,查询出所有的数据,*表示所有列
SELECT * FROM 表名

-- 从 FROM 指定的表中,查询出指定字段的数据
SELECT 字段名 FROM 表名

⚠️:SQL语句中的关键字对大小写不敏感
例:在users表中,获取名为usernamepassword请添加图片描述
的字段内容

SELECT username, password FROM users

请添加图片描述

3.2.4 SQL的 INSERT INTO 语句

语法:
INSERT INTO语句用于向数据表中插入新的数据行。语法格式如下:

-- 注意:字段和值要一一对应,多个字段和多个值之间,使用英文的逗号分隔
INSERT INTO table_name (字段1,字段2...) VALUES(值1,2...

例:向users表中,插入一条usernameTompassword111111的用户数据

INSERT INTO users (username, password) values ('Tom', '111111')

请添加图片描述

3.2.5 SQL的 UPDATE 语句

语法:
Update语句用于修改表中的数据。语法格式如下:

-- UPDATE 指定要更新哪个表中的数据
-- SET 指定字段对应的新值
-- WHERE 指定更新的条件
UPDATE 表名 SET 字段名 = 新值 WHERE 字段名 = 某值

例:将users表中id为1的用户密码,更新为888888

UPDATE users SET password='888888' WHERE id=1

请添加图片描述

例:将users表中id为2的用户密码更新为888888,用户状态更新为1

-- 更新多个字段用英文逗号分割
-- ⚠️:不要忘记写WHERE条件,否则会导致整张表的数据都被更新
UPDATE users SET password='888888', status=1 WHERE id=2

请添加图片描述

3.2.6 SQL的 DELETE 语句

语法:
DELETE语句用于删除表中的行。语法格式如下:

-- 从指定表中,根据WHERE条件,删除对应的数据行
DELETE FROM 表名 WHERE 字段名 = 某值

例:从users表中删除id为3的用户

-- ⚠️:不要忘记写WHERE条件,否则会导致误删整张表的数据
DELETE FROM users WHERE id=3

请添加图片描述

3.2.7 SQL的 WHERE 子句

语法:
WHERE子句用于限定选择的标准

-- 查询users表中 id大于2 的所有用户
SELECT * FROM users WHERE id>2
-- 查询users表中 username不等于admin 的所有用户
SELECT * FROM users WHERE username<>'admin'

3.2.8 SQL的AND和OR运算符

ANDOR可以在WHERE子语句中把两个或多个条件结合起来
AND相当于js中的&&运算符
OR相当于js中的||运算符

-- 查找所有状态为0且id小于3的用户
SELECT * FROM users WHERE status=0 AND id<3

-- 查找所有状态为1或username为AIpoem的用户
SELECT * FROM users WHERE status=1 OR username='AIpoem'

3.2.9 SQL的ORDER BY 子句

语法:
ORDER BY语句用于根据指定的字段结果集进行排序
默认按照升序对记录进行排序(使用ASC关键字也能达到升序效果)
如果希望按照降序,可使用DESC关键字

-- 对users表中的数据,按照id字段进行升序排序
SELECT * FROM users ORDER BY id;

-- 对users表中的数据,按照id字段进行降序排序
SELECT * FROM users ORDER BY id DESC;

多重排序:

-- 对users表中的数据,先按照status字段进行降序排序,再按照username的字母排序进行升序排序
SELECT * FROM users ORDER BY status DESC, username ASC

3.2.10 SQL的 COUNT(*) 子句

语法:
COUNT(*)函数用于返回查询结果的总数据条数

-- 查询users表中status为0的总数据条数
SELECT COUNT(*) FROM users WHERE status=0

-- 使用AS设置别名
SELECT COUNT(*) AS total FROM users WHERE status=0

4. 在项目中操作MySQL

4.1 在项目中操作数据库的步骤

  1. 安装操作MySQL数据库的第三方模块(mysql)
  2. 通过mysql模块连接到MySQL数据库
  3. 通过mysql模块执行SQL语句
    在这里插入图片描述

4.2 安装与配置mysql模块

4.2.1 安装mysql模块

mysql模块是托管于npm上的第三方模块。它提供了在Node.js项目中连接操作MySQL数据库的能力
要在项目中使用它,需要先将mysql安装为项目的依赖包

 npm install mysql

4.2.2 配置mysql模块

配置步骤:

// 1.导入mysql模块
const mysql = require('mysql')
// 2.建立与MySQL数据库的连接
const db = mysql.createPool({
  host: '127.0.0.1',	// 数据库的IP地址
  user: 'root',			// 登陆数据库的账号
  password: '123456',	// 登陆数据库的密码
  database: 'my_db_01'	// 指定要操作哪个数据库
})

4.2.3 测试mysql模块能否正常工作

调用db.query()函数,指定要执行的SQL语句,通过回调函数拿到执行的结果:

db.query('SELECT 1', (err,results) => {
  // mysql模块工作期间报错
  if (err) return console.log(err.message)
  // 打印出来[ RowDataPacket { '1': 1 } ]证明数据库连接正常
  console.log(results)
})

4.3 使用mysql模块操作MySQL数据库

4.3.1 查询数据

// 查询users表中所有的用户数据
db.query('SELECT * FROM users', (err,results) => {
  // 查询失败
  if (err) return console.log(err.message)
  // 查询成功
  console.log(results)
})

在这里插入图片描述

4.3.2 插入数据

向users表中新增数据,其中username为Tom,password为123456

// 1.要插入到users表中的数据对象
const userObj = { username: 'Tom', password: '123456'}
// 2.待执行的SQL语句,其中英文的 ? 表示占位符
const sqlStr = 'INSERT INTO users (username, password) VALUES (?,?)'
// 3.使用数组的形式,依次为 ? 占位符指定具体的值
db.query(sqlStr, [userObj.username,userObj.password],(err,results) => {
  if (err) return console.log(err.message)	// 插入失败
  // 插入成功
  // 可以通过results对象的affectedRows属性判断是否插入数据成功
  if (results.affectedRows === 1) {
    console.log('插入数据成功!')
  }
})

插入数据的便捷方式:
要注意数据表的字段名和数据对象的属性名一一对应

// 1.要插入到users表中的数据对象
const userObj = { username: 'Tom', password: '123456'}
// 2.待执行的SQL语句,其中英文的 ? 表示占位符
const sqlStr = 'INSERT INTO users SET ?'
// 3.直接将数据对象当作占位符的值
db.query(sqlStr, userObj, (err,results) => {
  if (err) return console.log(err.message)	// 插入失败
  // 插入成功
  if (results.affectedRows === 1) {
    console.log('插入数据成功!')
  }
})

4.3.3 更新数据

// 1.要更新的数据对象
const upUserObj = {id: 1, username: 'Pat', password: '000000'}
// 2.要执行的sql语句
const sqlStr = 'UPDATE users SET username=?, password=? WHERE id=?'
// 3.使用数组依次为占位符制定具体的值
db.query(sqlStr, [upUserObj.username,upUserObj.password,upUserObj.id], (err,results) => {
  if (err) return console.log(err.message) // 更新失败
  if (results.affectedRows === 1) {
    console.log('更新数据成功!');
  }
})

更新数据的便捷方式:

// 1.要更新的数据对象
const upUserObj = {id: 1, username: 'Pat', password: '000000'}
// 2.要执行的sql语句
const sqlStr = 'UPDATE users SET ? WHERE id=?'
// 3.使用数组依次为占位符制定具体的值
db.query(sqlStr, [upUserObj,upUserObj.id], (err,results) => {
  if (err) return console.log(err.message) // 更新失败
  if (results.affectedRows === 1) {
    console.log('更新数据成功!');
  }
})

4.3.4 删除数据

在删除数据时,推荐根据id这样的唯一标识来删除对应的数据

// 1.要执行的sql语句
const sqlStr = 'DELETE FROM users WHERE id=?'
// 2.为占位符制定具体的值
// 删除id为1的数据
db.query(sqlStr, 1, (err,results) => {
  if (err) return console.log(err.message) // 更新失败
  if (results.affectedRows === 1) {
    console.log('删除数据成功!');
  }
})

⚠️:如果sql语句中有多个占位符,则必须使用数组来为每个占位符制定具体的值
如果sql语句中只有一个占位符,则可以省略数组

4.3.5 标记删除

使用DELETE语句,会把数据从表中真正地删除。
为了保险起见,更推荐使用标记删除的形式,来模拟删除的动作

所谓标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除
当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句将这条数据的status字段标记为删除

// 使用UPDATE代替DELETE
db.query('UPDATE users SET status=1 WHERE id=?',1,(err,results) => {
  if (err) return console.log(err.message) // 更新失败
  if (results.affectedRows === 1) {
    console.log('删除数据成功!');
  }
})


新年偷了几天懒没学习嘿嘿

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 全栈完整项目包括uniapp小程序、vue后台管理系统、node.js完整项目mysql数据库。这个项目的目标是开发一个全面的解决方案,用于构建一个多平台的应用程序。 首先,我们将使用uniapp小程序开发前端界面。uniapp是一个跨平台开发框架,可以同时适用于微信小程序、支付宝小程序、H5、安卓和iOS等平台。我们可以使用uniapp提供的各种组件和API来创建用户界面和交互。 其次,我们将使用vue框架开发后台管理系统。Vue是一个轻量级的JavaScript框架,它提供了一种优雅的方式来构建用户界面。我们可以使用Vue的组件化开发思想和工具来构建管理系统的各个模块和功能。 然后,我们将使用node.js开发后端服务器。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以用于构建高性能的网络应用程序。我们可以使用Node.js的各种模块和框架来处理前端请求、访问数据库、实现业务逻辑等。 最后,我们将使用mysql数据库存储数据。MySQL是一个流行的关系型数据库管理系统,可以用于存储和管理应用程序的数据。我们可以使用mysql的SQL语言来定义表结构、插入和更新数据、执行查询等操作。 这个全栈完整项目将涵盖前端开发、后台开发、数据库设计和管理等多个方面。通过使用不同的技术和工具,我们可以构建一个功能齐全、用户友好的应用程序,并能在多个平台上运行。 ### 回答2: 全栈完整项目是指开发人员可以同时处理前端、后端和数据库的开发工作。在这个问题,需要开发一个包括uniapp小程序、vue后台管理系统和node.js完整项目的全栈应用,并使用mysql数据库进行数据存储。 首先,我会基于uniapp框架开发一个小程序。uniapp是一个跨平台开发框架,可以同时开发iOS和Android平台的应用。我将使用vue语法进行开发,利用uniapp提供的组件和API实现小程序的各种功能,如用户登录、数据展示等。 其次,我会开发一个vue后台管理系统。vue是一个流行的前端框架,用于构建单页应用。我将使用vue和element-ui等插件来实现后台管理系统的前端界面,包括用户管理、数据统计等功能,并通过API与后端进行数据交互。 然后,我会使用node.js开发一个完整的后端项目node.js是一个基于JavaScript运行的服务器端框架,具有高效、轻量级和事件驱动等特点。我将使用node.js编写服务器端的逻辑处理代码,包括用户认证、数据处理等功能。同时,我会使用express框架来简化开发流程,并使用mysql数据库进行数据的存储和查询。 最后,我会使用mysql数据库进行数据管理。mysql是一种常见的关系型数据库管理系统,我将使用它来设计和管理我所开发的全栈应用所需要的表结构,并使用SQL语言进行数据的增删改查操作。 综上所述,我将使用uniapp、vue、node.jsmysql等技术栈,开发一个包含小程序、后台管理系统和完整的后端项目的全栈应用。这个应用将具备完整的功能,同时满足用户的需求,并且可以对数据进行有效地管理。 ### 回答3: 全栈开发是指一个开发者可以独自负责开发一个完整的项目,包括前端、后端和数据库的搭建与开发。以下是一个使用uniapp小程序作为前端、vue作为后台管理系统、node.js作为后端、mysql作为数据库的全栈完整项目的描述。 该项目的目标是开发一个综合性的小程序,实现包括用户登录注册、商品展示、购物车管理、订单生成等功能。具体的技术选型如下: 1. 前端部分使用uniapp小程序进行开发。Uniapp是一个使用 Vue.js 进行开发跨平台应用的前端框架,支持一次开发,多平台发布。开发者可以使用Vue的语法进行UI界面的开发,并集成了微信小程序的API。 2. 后台管理系统使用vue进行开发。Vue是一个轻量级的JavaScript框架,可以快速搭建用户友好的界面。通过使用Vue,我们可以开发出一个方便管理商品、订单等数据的后台管理系统。 3. 后端使用node.js进行开发。Node.js是一个基于Chrome V8引擎的开源后台运行环境,使用JavaScript进行编写。通过使用Node.js,我们可以实现用户登录注册、商品数据的增删改查等后端逻辑。 4. 数据库使用mysql进行搭建。MySQL是一个开源的关系型数据库管理系统,提供了高效稳定的数据存储和查询。通过使用mysql,我们可以存储用户信息、商品信息、订单信息等数据。 在项目开发过程,我们可以使用uniapp提供的API与微信小程序进行交互,实现用户登录注册、商品展示等功能。通过vue开发后台管理系统,可以实现对商品和订单等数据的管理。并且,通过node.js连接mysql数据库,实现对数据的增删改查操作。 全栈开发者需要具备前端、后端以及数据库的知识和能力,能够独立进行应用开发和维护。这个全栈完整项目的开发将会全面锻炼开发者的技术水平,并且能够快速响应需求变化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值