目录
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即可
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('服务器开启中') })
连接成功
执行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) } })