node.js使用mysql2对接数据库

news2025/4/22 1:23:01

一、引言

        在现代Web开发中,Node.js作为一种高效、轻量级的JavaScript运行时环境,已经广泛应用于后端服务的开发中。而MySQL,作为一个广泛使用的关系型数据库管理系统(RDBMS),提供了强大的数据存储和查询功能。为了将这两者有效地结合起来,我们通常会使用一个名为mysql2的Node.js库。

二、mysql基础

        MySQL是一个开源的关系型数据库管理系统,它使用SQL(Structured Query Language,结构化查询语言)作为数据访问和操作的标准语言。MySQL具有高性能、易于使用、可扩展性强等特点,是Web开发中常用的数据库之一。

        在windows系统中使用,通常要去官网下载,但是在kali中系统会自带数据库。下面我将会以kali自带的数据库来简单了解一下数据库并学习基本的增删改查语句。

 1.mysql通常是部署在我们电脑的3306端口,要想连接数据库我们首先要打开数据库服务,类似于服务端一样。输入如下命令打开,在kali中的密码输入是通过类似python的getpass包的方式进行开发的,所以我们在进入root用户权限时是看不到输入的密码的,但是这并不影响输入。在确认密码正确之后就可以进入root权限。在root权限中我们输入

service mysql start

就可以成功打开数据库。(没有报错就是正常打开)

2.接下来就是要进入连接mysql,进行sql语句的输入。

mysql -uroot -p

输入以下代码并且确认密码之后就可以进入数据库。

可以观察到我们已经成功进入了mysql在里面输入sql语句就可以开始操作数据库。

 3.创建新的数据库查看都有哪些库(在数据库中输入的任何指令都是大小写不敏感的)

        首先,在我们的mysql中本来就有一些库,我们可以通过

show databases;

可以查看所有的数据库。

我们现在可以创建一个新的数据库。通过下面的的指令:

create database yoursqlname;

也可以在这个界面删除某一个数据库,输入:

drop database yoursqlname;

例如接下来我们就以上面的数据库school为例。输入:

use school;

代表我们接下来使用的是这个名为school的数据库。

4.创建表格

在school的数据库中,我们创建一个名为student的表格(table),它应该包括学生的姓名(name/char),学号(id/int),年龄(age/int),性别(sex/char)。接下来我们输入

create table student (
    id int,
    name varchar(50) not NULL,
    sex varchar(10) not NULL,
    age int
);

就可以成功创建一个表格。再输入

select * from school;

可以查看存入表格的所有的信息。

这些是我提前录入的一些信息。

5.student表格基本的增删改查

我们想要增加一个新的学生信息[6,“灰太狼”,“男”,30],就要输入以下的语句。

insert into student(id,name,sex,age) values(6,'灰太狼','男',30);

如果我们的输入顺序和表的输入顺序完全一致,那么我们就可以输入得更加简洁。

insert into student values (6, '灰太狼', '男', 30);

可以通过查询结果看到我们成功增加了id值为6的一列。

我想删除表中id值为2的学生,我可以输入:

delete from student where id=2;

通过where来查找符合我们规则的行,进行操作。

接下来,我想修改喜羊羊的年龄为25,我可以输入:

update student set age=25 where id=1;

与上一个相同的是我们都通过where来进行索引。但同时还用到了set代表我们更新数据库应该更新找到的那一行或者那几行成什么。

最后就是怎么查找,其实我们上面一直在使用查找的功能。select * from student。这个语句会帮我们输出所有的数据。*代表的是查找所有的列,如果我们只想查找id和name我们可以改成selec id,name from student。而我们要筛选某些行同样需要where来筛选,例如我要查询所有的年龄为20的学生的id和name。

到这里我们就成功掌握了mysql一些入门的知识。

三、使用mysql2对接mysql

1.初始化语句

const connection = mysql.createConnection({
    host : "localhost",
    user : "root",
    password : yourpassword,
    database : "school"
})

在这里我使用的user是root,我们可以查看mysql都支持什么用户。

注意:如果你改变了mysql的端口或者把它部署在别的端口在初始化信息中应该填入port这一部分。

