node.js对数据库mysql的连接与操作(增、删、改、查、五种SQL语法)

前提:先在vscode终端下载安装mysql:npm install mysql -save

步骤总结:

(1)建立与数据库的连接

(2)做出请求:

实际上就是操作mysql里的数据。增删改查 insert、delete、updata、select

(3)通过回调函数获取结果

一、什么是SQL?

SQL(Structured Query Language)是结构化查询语言。专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,去操作数据库里的数据

二、SQL主要掌握:

(1)SQL的使用之增删改查:

查询数据(select)、插入数据(insert into)、更新数据(updata)、删除数据(delete)

(2)需掌握的五种SQL语法:

where条件、and和or运算符、order by排序、count(*)函数、as关键字

三、增删改查的基本使用 ***

代码示例都以query操作为例。

(1)查询 SELECT

1》作用:

select语句用于从表中查询数据。执行结果被储存在一个结果表中。

2》语法格式:

注意:SQL语句关键字对大小写不敏感。SELECT=select

2-1》从from指定的表中,查询出所有的数据。*表示所有列

select * from 表名

2-2》从from指定的表中,查询出指定列名称(字段)的数据。

select 列名 from 表名

3》代码示例:
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表中所有数据查询出来
let sql3="select username,password from users"; //把users表中username和password对应的数据查询出来

// (4-2)执行sql2
conn.query(sql2,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{ 
        // 对于查询操作(select),它返回的是数组,其元素是查询结果行的对象(查询结果集)。
        // 我们要去访问它时,例如可以result[0].username
        // fields 只有查询操作select才有fields数组。元素就是每一个查询结果集的字段
        console.log(results); //RowDataPacket对象数组
        //console.log(fields); //FieldPacket对象数组。
        // (4-3)关闭数据库
        conn.end()
    }
}); 
sql2执行结果:
sql3执行结果:

(2)插入 insert

1》作用:

insert into 语句用于向数据表中插入新的数据行。

2》语法格式:

2-1》使用拼接字符串写入参数

insert into 表名() values()

2-2》使用占位符写入参数

insert into 表名() values(?,?,?..)

let a=[?1的值,?2的值,?3的值...];

3》代码示例:
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 sql1="insert into users() values(0,'admin','123456','女',18,'[email protected]',1,'admin','user_photo.png')";
let sql2="insert into users() values(0,?,?,?,?,?,?,?,?)";
let params=['w1','123','女',22,'[email protected]','1','cust','user_photo.png'];

// (4-2)执行sql
conn.query(sql1,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{
        // 对于更新操作(insert、update、delete)的results对象的重要属性:
        // affectedRows  影响的行数(主要针对于insert、delete操作) 
        // insertId      插入行的主键值(主要针对于insert操作) 
        // changedRows   改变的行数(主要针对于update操作) 
        console.log(results);
        //console.log(fields);
        // (4-3)关闭数据库
        conn.end()
    }
}); 
sql1执行结果:
sql2执行结果:

(3)更改 UPDATA

1》作用:

update语句用于修改表中的数据。

2》语法格式:

update 表名 set 列名=新值 where 列名=某值

3》代码示例:
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语句
// 1》更新某一行中的一个列
// 要求:将users表中的用户名为admin2的用户密码password改为888
let sql4="update users set password='888' where username='admin'";
// 1》更新某一行中的若干列
// 要求:将users表中的用户名为admin2的性别gender和年龄age分别改为男和60
let sql5="update users set gender='男',age='60' where username='admin'";

// (4-2)执行sql
conn.query(sql5,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{
        console.log(results);
        // (4-3)关闭数据库
        conn.end()
    }
}); 
sql5执行结果:

(4)删除 DELETE

1》作用:

delete语句用于删除表中的行。

2》语法格式:

delete from where 列名=值

3》代码示例:
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语句
// 要求:删除users表中的用户名为w1的用户
let sql6="delete from users where username='w1'";

// (4-2)执行sql
conn.query(sql6,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{
        console.log(results);
        // (4-3)关闭数据库
        conn.end()
    }
}); 
运行结果:

三、五种SQL语法

where条件、and和or运算符、order by排序、count(*)函数、as关键字

(1)where子句

1》介绍:

where子句用于限定选择的标准。在select、update、delete语句中,皆可使用where子句来限定选择的标准

2》语法:

2-1》查询语句中的where条件

select 列名 from 表名 where 列 运算符 值

2-2》更新语句中的where条件

update 表名 set 列=新值 where 列 运算符 值

2-3》删除语句中的where条件

delete from 表名 where 列 运算符 值

3》可以在where子句中使用的运算符

