node.js使用mysql2对接数据库

一、引言

        在现代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('成功关闭连接');
});   

});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity 快速入门 1 - 界面操作

本项目将快速介绍 Unity 6的基本操作和功能,下载附件的项目,解压到硬盘,例如 D:\Unity Projects\, 注意整个文件路径中只有英文、空格或数字,不要有中文或其他特殊符合。 1. 打开Unity Hub,点击右上角的 O…

携程Java开发面试题及参考答案 (200道-上)

说说四层模型、七层模型。 七层模型(OSI 参考模型) 七层模型,即 OSI(Open System Interconnection)参考模型,是一种概念模型,用于描述网络通信的架构。它将计算机网络从下到上分为七层,各层的功能和作用如下: 物理层:物理层是计算机网络的最底层,主要负责传输比特流…

云轴科技ZStack+海光DCU:率先推出DeepSeek私有化部署方案

针对日益强劲的AI推理需求和企业级AI应用私有化部署场景(Private AI),云轴科技ZStack联合海光信息,共同推动ZStack智塔全面支持DeepSeek V3/R1/Janus Pro系列模型,基于海光DCU实现高性能适配,为企业提供安全…

通信易懂唠唠SOME/IP——SOME/IP协议简介

一 简介 1.1 面向服务的中间件 SOME/IP是Scalable service-Oriented MiddlewarE over IP (SOME/IP)的缩写,基于IP的可扩展面向服务的中间件。 1.2 广泛应用于汽车嵌入式通信 SOME/IP是一种支持远程通信的汽车/嵌入式通信协议 。支持远程过程调用(RPC…

游戏引擎学习第89天

回顾 由于一直没有渲染器,终于决定开始动手做一个渲染器,虽然开始时并不确定该如何进行,但一旦开始做,发现这其实是正确的决定。因此,接下来可能会花一到两周的时间来编写渲染器,甚至可能更长时间&#xf…

PostgreSql-COALESCE函数、NULLIF函数、NVL函数使用

COALESCE函数 COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的; select coalesce(1,null,2),coalesce(null,2,1),coalesce(null,null,null); NULLIF(ex1,ex2)函数 如果ex1与ex2相等则返回Null,不相等返回第一个表达式的值…

【苍穹外卖 Day1】前后端搭建 Swagger导入接口文档

项目技术选型 前端 直接使用打包好的nginx运行。 后端 1、导入初始代码结构如下: 2、将代码上传远程仓库。 3、创建数据库,并修改数据库配置。 4、断点调试,前后端联调。 5、使用Nginx代理,修改Nginx配置 好处:提…

八大排序算法细讲

目录 排序 概念 运用 常见排序算法 插入排序 直接插入排序 思想: 步骤(排升序): 代码部分: 时间复杂度: 希尔排序 思路 步骤 gap的取法 代码部分: 时间复杂度: 选择排序 直接选…

python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法

回溯算法 「所有可能的结果」,而不是「结果的个数」,一般情况下,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」。 回溯算法关键在于:不合适就退回上一步。在回溯算法中,递归用于深入到所有可能的分支&…

【远程控制】安装虚拟显示器

todesk远程发现没显示器的机器有问题 电脑如果不外接一个显示器那么会默认为1024 768 分辨率需要安装虚拟显示器参考 竟然是一个隐私屏幕的解决方案。 虚拟显示器 Parsec-vdd 项目地址 Parsec-vdd 最大的优点是:支持 4K 高刷、可添加多个虚拟屏、 H-Cursor&#…

搭建集成开发环境PyCharm

1.下载安装Python(建议下载并安装3.9.x) https://www.python.org/downloads/windows/ 要注意勾选“Add Python 3.9 to PATH”复选框,表示将Python的路径增加到环境变量中 2.安装集成开发环境Pycharm http://www.jetbrains.com/pycharm/…

20250206在ubuntu20.04下使用unzip解压缩带中文名的文件

unzip -O GBK yourfile.zip unzip -O CP936 xxx.zip unar xxx.zip 20250206在ubuntu20.04下使用unzip解压缩带中文名的文件 2025/2/6 20:03 缘起:有些ZIP文件,里面有中文文件名。在WINDOWS系统中解压缩正常。 但是在Ubuntu20.04下可以解压缩,…

OSPF基础(1):工作过程、状态机、更新

OSPF基础 1、技术背景(与RIP密不可分,因为RIP中存在的问题) RIP中存在最大跳数为15的限制,不能适应大规模组网周期性发送全部路由信息,占用大量的带宽资源以路由收敛速度慢以跳数作为度量值存在路由环路可能性每隔30秒…

python学opencv|读取图像(五十三)原理探索:使用cv.matchTemplate()函数实现最佳图像匹配

【1】引言 前序学习进程中,已经探索了使用cv.matchTemplate()函数实现最佳图像匹配的技巧,并且成功对两个目标进行了匹配。 相关文章链接为:python学opencv|读取图像(五十二)使用cv.matchTemplate()函数实现最佳图像…

C#面试常考随笔12:游戏开发中常用的设计模式【C#面试题(中级篇)补充】

C#面试题(中级篇),详细讲解,帮助你深刻理解,拒绝背话术!-CSDN博客 简单工厂模式 优点: 根据条件有工厂类直接创建具体的产品 客户端无需知道具体的对象名字,可以通过配置文件创建…

动手学图神经网络(9):利用图神经网络进行节点分类 WeightsBiases

利用图神经网络进行节点分类Weights&Biases 引言 在本篇博客中,将深入探讨如何使用图神经网络(GNNs)来完成节点分类任务。以 Cora 数据集为例,该数据集是一个引用网络,节点代表文档,推断每个文档的类别。同时,使用 Weights & Biases(W&B)来跟踪实验过程和…

React 低代码项目:项目创建

Date: January 29, 2025 项目创建 思路: 使用 Create-React-App 创建 React 项目使用 Vite 创建 React 项目使用 eslint prettier husty 等,制定编码规则 创建项目 注:在这之前,推荐 node 版本:node/18.20.6 &#…

网络工程师 (21)网络的性能

一、速率(数据率或比特率) 定义:数据在数字信道上传送的速率,通常以比特每秒(bps)为单位。常见的速率单位还有千比特每秒(kbit/s)、兆比特每秒(Mbit/s)和吉比…

VMware Win10下载安装教程(超详细)

《网络安全自学教程》 从MSDN下载系统镜像,使用 VMware Workstation 17 Pro 安装 Windows 10 consumer家庭版 和 VMware Tools。 Win10下载安装 1、下载镜像2、创建虚拟机3、安装操作系统4、配置系统5、安装VMware Tools 1、下载镜像 到MSDN https://msdn.itellyou…

开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析

内容概要 在当今数字化快速发展的时代,园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势,逐渐成为用户的新宠。与传统管理软件相比,它不仅灵活性高,而且具有更强的可定制性,让各类园区&#…