前端学习笔记|1.5 SQL语句以及在Node中操作数据库

SQL学习目标
重点掌握如何使用SQL从数据表中:
查询数据(select)、插入数据(insert into)、更新数据(update)、删除数据(delete)
额外需要掌握的4种SQL语法:
where条件、and和or运算符、order by排序、count(*)函数
SQL语句学习 SQL的SELECT(查询)语句
1、语法
SELECT语句用于从表中查询数据。执行的结果被存储在一个结果表中,语法格式如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

注意:SQL语句中的关键字对大小写不敏感。SELECT等效于select,FROM等效于from。
2、SELECT* 示例
我们希望从user表中选取所有的列,可以使用符号*取代列的名称,示例:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

如需获取名为"username"和"password"的列的内容,则使用如下的语句:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

SQL的 INSERT INTO (插入)语句
1、语法
INSERT INTO 语句用于向数据表中插入新的数据行,语法格式如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

2、INSERT INTO 示例
向users表中,插入一条username为tony stark,password为098123的用户数据,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

SQL的 UPDATE (修改)语句
1、语法
Update 语句用于修改表中的数据,语法格式如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

2、UPDATE 示例 - 更新某一行中的一个列
把users表中id为7的用户密码,更改为888888,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

把users表中id为2的用户密码和用户状态,分别更新为admin123和1,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

SQL的 DELETE (删除)语句
1、语法
DELETE 语句用于删除表中的行,语法格式如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

2、DELETE 示例
从users表中,删除id为4的用户,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

SQL的 WHERE 子句
1、语法
WHERE 子句用于限定选择的标准。在SELECT、UODATE、DELETE语句中,皆可使用 WHERE 子句来限定选择的标准。
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

2、可在WHERE 子句中使用的运算符
下面的运算符可以在WHERE 子句中使用,用来限定选择的标准:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片
《》
注意:<>可以写成 !=
SQL的 AND 和 OR 运算符
1、语法
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
AND 表示必须同时满足多个条件,相对于Javascript中的&&运算符,例如if(a!==10&&a!==20)
OR 表示只要满足任意一共条件即可,相对于Javascript中的 || 运算符,例如if(a!==10 || a!==20)
2、AND运算符示例
使用AND来显示所有status为0,并且id小于3的用户:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

3、OR运算符示例
使用OR来显示所有status为1,或者username为zs的用户:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

SQL的 ORDER BY子句
1、语法
ORDER BY 语句用于根据指定的列对结果进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果你希望按照降序对记录进行排序,可以使用 DESC 关键字
2、ORDER BY子句 - 升序排序
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

3、ORDER BY子句 - 降序排序
对users表中的数据,按照id字段进行降序排序,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

4、ORDER BY 子句 - 多重排序
对users表中的数据,先按照status字段进行降序排序,在按照username的字母顺序,进行升序排列,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

SQL的 COUNT(*) 函数
1、语法:
COUNT()函数用于返回查询结果的总数据条数,语法格式如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

2、COUNT(
)示例
查询users表中status为0的总数据条数:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

3、使用AS 我i列设置别名
如果希望给查询出来的列名设置别名,可以使用AS关键字,示例:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

在项目中操作数据库的步骤
  1. 安装操作MySQL数据库的第三方模块(mysql)
  2. 通过mysql模块链接到MySQL数据库
  3. 通过mysql模块执行SQL语句
    前端学习笔记|1.5 SQL语句以及在Node中操作数据库
    文章图片

    1、安装mysql模块
nom install mysql
2、配置mysql模块
在使用mysql模块操作MySQL数据库之前,必须先对mysql模块进行必要的配置,主要配置步骤如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

3、测试mysql模块能否正常工作
调用 db.query()函数,指定要执行的SQL语句,通过回调函数拿到执行的结果:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

查询数据 查询users表中的所有的数据:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

示例:
如果执行的是select查询语句,则执行的结果是数组
// 查询users表中所有的用户数据 const sqlStr = 'SELECT *FROM users' db.query(sqlStr, (err, results) => { // 报错返回数据 if (err) return console.log(err.message); // 打印出查询结果 console.log(results); })

添加数据 向users表中新增数据,其中username为 Spider-Man,password为pcc321.示例代码如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

示例:
// 插入数据到users表中的数据对象 const user = { username: 'Spider-Man', password: 'pcc321' } // 待执行的SQL语句,其中英文的 ? 表示占位符 const addStr = 'INSERT INTO users(username,password) VALUES(?,?)' // 使用数组的形式,一次为 ? 占位符指定具体的值 db.query(addStr, [user.username, user.password], (err, results) => { if (err) return console.log(err.message); //失败执行语句 //如果执行的是INSERT INTO插入语句,则results是一个对象 //可以通过affectedRows 属性,来判断是否插入数据成功 if (results.affectedRows === 1) { console.log('插入数据成功'); }//成功 })

插入数据的便捷方式:
向表中新增数据时,如果==数据对象的每个属性和数据表的字段一 一对应,==则可以通过如下方式快速插入数据:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

示例:
// 插入数据便捷方式 const user = { username: 'Spider-Man2', password: 'pcc123' } const addStr = 'INSERT INTO users set ?' db.query(addStr, user, (err, results) => { if (err) return console.log(err.message); //失败执行语句 if (results.affectedRows === 1) { console.log('插入数据成功'); }//成功 })

修改数据 前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

示例:
修改id为4,把username改为aaa,把password改为000
//演示如何更新用户信息 const user = { id: 4, username: 'aaa', password: '000' } const xgStr = 'update users set username=?,password=? where id=?' db.query(xgStr, [user.username, user.password, user.id], (err, results) => { if (err) return console.log(err.message); //失败执行语句 if (results.affectedRows === 1) { console.log('更新数据成功'); } })

修改数据的便捷方式:
修改数据时,如果==数据对象的每个属性和数据表的字段一 一对应,==则可以通过如下方式快速更新数据:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

示例:
//更新数据便捷方式 const user = { id: 4, username: 'ccc', password: '11111' } const xgStr = 'update users set ? where id=?' db.query(xgStr, [user, user.id], (err, results) => { if (err) return console.log(err.message); //失败执行语句 if (results.affectedRows === 1) { console.log('更新数据成功'); } })

删除数据 在删除数据时,推荐根据id这样的唯一标识,来删除对应的数据,示例如下:
前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

// 删除id为5的用户 const scStr = 'delete from users where id=?' db.query(scStr, 5, (err, results) => { if (err) return console.log(err.message); //失败执行语句 if (results.affectedRows === 1) { console.log('删除数据成功'); } })

标记删除
【前端学习笔记|1.5 SQL语句以及在Node中操作数据库】前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

前端学习笔记|1.5 SQL语句以及在Node中操作数据库
文章图片

    推荐阅读