2.创建连接

connection.connect((err)=>{

    if(err){
        console.error(`没有连接成功:${err.message}`);
        return;
    }
    console.log('连接成功');

//增加操作数据库的代码

//关闭数据库程序正常退出
    connection.end((err)=>{
        if(err){
            console.error(`关闭连接失败:${err.message}`);
        }
        console.log('成功关闭连接');
    });   
});

3.操作数据库

    //定义sql语句
    const query = "select * from student";
    //运行
    connection.execute(query,[],(err,result,fields)=>{
        if(err){
            console.log(`查询失败:${err}`);
            return;
        }

        //输出查询结果
        result.forEach((row, index) => {
            console.log(`Row ${index + 1}:`);
            console.log(row.id,row.name);
        });
    });

最后是运行结果以及完整代码

const mysql = require("mysql2");

const connection = mysql.createConnection({
    host : "localhost",
    user : "root",
    password : "kali",
    database : "school"
})
//连接数据库
connection.connect((err)=>{

    if(err){
        console.error(`没有连接成功:${err.message}`);
        return;
    }
    console.log('连接成功');

    //定义sql语句
    const query = "select * from student";
    //运行
    connection.execute(query,[],(err,result,fields)=>{
        if(err){
            console.log(`查询失败:${err}`);
            return;
        }

        //输出查询结果
        result.forEach((row, index) => {
            console.log(`Row ${index + 1}:`);
            console.log(row.id,row.name);
        });
    });

//关闭数据库程序正常退出
connection.end((err)=>{
    if(err){
        console.error(`关闭连接失败:${err.message}`);
    }
    console.log('成功关闭连接');
});   

});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2294511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL/Panda映射关系

Pandas教程(非常详细)_pandas 教程-CSDN博客 SQL:使用SELECT col_1, col_2 FROM tab; Pandas:使用df[[col_1, col_2]]。 SQL:使用SELECT * FROM tab WHERE col_1 11 AND col_2 > 5; Pandas:使用df…

windows同时安装两个不同版本的Mysql

文章目录 目录 ?文章目录 前言 一、MySql下载 1、 官网下载: 2、 解压文件 3、 新建my.ini文件。 二、配置MySql环境变量 1、新建系统环境变量 ?三、MySql安装 1、进入MySql的bin目录 ?2、安装MySql服务 3、修改登录密码、并自动创建data文件夹 4、…

Docker最佳实践:安装Nacos

文章目录 Docker最佳实践:安装Nacos一、引言二、安装 Nacos1、拉取 Nacos Docker 镜像2、启动 Nacos 容器 三、配置 Nacos(可选)四、使用示例1、服务注册2、服务发现 五、总结 Docker最佳实践:安装Nacos 一、引言 Nacos 是阿里巴…

【deepseek实战】绿色好用,不断网

前言 最佳deepseek火热网络,我也开发一款windows的电脑端,接入了deepseek,基本是复刻了网页端,还加入一些特色功能。 助力国内AI,发出自己的热量 说一下开发过程和内容的使用吧。 目录 一、介绍 二、具体工作 1.1、引…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料

🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎃1.修改密码 -持久…

3.攻防世界 weak_auth

题目描述提示 是一个登录界面,需要密码登录 进入题目页面如下 弱口令密码爆破 用1 or 1 #试试 提示用admin登录 则尝试 用户名admin密码:123456 直接得到flag 常用弱口令密码(可复制) 用户名 admin admin-- admin or -- admin…

『Apisix进阶篇』结合Consul作服务发现实战演练

文章目录 一、引言二、APISIX与Consul集成2.1 环境准备2.2 配置Consul服务发现2.2.1 修改APISIX配置文件2.2.2 重启APISIX 2.3 在路由中使用Consul服务发现2.3.1 创建路由2.3.2 验证路由 2.4 高级配置2.4.1 服务过滤2.4.2 多数据中心支持 三、总结 📣读完这篇文章里…

家用报警器的UML 设计及其在C++和VxWorks 上的实现01

