node终端里如何连接mysql数据库并进行sql查询

 更新时间:2023年07月24日 09:43:07   作者:Heymar  
这篇文章主要为大家介绍了node终端里如何连接mysql数据库并进行sql查询,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

node终端里面怎么来连接数据库

今天结束的挺早,因为今天的内容还可以不是很难,今天全程是学了一些关于mysql数据库和sql查询语句的内容包括在node终端里面怎么来连接数据库。经过今天的一个学习,我感觉离那个地步越来越近了,就是那个自己完成一个网站,有服务器、有响应,就跟现在这些上线的网站一样一样的,越来越近了。

这些内容其实上学期间就学过了,现在主要是拿来复习一下。

数据库的基本概念

首先我们先了解一下数据库的基本概念,用来组织、存储,管理数据的仓库。

我们传统型数据库(mysql、sql、Oracle)的一个数据结构为:数据库》数据表》数据行》字段

库、表、行、字段之间的一些关系:

  • ①每个项目都有独立的数据库文件
  • ②不同的数据要放在不同的表中,比如一个用户信息就应该放到user表中
  • ③每个表要存放哪些信息是由字段来决定的
  • ④表中的行代表一条具体的数据

安装配置mysql

其实还是有一些步骤的,建议baidu就不多赘述了这里。

然后装好后用workbench去创建一个数据库再去创建一个表这个时候就有一些数据类型参考了,常见的int整数型,varchar字符串型、tinyint是布尔值

包括还有一些特殊标识,pk代表主键具有唯一标识,nn是not null不能为空值,uq是值唯一,ai是值会自增

sql结构化查询语言

上面是通过用那个工具去写一些数据进去,但是我们是程序员那肯定是要用代码来实现的,sql结构化查询语言来了,专门搞数据库的语言。

无非就是四个增删改查,我说一下一些注意点,然后就可以看代码就行了。

首先是增这里的列名和值必须要一一对应就没有了

-- 通过 * 把 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
-- and运算符
-- select * from users where id = 1 and username = '2'
-- select * from users where id = 1 or username = '2'
-- oder by
-- select * from users order by id desc
-- count
select count(*) as total from users where status = 0

mysql模块

怎么在项目中来操作一个mysql

首先要安装通过npm然后要配置来连接那个数据库,再去执行一些语句,主要实现的功能还是一个增删查改

注意

查:返回的是一个数组

增:sql语句中用?先来作为占位符先不填充数据,后面的也是这样,返回的是一个对象,里面有一个属性affectedRows也就是被影响的行,要等于一这个操作才能被算作生效,

然后由于我们的id具有唯一标识性,所以如果你删了4,又去增加一个那么他的id是5不是4,增有便捷版操作

改:也有便捷版,也返回的是一个对象,注意他的便捷版的where条件不能够省略

删:推荐以id这个唯一标识符作为条件来删除,然后我们delete就是真的从数据库删除了,其实是有点危险的,因为万一用户反悔了想恢复回来,这个时候就没办法了,所以我们一般是用标记删除,也就是通过update来改类似于status的值来达到一个模拟删除的操作,并没有真正从数据库删除

