SQL学习目标
重点掌握如何使用SQL从数据表中:
查询数据(select)、插入数据(insert into)、更新数据(update)、删除数据(delete)
额外需要掌握的4种SQL语法:
where条件、and和or运算符、order by排序、count(*)函数
1、语法
SELECT语句用于从表中查询数据。执行的结果被存储在一个结果表中,语法格式如下:
注意:SQL语句中的关键字对大小写不敏感。SELECT等效于select,FROM等效于from。
2、SELECT* 示例
我们希望从user表中选取所有的列,可以使用符号*取代列的名称,示例:
如需获取名为"username"和"password"的列的内容,则使用如下的语句:
1、语法
INSERT INTO 语句用于向数据表中插入新的数据行,语法格式如下:
2、INSERT INTO 示例
向users表中,插入一条username为tony stark,password为098123的用户数据,示例如下:
1、语法
Update 语句用于修改表中的数据,语法格式如下:
2、UPDATE 示例 - 更新某一行中的一个列
把users表中id为7的用户密码,更改为888888,示例如下:
把users表中id为2的用户密码和用户状态,分别更新为admin123和1,示例如下:
1、语法
DELETE 语句用于删除表中的行,语法格式如下:
2、DELETE 示例
从users表中,删除id为4的用户,示例如下:
1、语法
WHERE 子句用于限定选择的标准。在SELECT、UODATE、DELETE语句中,皆可使用 WHERE 子句来限定选择的标准。
2、可在WHERE 子句中使用的运算符
下面的运算符可以在WHERE 子句中使用,用来限定选择的标准:
《》
注意:<>可以写成 !=
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的用户:
3、OR运算符示例
使用OR来显示所有status为1,或者username为zs的用户:
1、语法
ORDER BY 语句用于根据指定的列对结果进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果你希望按照降序对记录进行排序,可以使用 DESC 关键字
2、ORDER BY子句 - 升序排序
3、ORDER BY子句 - 降序排序
对users表中的数据,按照id字段进行降序排序,示例如下:
4、ORDER BY 子句 - 多重排序
对users表中的数据,先按照status字段进行降序排序,在按照username的字母顺序,进行升序排列,示例如下:
1、语法:
COUNT()函数用于返回查询结果的总数据条数,语法格式如下:
2、COUNT()示例
查询users表中status为0的总数据条数:
3、使用AS 我i列设置别名
如果希望给查询出来的列名设置别名,可以使用AS关键字,示例:
nom install mysql
2、配置mysql模块
在使用mysql模块操作MySQL数据库之前,必须先对mysql模块进行必要的配置,主要配置步骤如下:
3、测试mysql模块能否正常工作
调用 db.query()函数,指定要执行的SQL语句,通过回调函数拿到执行的结果:
查询users表中的所有的数据:
示例:
如果执行的是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.示例代码如下:
示例:
// 插入数据到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('插入数据成功'); } //成功
})
向表中新增数据时,如果==数据对象的每个属性和数据表的字段一 一对应,==则可以通过如下方式快速插入数据:
示例:
// 插入数据便捷方式
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('插入数据成功'); } //成功
})
示例:
修改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('更新数据成功'); }
})
修改数据时,如果==数据对象的每个属性和数据表的字段一 一对应,==则可以通过如下方式快速更新数据:
示例:
//更新数据便捷方式
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这样的唯一标识,来删除对应的数据,示例如下:
// 删除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('删除数据成功'); }
})