M.W.Richardson 著,liuweiw 译 论文描述了如何运用 UML(统一建模语言)设计一个简单的家用报警器,并实现到 VxWorks 操作系统上。本文分两个部分,第一部分描述了如何用 UML 设计和验证家用报警器的模型,以使…

BUU24 [GXYCTF2019]BabyUpload 1

开局上传文件 上传muma.php 上传.htaccess文件也被打回 再次求助互联网,才发现这提示给的多么明显,上传.htaccess文件是检查文件类型(Contnet-Type),上传muma.php是检查后缀里头有没有ph ,检查文件类型那…

贪心与单调栈的艺术:从三道 LeetCode 题看最小字典序问题(316/402/1081)

前言 欢迎来到我的算法探索博客,在这里,我将通过解析精选的LeetCode题目,与您分享深刻的解题思路、多元化的解决方案以及宝贵的实战经验,旨在帮助每一位读者提升编程技能,领略算法之美。 👉更多高频有趣Lee…

【含开题报告+文档+PPT+源码】基于SpringBoot的校园论坛系统的设计与实现

开题报告 本研究论文主要探讨并实现了一个基于SpringBoot框架构建的全方位校园论坛系统。此系统旨在为校内师生提供一个信息交流与分享的互动平台,核心功能涵盖了校园新闻新闻的实时浏览与更新,用户可自主发布各类主题帖子,并支持深度互动&a…

关于视频字幕

文章目录 视频字幕分类内嵌字幕内封字幕外挂字幕 字幕格式纯文本字幕特效字幕图形字幕 简易修改字幕修改时间同步PotplayerSubtitleEdit 提取蓝光原盘字幕参考资料 视频字幕分类 内嵌字幕 合成到画面的硬字幕,不可移除。 内封字幕 常见的如 MKV 文件&#xff0c…

【AI 语音】实时语音交互优化全解析:从 RTC 技术到双讲处理

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

数据结构(栈结构之顺序栈操作实现一)

目录 一.栈结构之顺序栈操作实现 1.项目结构以及初始代码 2.初始化栈结构 3.入栈操作并显示 4.出栈操作并显示出栈元素 5.获取栈长度 6.清空栈 7.销毁栈 8.动态扩展栈空间 一.栈结构之顺序栈操作实现 1.项目结构以及初始代码 SeqStack.h #ifndef __SEQSTACK_H__ #de…

【React】受控组件和非受控组件

目录 受控组件非受控组件基于ref获取DOM元素1、在标签中使用2、在组件中使用 受控组件 表单元素的状态(值)由 React 组件的 state 完全控制。组件的 state 保存了表单元素的值,并且每次用户输入时,React 通过事件处理程序来更新 …

vue2:如何动态控制el-form-item之间的行间距

需求 某页面有查看和编辑两种状态: 编辑: 查看: 可以看到,查看时,行间距太大导致页面不紧凑,所以希望缩小查看是的行间距。 行间距设置 行间距通常是通过 CSS 的 margin 或 padding 属性来控制的。在 Element UI 的样式表中,.el-form-item 的下边距(margin-bottom)…

亚博microros小车-原生ubuntu支持系列:20 ROS Robot APP建图

依赖工程 新建工程laserscan_to_point_publisher src/laserscan_to_point_publisher/laserscan_to_point_publisher/目录下新建文件laserscan_to_point_publish.py #!/usr/bin/env python3import rclpy from rclpy.node import Node from geometry_msgs.msg import PoseStam…

计算机毕业设计Python+Vue.js游戏推荐系统 Steam游戏推荐系统 Django Flask 游 戏可视化 游戏数据分析 游戏大数据 爬虫

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

k8sollama部署deepseek-R1模型,内网无坑

这是目录 linux下载ollama模型文件下载到本地,打包迁移到k8s等无网络环境使用下载打包ollama镜像非k8s环境使用k8s部署访问方式非ollama运行deepseek模型linux下载ollama 下载后可存放其他服务器 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linu…

【Elasticsearch】nested聚合

在 Elasticsearch 中,嵌套聚合(nestedaggregation)的语法形式用于对嵌套字段(nestedfields)进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型,用于存储数组中的对象,这些对象需要独…