本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
在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语句
先随意创建一个数据库和数据表
进行连接与查询操作
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)
}
})
结果
前后端开发使用示例
服务端代码
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('服务器开启中')
})
前端代码
- 若是不明白fetch用法点这里:js fetch异步请求使用详解
<script>
const getUser = async () => {
const response = await fetch('http://localhost:3000/getUser')
const data = await response.json()
console.log(data)
}
getUser()
</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操作) 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)
}
})
尾言
如果觉得文章对你有帮助的话,欢迎点赞收藏哦,有什么错误或者意见建议也可以留言,感谢~