// 1. 前面如果通过npm安装了mysql第三方包后,就需要配置一下mysql模块了
// 首先是导入
const mysql = require('mysql')
// 通过mysql.createPool来配置
const db = mysql.createPool({
    host : '127.0.0.1', // 数据库的ip地址
    user : 'root' , // 登录数据库的账号
    password : 'admin123', // 登录数据库密码
    database : 'my_db_01' // 指定要操作哪个数据库
})
// 2.测试mysql
// select 1 没有任何作用只是可以测试是否连接成功
db.query('select 1' ,(err, results) => {
    if (err) return err.message
    return console.log(results);
})
// 3. 查询数据
db.query('select * from users', (err, results) => {
    if (err) return err.message
    return console.log(results);
})
// 4.插入数据
/* let obj = {
    username : '流星',
    password : '653213'
} */
// 4.1注意sql语句中可用?来占位
/* let insertStr = 'insert into users(username, password) values (?,?)'
// 4.2使用数组的形式可以依次去填补?里面的值
db.query(insertStr, [obj.username, obj.password] ,(err, results) => {
    if (err) return err.message
    // 4.3用到rsults的一个属性 表示影响的行数,只有当为一才表示真正的插入成功了
    if (results.affectedRows == 1) return console.log('数据添加成功');
}) */
// 4.2插入数据便捷版
/* let obj = {
    username : 'jj',
    password : '653213'
}
let insertStr = 'insert into users set ?'
// 4.2使用数组的形式可以依次去填补?里面的值
db.query(insertStr, obj ,(err, results) => {
    if (err) return err.message
    // 4.3用到rsults的一个属性 表示影响的行数,只有当为一才表示真正的插入成功了
    if (results.affectedRows == 1) return console.log('数据添加成功');
}) */
// 5.改数据
/* let user = {username : '姐姐', password : '1243333', id : '9'}
let updateStr = 'update users set username = ? , password = ? where id = ?'
db.query(updateStr, [user.username, user.password, user.id], (err, results) => {
    if (err) {
        return err.message
    } else if (results.affectedRows == 1) {
        return console.log('更新数据成功');
    }
}) */
// 5.1便捷版
/* let user = {username : '姐姐', password : '1243333', id : '9'}
let updateStr = 'update users set ? where id = ?'
db.query(updateStr, [user, user.id], (err, results) => {
    if (err) {
        return err.message
    } else if (results.affectedRows == 1) {
        return console.log('更新数据成功');
    }
}) */
// 6.删除数据
let deleteStr = 'delete from users where id = ?'
db.query(deleteStr, 9, (err, results) => {
    if (err) {
        return err.message
    } else if (results.affectedRows == 1) {
        return console.log('删除数据成功');
    }
})

以上就是node终端里如何连接mysql数据库并进行sql查询的详细内容,更多关于node连接mysql查询sql的资料请关注脚本之家其它相关文章!

相关文章

  • Node.js  REPL (交互式解释器)实例详解

    Node.js REPL (交互式解释器)实例详解

    这篇文章主要介绍了Node.js REPL (交互式解释器)实例详解的相关资料,Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应,需要的朋友可以参考下
    2017-08-08
  • Node爬取大批量文件的方法示例

    Node爬取大批量文件的方法示例

    这篇文章主要介绍了Node爬取大批量文件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 使用Node.js写一个代码生成器的方法步骤

    使用Node.js写一个代码生成器的方法步骤

    这篇文章主要介绍了使用 Node.js 写一个代码生成器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • node vue项目开发之前后端分离实战记录

    node vue项目开发之前后端分离实战记录

    其实基于vue.js+node.js构建的开源博客系统有很多,下面这篇文章主要给大家介绍了关于node vue项目开发之前后端分离的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2017-12-12
  • node.js快速部署vue代码详细步骤

    node.js快速部署vue代码详细步骤

    众所周知Vue是现在前端最流行的框架之一,作为前端开发人员应该要熟练的掌握它,下面这篇文章主要给大家介绍了关于node.js快速部署vue代码的详细步骤,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 使用nodejs下载风景壁纸

    使用nodejs下载风景壁纸

    本文主要介绍了使用nodejs下载风景壁纸的方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Node.js+express+socket实现在线实时多人聊天室

    Node.js+express+socket实现在线实时多人聊天室

    这篇文章主要为大家详细介绍了Node.js+express+socket实现在线实时多人聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Google官方支持的NodeJS访问API,提供后台登录授权

    Google官方支持的NodeJS访问API,提供后台登录授权

    Google官方支持的NodeJS集成客户端,用以访问Google APIs, 支持OAuth 2.0授信及登录认证。登录以后即可在后台访问例如 Google Drive(云存储), Google Analytics, Gmail等服务。
    2014-07-07
  • node文件资源管理器的解压缩从零实现

    node文件资源管理器的解压缩从零实现

    这篇文章主要为大家介绍了node文件资源管理器的解压缩从零实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Nodejs 数组的队列以及forEach的应用详解

    Nodejs 数组的队列以及forEach的应用详解

    这篇文章主要介绍了Nodejs 数组的队列以及forEach的应用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论