nodejs mysql连接与使用攻略

3,183 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

在nodejs开发服务时可以使用mysql数据库,限制比较少,十分方便。

本文介绍如何在nodejs中使用mysql、并展示前后端代码示例、最后补充mysql基本使用语句解决使用问题。

nodejs连接mysql

创建连接方式

import mysql from 'mysql'

const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
});

db.connect((err) => {
    if (!err) {
        console.log('连接mysql成功')
    }
});

创建连接池方式

无论何时何地用创建连接池的形式代替创建连接形式,理由是只有利没有弊。

import mysql from 'mysql'

const db = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '123456',
});

执行sql语句

先随意创建一个数据库和数据表

image.png 进行连接与查询操作

import mysql from 'mysql'

const db = mysql.createPool({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'database' // 连接mysql对应的数据库
});

db.query('select * from user', (err, data, field) => {
    if (!err) {
        console.log(data)
    }
})

结果

image.png

前后端开发使用示例

服务端代码

import express from 'express'
import cors from 'cors'
import mysql from 'mysql'

const db = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'database',
})

const app = new express()
app.use(cors())

//用express编写get请求
app.get('/getUser', (req, res) => {
  db.query('select * from user', (err, data, field) => {
    if (!err) {
      //返回查询数据
      res.send(data)
    }
  })
})

app.listen(3000, () => {
  console.log('服务器开启中')
})

前端代码

  <script>
    const getUser = async () => {
      const response = await fetch('http://localhost:3000/getUser')
      const data = await response.json()
      console.log(data)
    }
    getUser()
  </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. 合并表需要临时创建新表,并起名,((查询表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)
    }
  })

尾言

如果觉得文章对你有帮助的话,欢迎点赞收藏哦,有什么错误或者意见建议也可以留言,感谢~