引言
在当今的互联网时代,数据库是存储和管理数据的核心。JavaScript(JS)作为一种广泛应用于前端和后端的编程语言,其与数据库的交互能力尤为重要。本文将带你从JS操作数据库的基础知识开始,逐步深入到实战应用,让你一步到位,轻松掌握JS与数据库的交互技巧。
一、JS操作数据库的基础知识
1.1 数据库类型
首先,我们需要了解JS可以操作哪些类型的数据库。常见的数据库类型包括关系型数据库(如MySQL、Oracle)和非关系型数据库(如MongoDB、Redis)。
1.2 数据库连接
无论是关系型数据库还是非关系型数据库,与JS进行交互的第一步都是建立连接。以下是一些常用的数据库连接方法:
1.2.1 关系型数据库连接
- MySQL: 使用
mysql模块或mysql2模块。
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
connection.connect(err => {
if (err) throw err;
console.log('Connected to the MySQL server.');
});
// 使用完毕后关闭连接
connection.end();
- Oracle: 使用
oracledb模块。
const oracledb = require('oracledb');
oracledb.getConnection(
{
user : "username",
password : "password",
connectString : "localhost/orcl"
},
(err, connection) => {
if (err) {
console.error(err.message);
return;
}
connection.execute(
`SELECT * FROM my_table`,
[],
{ outFormat: oracledb.OUT_FORMAT_OBJECT },
function(err, result) {
if (err) {
console.error(err.message);
return;
}
console.log(result.rows);
connection.release();
}
);
}
);
1.2.2 非关系型数据库连接
- MongoDB: 使用
mongodb模块。
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'mydb';
MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, (err, client) => {
if (err) throw err;
const db = client.db(dbName);
const collection = db.collection('my_collection');
// 执行数据库操作
collection.find({}).toArray((err, docs) => {
if (err) throw err;
console.log(docs);
client.close();
});
});
- Redis: 使用
redis模块。
const redis = require('redis');
const client = redis.createClient();
client.on('error', (err) => {
console.log('Redis Client Error', err);
});
client.set('string key', 'string val', redis.print);
client.get('string key', (err, reply) => {
console.log('string val', reply);
});
1.3 数据库操作
建立连接后,我们可以进行各种数据库操作,如查询、插入、更新和删除数据。
1.3.1 查询
- 关系型数据库:
const query = 'SELECT * FROM my_table WHERE id = ?';
connection.query(query, [1], (err, results) => {
if (err) throw err;
console.log(results);
});
- 非关系型数据库:
collection.find({ _id: ObjectId('507f191e810c19729de860ea') }).toArray((err, docs) => {
if (err) throw err;
console.log(docs);
});
1.3.2 插入
- 关系型数据库:
const query = 'INSERT INTO my_table SET ?';
const values = { name: 'John', age: 30 };
connection.query(query, values, (err, result) => {
if (err) throw err;
console.log(result.insertId);
});
- 非关系型数据库:
const myDoc = { name: 'John', age: 30 };
collection.insertOne(myDoc, (err, result) => {
if (err) throw err;
console.log(result.ops);
});
1.3.3 更新
- 关系型数据库:
const query = 'UPDATE my_table SET ? WHERE id = ?';
const values = { name: 'John', age: 31 };
connection.query(query, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows);
});
- 非关系型数据库:
collection.updateOne({ _id: ObjectId('507f191e810c19729de860ea') }, { $set: { age: 31 } }, (err, result) => {
if (err) throw err;
console.log(result.modifiedCount);
});
1.3.4 删除
- 关系型数据库:
const query = 'DELETE FROM my_table WHERE id = ?';
connection.query(query, [1], (err, result) => {
if (err) throw err;
console.log(result.affectedRows);
});
- 非关系型数据库:
collection.deleteOne({ _id: ObjectId('507f191e810c19729de860ea') }, (err, result) => {
if (err) throw err;
console.log(result.deletedCount);
});
二、实战案例:使用JS操作MySQL数据库
以下是一个使用Node.js和mysql模块操作MySQL数据库的实战案例:
2.1 创建数据库和表
首先,我们需要创建一个MySQL数据库和一个表。
CREATE DATABASE mydb;
USE mydb;
CREATE TABLE my_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);
2.2 安装Node.js和mysql模块
npm init -y
npm install mysql
2.3 编写Node.js代码
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
connection.connect(err => {
if (err) throw err;
console.log('Connected to the MySQL server.');
// 查询数据
const query = 'SELECT * FROM my_table';
connection.query(query, (err, results) => {
if (err) throw err;
console.log(results);
});
// 插入数据
const query = 'INSERT INTO my_table SET ?';
const values = { name: 'John', age: 30 };
connection.query(query, values, (err, result) => {
if (err) throw err;
console.log(result.insertId);
});
// 更新数据
const query = 'UPDATE my_table SET ? WHERE id = ?';
const values = { name: 'John', age: 31 };
connection.query(query, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows);
});
// 删除数据
const query = 'DELETE FROM my_table WHERE id = ?';
connection.query(query, [1], (err, result) => {
if (err) throw err;
console.log(result.affectedRows);
});
// 关闭连接
connection.end();
});
2.4 运行Node.js代码
node myscript.js
三、总结
通过本文的学习,相信你已经掌握了JS操作数据库的基本知识和实战技巧。在实际开发过程中,根据不同的项目需求,你可以选择合适的数据库类型和操作方法。希望这篇文章能帮助你更好地理解和应用JS与数据库的交互。祝你学习愉快!
