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权限中我们输入

bash 复制代码
service mysql start

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

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

bash 复制代码
mysql -uroot -p

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

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

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

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

sql 复制代码
show databases;

可以查看所有的数据库。

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

sql 复制代码
create database yoursqlname;

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

sql 复制代码
drop database yoursqlname;

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

sql 复制代码
use school;

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

4.创建表格

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

bash 复制代码
create table student (
    id int,
    name varchar(50) not NULL,
    sex varchar(10) not NULL,
    age int
);

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

sql 复制代码
select * from school;

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

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

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

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

sql 复制代码
insert into student(id,name,sex,age) values(6,'灰太狼','男',30);

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

sql 复制代码
insert into student values (6, '灰太狼', '男', 30);

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

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

sql 复制代码
delete from student where id=2;

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

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

sql 复制代码
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.初始化语句

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

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

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

2.创建连接

javascript 复制代码
connection.connect((err)=>{

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

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

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

3.操作数据库

javascript 复制代码
    //定义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);
        });
    });

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

javascript 复制代码
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('成功关闭连接');
});   

});
相关推荐
斯特凡今天也很帅8 分钟前
clickhouse常用语句汇总——持续更新中
数据库·sql·clickhouse
贩卖纯净水.1 小时前
Webpack的基本使用 - babel
前端·webpack·node.js
超级小忍1 小时前
如何配置 MySQL 允许远程连接
数据库·mysql·adb
吹牛不交税2 小时前
sqlsugar WhereIF条件的大于等于和等于查出来的坑
数据库·mysql
hshpy2 小时前
setting up Activiti BPMN Workflow Engine with Spring Boot
数据库·spring boot·后端
贩卖纯净水.3 小时前
Webpack依赖
前端·webpack·node.js
文牧之3 小时前
Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS
运维·数据库·oracle
篱笆院的狗3 小时前
如何使用 Redis 快速实现布隆过滤器?
数据库·redis·缓存
洛神灬殇4 小时前
【LLM大模型技术专题】「入门到精通系列教程」基于ai-openai-spring-boot-starter集成开发实战指南
网络·数据库·微服务·云原生·架构
小鸡脚来咯4 小时前
redis分片集群架构
数据库·redis·架构