如何通过node.js操作后台数据库

  • 如何通过node.js操作后台数据库已关闭评论
  • 170 次浏览
  • A+
所属分类:Web前端
摘要

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



  • 常用的数据库代码
-- 通过 * 把 users 表中所有的数据查询出来 -- select * from users  -- 从 users 表中把 username 和 password 对应的数据查询出来 -- select username, password from users  -- 向 users 表中,插入新数据,username 的值为 tony stark  password 的值为 098123 -- insert into users (username, password) values ('tony stark', '098123') -- select * from users  -- 将 id 为 4 的用户密码,更新成 888888 -- update users set password='888888' where id=4 -- select * from users  -- 更新 id 为 2 的用户,把用户密码更新为 admin123  同时,把用户的状态更新为 1 -- update users set password='admin123', status=1 where id=2 -- select * from users  -- 删除 users 表中, id 为 4 的用户 -- delete from users where id=4 -- select * from users  -- 演示 where 子句的使用 -- select * from users where status=1 -- select * from users where id>=2 -- select * from users where username<>'ls' -- select * from users where username!='ls'  -- 使用 AND 来显示所有状态为0且id小于3的用户 -- select * from users where status=0 and id<3  -- 使用 or 来显示所有状态为1 或 username 为 zs 的用户 -- select * from users where status=1 or username='zs'  -- 对users表中的数据,按照 status 字段进行升序排序 -- select * from users order by status  -- 按照 id 对结果进行降序的排序  desc 表示降序排序   asc 表示升序排序(默认情况下,就是升序排序的) -- select * from users order by id desc  -- 对 users 表中的数据,先按照 status 进行降序排序,再按照 username 字母的顺序,进行升序的排序 -- select * from users order by status desc, username asc  -- 使用 count(*) 来统计 users 表中,状态为 0 用户的总数量 -- select count(*) from users where status=0  -- 使用 AS 关键字给列起别名 -- select count(*) as total from users where status=0 -- select username as uname, password as upwd from users 

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

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

字段的特殊标识

  1. PK(Primary Key)主键、唯一标识
  2. NN(Not Null)值不允许为空
  3. UQ(Unique)值唯一
  4. AI(Auto Increment)值自动增长

在项目中使用Mysql数据库

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

  1. 安装操作 MySQL 数据库的第三方模块(mysql)
  2. 通过 mysql 模块连接到 MySQL 数据库
  3. 通过 mysql 模块执行 SQL 语句

如何通过node.js操作后台数据库

安装mysql模块

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

npm install mysql 

配置mysql模块

在使用 mysql 模块操作 MySQL 数据库之前,必须先对 mysql 模块进行必要的配置,主要的配置步骤如下:

如何通过node.js操作后台数据库

测试mysql模块是否可以正常工作

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

const mysql = require('mysql')  const db = mysql.createPool({   host: '127.0.0.1',   user: 'root',   password: 'root',   database: 'bookman', })  //检查mysql模块是否正常使用 db.query('SELECT 1', (err, results) => {   if (err) return console.log(err.message);   //只要可以输出[ RowDataPacket { '1': 1 } ]的结果,就证明数据库链接没问题。   console.log(results); }) 

查询语句

查询表中数据示例:

const mysql = require('mysql')  const db = mysql.createPool({   host: '127.0.0.1',   user: 'root',   password: 'root',   database: 'bookman', })   db.query('SELECT * FROM tb_book', (err, results) => {   //查询失败   if (err) return console.log(err.message);   //查询成功   //如果执行的是select查询语句,则返回的是数组   console.log(results); }) 

插入数据

向表中插入数据,示例代码如下。

  • 便捷方式
//插入数据 简化形式 const user = { username: 'liyu2', password: '49023dfs!2' } //待执行的sql语句 const sqlStr = 'INSERT INTO tb_user SET ?' //使用数组的形式,依次为?占位符指定具体的值。 db.query(sqlStr, user, (err, results) => {   //失败了   if (err) return console.log(err.message);   //成功了   if (results.affectedRows) {     console.log('插入数据成功');   } }) 

注意:
这种方法适合插入多项属性时使用
db.query里的第二个值一定是对象,如果是多个值,就用中括号包含
如果执行的是insert into语句,则result是一个对象
可以通过affectedRows属性,来判断是否插入成功

  • 初始形式
//插入数据  const list = { username: 'liyu3', password: '23123' } //待执行的sql语句 const sqlstr = 'INSERT INTO tb_user SET ?' //使用数组的形式,依次为?占位符指定具体的值。 db.query(sqlstr, [list.username, list.password], (err, results) => {   //失败了   if (err) return console.log(err.message);   //成功了   //注意:如果执行的是insert into语句,则result是一个对象   //可以通过affectedRows属性,来判断是否插入成功   if (results.affectedRows) {     console.log('插入数据成功');   } }) 

更新数据

可以通过如下方式,更新表中的数据:

//需要更新的数据 const update = { username: 'liyu', password: '3343' } //要执行的SQL语句 const updateSql = 'UPDATE tb_user SET password=? WHERE username = ?' //3.调用db.query()执行 SQL 语句的同时,依次为占位符指定具体的值 db.query(updateSql, [update.password, update.username], (err, results) => {   if (err) return console.log(err.message);   if (results.affectedRows) { console.log('更新状态成功'); } }) 

注意:
执行了update后,返回的也是一个对象,可以通过.affectedRows来判断是否成功

  • 便捷方式
const update2 = { username: 'liyu2', password: '111' } const updateSql1 = 'UPDATE tb_user SET ? WHERE username=?' db.query(updateSql1, [update2, update2.username], (err, results) => {   if (err) return console.log(err.message);   if (results.affectedRows) { console.log('更新成功'); } }) 

注意:
在是使用便捷方式开发代码时需要注意,db.query里的第二参数里,第一个值一定是对象。

删除数据

在删除数据时,推荐根据 id 这样的唯一标识,来删除对应的数据。示例如下:

const sqlStr = 'delete from tb_user where username = ?' db.query(sqlStr, 'liyu2', (err, results) => {   if (err) return console.log(err.message);   if (results.affectedRows) {     console.log('删除成功');   } }) 

注意:
调用db.query()执行SQL语句时,为占位符指定具体的值
如果SQL里有多个占位符,则必须使用数组为每个占位符指定具体的值
如果SQL里只有一个占位符,则可以省略数组

标记删除

使用 DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。
所谓的标记删除,就是在表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除。
当用户执行了删除的动作时,我们并没有执行 DELETE 语句把数据删除掉,而是执行了 UPDATE 语句,将这条数据对应
的 status 字段标记为删除即可。
如何通过node.js操作后台数据库