node操作mysql
mysql
- 一些重要的sql命令
INSERT INTO:增(向数据库中插入新数据)
DELETE:删(从数据库中删除数据)
UPDATE:改( 更新数据库中的数据)
SELECT:查(从数据库中提取数据)
CREATE DATABASE:创建数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
下载wampserver
- 该软件下的mysql是没有设置密码
- 开启变为绿色的图标,然后浏览器输入localhost测试是否安装成功
下载navicat
- wamp默认是开启mysql
- 在这个工具新建链接–新建数据库–新建表
- 可以直接写,也可以新建查询使用insert来插入你想要的数据
初始化package.json
cnpm init -y
下载mysql
npm install mysqljs/mysql
node连接数据库
const mysql = require('mysql');
let connection = mysql.createConnection({
host : 'localhost',//数据库所在的域名或则IP地址
user : 'root',//登录数据库的账号(数据库链接时候的用户名)
password : '',//密码(这里为空,因为wamp默认是没有密码)
database : 'bookdb'//数据库名称
});
//链接数据库
connection.connect();
//操作数据库(数据库操作也是异步的)
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);//看看控制台是否有输出2
});
//关闭数据库
connection.end();
- 结果
需求:查询我们表有多少条数据
const mysql = require('mysql');
let connection = mysql.createConnection({
host : 'localhost',//数据库所在的域名或则IP地址
user : 'root',//登录数据库的账号(数据库链接时候的用户名)
password : '',//密码(这里为空,因为wamp默认是没有密码)
database : 'bookdb'//数据库名称
});
//链接数据库
connection.connect();
//操作数据库(数据库操作也是异步的)
connection.query('select count(*) as total from book', function (error, results, fields) {
if (error) throw error;
console.log('总条数:', results[0].total);//结果会输出总条数:5
});
//关闭数据库
connection.end();
需求:插入一条数据
// 更改操作数据部分
connection.query('insert into book (name,author,category,description) values ("延禧攻略","于正","宫斗","机智女主巧妙化解难题,步步高升")', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);//看看控制台是否有输出2
});
第三方包有提供直接简化处理,(设置?)代码更具有可读性
增删改查
插入一条数据
// ···
//链接数据库
connection.connect();
let sql = 'insert into book set ?'//操作插入命令
let data = {
name:"深入浅出Node.js",
author:"朴灵",
category:"编程",
description:"从不同的视角来揭示Node自己内在的特点和结构"
}
connection.query(sql,data, function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);//看看控制台是否有输出2
});
//关闭数据库
connection.end();
- 控制台输出
可以看到受影响的为一行,对应的主键id为8 - 刷新可视化工具
更新一条数据
let sql = 'update book set name=?,author=?,category=?,description=? where id=?'//更新操作
let data = ["深入浅出Vue.js","Berwin","MVVM","前端框架",1]//更新第一条操作
删除一条数据
let sql = "delete from book where id = ?"//删除数据
let data = [2]//依旧要用数组,这是格式上的要求,删除第二条数据
刷新navicat表格,结果
第二条数据已经删除,第一条数据已经更改
查询操作
- 查询整个表格
let sql = "select * from book"//查询所有的数据
let data = null//这里不用放入数据,使用null
2. 根据条件查询表格
let sql = "select * from book where id = ?"
let data = [3]
通过封装的方式操作API
let mysql = require('mysql')
exports.base = (sql,data,callback)=>{
let connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'bookdb'
})
connection.connect();
connection.query(sql,data, function (error, results, fields) {
if (error) throw error;
callback && callback(results)
})
connection.end();
}
// 1. 测试API
const db = require('./db.js')
let sql = 'select * from book'
let data = null
db.base(sql,data,function(data){
console.log(data)
})
结果打印我们数据库的所有数据,封装成一个API,代码不会冗余,可读性更强。方便操作