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 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操作) 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)
}
})