nodejs mysql连接与使用攻略

mysql安装

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

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

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

  1. MYSQL_HOME:
    D:\MySQL\mysql-8.0.20-winx64
  2. 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 password 123456

mysql -u root -p

直到最后一步显示输入密码输入123456成功进去mysql即可
在这里插入图片描述

nodejs连接mysql

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

导入以下包

npm i express mysql -S

创建app.js

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('服务器开启中')
})

连接成功
在这里插入图片描述

执行sql语句

先随意创建一个数据表
在这里插入图片描述
进行连接与查询操作

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('服务器开启中')
})

结果
在这里插入图片描述

将数据库操作写入接口

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>

在这里插入图片描述

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. 合并表需要临时创建新表,并起名,((查询表1操作) union (查询表2操作)) as newTable
  2. 如果两张表存在内容相同但是字段名不同,需要进行转化保证查询字段相同,比如table1需要将date转化为与table2相同的time。
  3. 然后就是查询新表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)
    }
  })
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下月亮有何贵干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值