等于(=)、不等于(<>或!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、在某个范围内(between)、搜索某种模式(like)

(2)and和or运算符

1》介绍:

and和or可在where子句中把两个或多个条件结合起来

and:必须同时满足多个条件,相当于js中的 &&

or:只要满足任一个条件即可,相当于js中的 ||

2》代码示例:
我的数据库users表里的数据如下:
javascript 复制代码
const mysql=require('mysql');
const conn=mysql.createConnection({
    host:'localhost', //mysql服务器地址
    port:3306, //mysql默认端口3306
    user:'root', //mysql登录用户名
    password:'root', //mysql登录密码
    database:'musicdb', //访问的数据库名称
    multipleStatements:true, //设置一次请求允许多条sql语句同时执行。默认false
});
conn.connect((err)=>{
    if(err){
        console.log('链接数据库失败');
    }else{
        console.log('链接数据库成功');
    }
});
// (2)and运算符代码示例
// 要求:使用and来查询users表中的性别gender为男并且年龄age为22的用户
let sql7="select * from users where gender='男' and age=22";
// (3)or运算符代码示例
// 要求:使用and来查询users表中的性别gender为男或者年龄age为60 的用户
let sql8="select * from users where gender='男' or age=60";
// (4-2)执行sql
conn.query(sql7,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{
        console.log(results);
        // (4-3)关闭数据库
        conn.end()
    }
}); 
sql7执行结果:
sql8执行结果:

(3)order by 子句

1》介绍:

order by语句用于 根据指定的列对结果集进行排序

升序排序:order by语句默认按照升序对记录进行排序,asc关键字表示升序排序

降序排序:如果要求降序排序,可以使用desc关键字

多重排序:有升序也有降序,有asc也有desc关键字

2》代码示例:
users表数据同(2)中一样
javascript 复制代码
const mysql=require('mysql');
const conn=mysql.createConnection({
    host:'localhost', //mysql服务器地址
    port:3306, //mysql默认端口3306
    user:'root', //mysql登录用户名
    password:'root', //mysql登录密码
    database:'musicdb', //访问的数据库名称
    multipleStatements:true, //设置一次请求允许多条sql语句同时执行。默认false
});
conn.connect((err)=>{
    if(err){
        console.log('链接数据库失败');
    }else{
        console.log('链接数据库成功');
    }
});
// (2-1)升序排序
// 要求:对users表中的数据,按照年龄age进行升序排序
let sql9="select * from users order by age";
// (2-2)降序排序
// 要求:对users表中的数据,按照年龄age进行降序排序
let sql10="select * from users order by age desc";
// (2-3)多重排序
// 要求:对users表中的数据,先按照年龄age进行降序排序,再按username的字母顺序进行升序排序
let sql11="select * from users order by age desc,username asc";
// (4-2)执行sql
conn.query(sql9,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{
        console.log(results);
        // (4-3)关闭数据库
        conn.end()
    }
}); 
sql9执行结果:

(4)count(*)函数 和 as关键字

1》介绍:

count(*)函数用于返回查询结果的总数据条数。

as关键字可以为列设置别名

2》语法:

select count(*) from 表名

select count(*) as 设置的别名 from 表名

3》代码示例:
javascript 复制代码
const mysql=require('mysql');
const conn=mysql.createConnection({
    host:'localhost', //mysql服务器地址
    port:3306, //mysql默认端口3306
    user:'root', //mysql登录用户名
    password:'root', //mysql登录密码
    database:'musicdb', //访问的数据库名称
    multipleStatements:true, //设置一次请求允许多条sql语句同时执行。默认false
});
conn.connect((err)=>{
    if(err){
        console.log('链接数据库失败');
    }else{
        console.log('链接数据库成功');
    }
});
// (3)count(*)函数代码示例:
// 要求:返回users表中enable为1的总数据条数
let sql12="select count(*) from users where enable=1";
// (4)as关键字代码示例:
// 要求:给(3)中查询出来的总数据条数count(*)设置一个别名为total
let sql13="select count(*) as total from users where enable=1";
// (4-2)执行sql
conn.query(sql13,[],(err,results,fields)=>{ //三个参数,sql语句、sql给出的数据、回调函数(err,results[sql语句执行的结果],fields[涉及到的字段列表])
    if(err){
        console.log(err);
    }else{
        console.log(results);
        // (4-3)关闭数据库
        conn.end()
    }
}); 
sql12执行结果:
sql13执行结果:
相关推荐
Arbori_262159 分钟前
获取oracle表大小
数据库·oracle
王强你强16 分钟前
MySQL 高级查询:JOIN、子查询、窗口函数
数据库·mysql
草巾冒小子17 分钟前
brew 安装mysql,启动,停止,重启
数据库·mysql
用户62799471826224 分钟前
南大通用GBase 8c分布式版本gha_ctl 命令-HI参数详解
数据库
斯汤雷32 分钟前
Matlab绘图案例,设置图片大小,坐标轴比例为黄金比
数据库·人工智能·算法·matlab·信息可视化
SQLplusDB39 分钟前
Oracle 23ai Vector Search 系列之3 集成嵌入生成模型(Embedding Model)到数据库示例,以及常见错误
数据库·oracle·embedding
喝醉酒的小白1 小时前
SQL Server 可用性组自动种子设定失败问题
数据库
Misnearch1 小时前
node.js版本管理
node.js
转转技术团队1 小时前
代码变更暗藏危机?代码影响范围分析为你保驾护航
前端·javascript·node.js
chem41111 小时前
Conmon lisp Demo
服务器·数据库·lisp