nodejs mysql连接与使用攻略

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: nodejs mysql连接与使用攻略

目录


mysql安装



首先确保mysql的安装,去官网下载对应的安装包解压。


我的安装目录是在D:\MySQL\mysql-8.0.20-winx64。


添加环境变量,记得修改成自己的路径。


MYSQL_HOME:

D:\MySQL\mysql-8.0.20-winx64

Path:

%MYSQL_HOME%:\bin

依次执行命令


mysqld --initialize-insecure
mysqld --defaults-file=D:\MySQL\mysql-8.0.19-winx64\my.ini --initialize –console
mysqld install
mysqld --initialize-insecure --user=mysql
net start mysql
mysqladmin -u root -p password 123456
mysql -u root -p

直到最后一步显示输入密码输入123456成功进去mysql即可

image.png

nodejs连接mysql


可以新建文件夹进入cmd输入npm init -y新建项目

导入以下包

npm i express mysql -S

创建app.

import express from 'express'
import mysql from 'mysql'
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    //database: 'nodejs' 等创建了数据库才能连接对应的数据库
});
connection.connect((err) => {
    if (!err) {
        console.log('连接mysql成功')
    }
});
const app = express()
app.listen(3000, () => {
    console.log('服务器开启中')
})

连接成功

image.png

执行sql语句


先随意创建一个数据表

image.png

进行连接与查询操作

import express from 'express'
import mysql from 'mysql'
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'nodejs'
});
connection.connect((err) => {
    if (!err) {
        console.log('连接mysql成功')
    }
});
connection.query('select * from category_', (err, res, field) => {
    if (!err) {
        console.log(res)
    }
})
const app = express()
app.listen(3000, () => {
    console.log('服务器开启中')
})

结果

image.png

将数据库操作写入接口


import express from 'express'
import mysql from 'mysql'
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'nodejs',
})
connection.connect((err) => {
  if (!err) {
    console.log('连接mysql成功')
  }
})
const app = express()
//用express编写get请求
app.get('/getCategory', (req, res) => {
  //解决跨域
  res.set('Access-Control-Allow-Origin', '*')
  connection.query('select * from category_', (err, data, field) => {
    if (!err) {
      //返回查询数据
      res.send(data)
    }
  })
})
app.listen(3000, () => {
  console.log('服务器开启中')
})

前端访问


若是不明白fetch用法点这里:fetch异步请求使用详解

  <script>
    const getCategory = async () => {
      //如果nodejs服务端放在服务器上就修改127.0.0.1为服务器ip
      const response = await fetch('http://127.0.0.1:3000/getCategory')
      const data = await response.json()
      console.log(data)
    }
    getCategory()
  </script>

image.png

sql常用操作


创建表

  let sql = 'create table if not exists tableName(id bigint,time datetime,content text,phones varchar(255),PRIMARY KEY(id))'
  db.query(sql, (err, result) => {
    if (!err) {
      console.log('创建表成功')
    }
  }

插入数据

  let sql = 'insert into tableName(id,time,content,phones) VALUES (id,time,content,phones)'
  db.query(sql, (err, result) => {
    if (!err) {
      console.log('插入数据成功')
    }
  })

删除数据

let sql = 'delete from tableName where id=1'
db.query(sql, (err, data, field) => {
    if (!err) {
        console.log('删除数据成功')
    }
})

修改数据

const sql = 'update tableName set name=777 where name=4'
db.query(sql, (err, data, field) => {
    if (!err) {
        console.log('修改数据成功')
    }
})

查询数据

  // 查询全部字段
  let sql = 'select * from tableName'
  // 查询指定字段
  let sql = 'select id,content,time,phone from tableName'
  db.query(sql, (err, result) => {
    if (!err) {
      console.log('插入数据成功')
    }
  })

合并操作


合并表需要临时创建新表,并起名,((查询表1操作) union (查询表2操作)) as newTable。

如果两张表存在内容相同但是字段名不同,需要进行转化保证查询字段相同,比如table1需要将date转化为与table2相同的time。

然后就是查询新表select * from 新表

  let sql = 'select * from ((select id,content,date as time,phone from table1) union (select id,content,time,phone from table2)) as newTable'
  db.query(sql, (err, result) => {
    if (!err) {
      console.log(result)
    }
  })

排序操作

  // desc降序,asc升序
  let sql = 'select * from tableName order by time desc'
  db.query(sql, (err, result) => {
    if (!err) {
      console.log(result)
    }
  })

查询5天内数据

  // time为datetime类型字段。
  let sql = 'select id,time from datas where date_sub(curdate(), interval 5 day) <= date(time))'
  db.query(sql, (err, result) => {
    if (!err) {
      console.log(result)
    }
  })


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
安全 关系型数据库 MySQL
【赵渝强老师】MySQL的连接方式
本文介绍了MySQL数据库服务器启动后的三种连接方式:本地连接、远程连接和安全连接。详细步骤包括使用root用户登录、修改密码、创建新用户、授权及配置SSL等。并附有视频讲解,帮助读者更好地理解和操作。
|
24天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
28天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
1月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
142 1
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
75 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
25天前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第20天
33 0
|
1月前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第9天
46 0
|
1月前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
19 0
|
2月前
|
SQL JavaScript 关系型数据库
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
43 0
Node服务连接Mysql数据库
|
1月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
205 0