-- 这是注释 -- 从FROM 指定的[表中],查询出[所有的]数据。* 表示[所有列] select * from 表名称 -- 从 FROM 指定的[表中],查询出指定 列名称 (字段) 的数据。 select 列名称 from 表名称
注意:SQL语句中的关键字对大小写不敏感,效果一样,提示的为大写;
INSERT INTO 语句 INSERT INTO 语句用于 向数据表中 插入新的数据行-- 语法解读: 向指定的表中,插入如下几列数据,列的值通过values 一一指定 -- 注意:列和值要一一对应,多个列和多个值之间,使用英文的逗号分隔 insert into username(列1,列2,...) values (值1,值2,...) -- 注意:新的数据(values里面的值)需要加上引号,否则会报错 insert into 表名 set 字段1=值1,字段1=值1,字段1=值1;(推荐使用这种,列和值不会匹配错误)UPDATe 语句 Update 语句用于 修改表中的数据
-- 语法解读: -- 1.用 update 指定要更新哪个表中的数据 -- 2.用 set 指定列对应的新值 -- 3.用 where 指定更新的条件 -- 注意:初学者经常忘记提供更新的 where 条件,这样会导致整张表的数据都被更新,(一定要慎重!!!) update 表名称 set 列名称 = 新值 where 列名称 = 某值 update users set password=654321 where id=4 -- 多个被更新的列之间,使用英文的逗号进行分隔 update users set password=888888,status=1 where id=4DELETE 语句 DELETE 语句用于删除表中的行
-- 语法解读: -- 从指定的表中,根据 where 条件,删除对应的数据行 delete from 表名称 where 列名称 = 值 -- 注意:初学者经常忘记提供更新的 where 条件,这样会导致整张表的数据都被更新,(一定要慎重!!!) delete from users where id=4WHERe 子句 WHERe 子句用于 限定选择的标准 。在 SELECt 、 UPDATE 、 DELETE 语句中, 皆可使用 WHERe 子句来限定选择的标准
-- 查询语句中的 where 条件 select 列名称 from 表名称 where 列 运算符 值 -- 更新语句中的 where 条件 update 表名称 set 列=新值 where 列 运算符 值 -- 删除语句中的 where 条件 delete from 表名称 where 列 运算符 值 3.可以通过 where 子句来限定 select 的查询条件 -- 查询 id 为 1 的所有用户 select * from users where id=1 -- 查询 id 大于 2 的所有用户 select * from users where id>2 -- 查询 username 不等于 admin 的所有用户 select * from users where username<>'zs'可在 WHERe 子句中使用的 运算符 下面的运算符可在 WHERe 子句中使用,用来限定选择的标准: 注意:在某些版本的 SQL 中,操作符 <> 可以写为 !=
AND 和 OR 运算符 AND 和 OR 可 在 WHERe 子语句 中 把两个或多个条件结合起来 。 AND 表示 必须同时满足多个条件 ,相当于 Javascript 中的 && 运算符,例如 if (a !== 10 && a !== 20) OR 表示 只要满足任意一个条件即可 ,相当于 Javascript 中的 || 运算符,例如 if(a !== 10 || a !== 20)
-- and -- 使用 AND 来显示所有 status 为 0,并且 id 小于 3 的用户 select * from users where status=0 and id<3 -- or -- 使用 or 来显示所有 status 为 1,或者 username 为 zs 的用户 select * from users where status=0 or username='zs'ORDER BY 子句 ORDER BY 语句用于 根据指定的列 对结果集进行排序 。 ORDER BY 语句 默认 按照 升序 对记录进行排序。 如果您希望按照 降序 对记录进行排序,可以使用 DESC 关键字。
对 users 表中的数据,按照 status 字段进行升序排序 -- 下面的这两条 SQL 语句是等价的 -- 因为 order by 默认进行升序排序 select * from users order by status -- 其中, ASC 关键字代表升序排序 select * from users order by status asc 对 users 表中的数据,按照 id 字段进行降序排序 -- desc 代表降序排序 select * from users order by status desc 多重排序 对 users 表中的数据,先按照 status 字段进行降序排序,再按照 username 的字母顺序,进行升序排序 select * from users order by status desc, username ascCOUNT(*) 函数 COUNT(*) 函数用于返回 查询结果的 总数据条数
select count(*) from 表名称 -- 查询 users 表中 status 为 0 的总数据条线 select count(*) from users where status=0 如果希望给查询出来的列名称设置别名,可以使用 AS 关键字 -- 将列名从 count(*) 修改为 total select count(*) as total from users where status=0 -- 将列名 username 改为 uname, password 改为upwd select username as uname, password as upwd from users手写 MySQL 的增删改查 项目中操作数据库的步骤: ① 安装操作 MySQL 数据库的第三方模块( mysql ) ② 通过 mysql 模块 连接到 MySQL 数据库 ③ 通过 mysql 模块 执行 SQL 语句
安装 mysql 模块
mysql 模块是托管于 npm 上的 第三方模块 。它提供了在 Node.js 项目中 连接 和 操作 MySQL 数据库的能力。 想要在项目中使用它,需要先运行 npm i mysql 命令,将 mysql 安装为项目的依赖包: 配置 mysql 模块 在使用 mysql 模块操作 MySQL 数据库之前, 必须先对 mysql 模块进行必要的配置// 1.导入mysql模块
const mysql = require('mysql')
// db 表示连接对象
const db = mysql.createPool({
host: '127.0.0.1', //表示连接哪一个服务器上面的mysql数据库
user: 'root', //数据库的用户名
password: 'root', //数据库密码
database:'web67' //指定操作哪个数据库
})
测试 mysql 模块能否正常工作
调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
1. 查询数据
查询 users 表中所有的数据:
// 查询语句 data得到是一个数组 增删改 得到是受影响的行数
db.query('select * from users', (err, data) => {
// 如果连接失败 或者 sql语句写错
if (err) return console.log(err.message)
// 如果数组的长度为0 就表示表中没有数据
if (data.length === 0) return console.log('表里面没有数据')
console.log(data)
})
2. 插入数据
向 users 表中新增数据
// 注意:postman传递过来的参数的名 要与数据表的字段名一样
app.post('/addUser', (req, res) => {
// 获取数据
const data = req.body
// 构建sql语句
const sql = 'insert into users set ?'
// 执行sql 使用数组的形式来给 ?
db.query(sql, data, (err, data) => {
// 判断dql是否执行失败
if (err) return console.log(err.message)
// 如何判断如果插入成功
if (data.affectedRows !== 1) return console.log('数据写入失败')
// 如果写入成功
res.send({
status: 0,
msg:'数据写入成功'
})
})
})
4. 更新数据
可以通过如下方式,更新表中的数据:
// 根据id来更新username
app.post('/updateuser', (req, res) => {
// 获取客户端提交过来的数据
const body = req.body
// 构造sql语句
const sql = 'update users set ? where id = ?'
// 执行sql
db.query(sql, [body, body.id], (err, data) => {
// 判断sql语句是否有错误
if (err) return console.log(err.message)
if (data.affectedRows !== 1) return console.log('更新失败')
// 向客户端响应结果
res.send({
status: 0,
msg:'用户更新成功'
})
})
})
6. 删除数据
在删除数据时,推荐根据 id 这样的唯一标识,来删除对应的数据。
// 假删除 ---> 回收站 将需要被删除的这个用户的status值设置为0
app.get('/deluser/:id', (req, res) => {
// 1.获取客户端提交过来的数据
const id = req.params.id
// 2.构建sql语句
const sql = 'update users set status = 0 where id = ?'
// 3.执行sql
db.query(sql, id, (err, data) => {
// 判断sql语句是否有错误
if (err) return console.log(err.message)
if (data.affectedRows !== 1) return console.log('删除失败')
// 删除成功
res.send({
status: 0,
msg:'删除成功'
})
})
})



