一、Query(查询)
(1)意义
query是指向数据库发送的一个命令或请求,以检索、更新、插入或删除数据。它是一个具体的SQL语句或NoSQL命令,用于从数据库中获取或修改数据。
(2)用途
通过查询,你可以从数据库中检索信息,例如获取用户列表、查找特定记录等。你也可以使用查询来更新或删除数据库中的数据。
(3)代码示例:(以查询为例)
先在mysql里面建立一个users表,如下:
vscode连接数据库进行query操作来查询 如下:
javascript
//1.安装mysql
// 在控制台 npm install mysql -save
// 2.导入mysql模块
const mysql=require('mysql');
// 3.建立链接
// (3-1)创建链接对象
const conn=mysql.createConnection({
host:'localhost', //mysql服务器地址
port:3306, //mysql默认端口3306
user:'root', //mysql登录用户名
password:'root', //mysql登录密码
database:'musicdb', //访问的数据库名称
multipleStatements:true, //设置一次请求允许多条sql语句同时执行。默认false
});
// (3-2)链接数据库
conn.connect((err)=>{
if(err){
console.log('链接数据库失败');
}else{
console.log('链接数据库成功');
}
});
// 4.执行sql语句,对数据库进行操作
// (4-1)准备sql语句
let sql2="select * from users"; //通过*把users表中所有数据查询出来
// (4-2)执行sql
conn.query(sql2,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
if(err){
console.log(err);
}else{
console.log(results); //RowDataPacket对象数组
// (4-3)关闭数据库
conn.end()
}
});
控制台输出:
二、Pool(连接池):
(1)意义
连接池是一个存储数据库连接的对象池。当应用程序需要与数据库交互时,它可以从池中获取一个连接,使用完毕后将其返回给池,而不是每次都创建新的连接。
(2)用途
连接池主要用于提高性能和效率。创建和关闭数据库连接是一个昂贵的操作,特别是在高并发的环境中。使用连接池可以避免频繁地创建和关闭连接,从而提高应用程序的响应速度和吞吐量。
(3)代码示例:(以查询为例)
先在mysql里面建立一个users表,如下:
vscode连接数据库进行pool连接池操作来查询 如下:
javascript
// pool.js 连接池管理连接对象
// 1.导入mysql模块
const mysql=require('mysql');
// 2.创建连接池对象(创建连接对象,且自动的去管理连接对象的状态)
const pool=mysql.createPool({
host:'localhost',
port:3306,
user:'root',
password:'root',
database:'musicdb',
multipleStatements:true
});
// 3.从连接池中获取连接对象
pool.getConnection((err,conn)=>{ //err错误对象 conn连接对象
if(err){
console.log(err);
} else{
// 4.利用连接对象操作数据库
let sql='select * from users;';
conn.query(sql,[],(err1,results,fields)=>{//执行数据库操作
if(err1){
console.log(err1);
}else{
console.log(results);
}
// 5.释放连接对象
conn.release();
})
}
});
控制台输出:
三、query与pool的异同
(1)相同点:
query查询和pool连接池都是数据库操作
(2)不同点:
使用pool连接池时,你的应用程序会在启动时创建一个连接池,并在需要时从池中获取连接。当连接不再需要时,它会被返回到池中,而不是被关闭。这样,你的应用程序可以重复使用已经存在的连接,而不是每次都创建新的连接。使用pool连接池大大提高了性能,特别是在处理大量并发请求时。