1、什么是 MySQL
【】MySQL 属于传统数据库,又称关系型数据库或SQL数据库
【】数据的组织结构为 数据库、数据表、数据行、字段
【】关系型数据库有自己的数据库编程语言 SQL,使用 SQL 语言编写出来的代码叫做 SQL 语句
【】使用 MySQL 数据库需要下载 MySQL Server 和 MySQL Workbench(可视化工具)
2、常用 SQL 语句
【】查询语句
-- 通过 * 把 users 表中所有的数据查询出来
select * from users
-- 从 users 表中把 username 和 password 对应的数据查询出来
select username, password from users
【】插入语句
-- 向 users 表中,插入新数据,username 的值为 tony stark password 的值为 098123
insert into users (username, password) values ('tony stark', '098123')
【】更新语句
-- 将 id 为 4 的用户密码,更新成 888888
update users set password='888888' where id=4
-- 更新 id 为 2 的用户,把用户密码更新为 admin123 同时,把用户的状态更新为 1
update users set password='admin123', status=1 where id=2
【】删除语句
-- 删除 users 表中, id 为 4 的用户
delete from users where id=4
【】where 语句
-- 演示 where 子句的使用
select * from users where status=1
select * from users where id>=2
select * from users where username<>'ls'
select * from users where username!='ls'
【】and 用法
-- 使用 AND 来显示所有状态为0且id小于3的用户
select * from users where status=0 and id<3
【】or 用法
-- 使用 or 来显示所有状态为1 或 username 为 zs 的用户
select * from users where status=1 or username='zs'
【】order by 用法
-- 对users表中的数据,按照 status 字段进行升序排序
select * from users order by status
-- 按照 id 对结果进行降序的排序 desc 表示降序排序 asc 表示升序排序(默认情况下,就是升序排序的)
select * from users order by id desc
-- 对 users 表中的数据,先按照 status 进行降序排序,再按照 username 字母的顺序,进行升序的排序
select * from users order by status desc, username asc
【】count(*) 用法
-- 使用 count(*) 来统计 users 表中,状态为 0 用户的总数量
select count(*) from users where status=0
【】as 用法
-- 使用 AS 关键字给列起别名
select count(*) as total from users where status=0
select username as uname, password as upwd from users
3、在 node.js 环境中使用 MySQL
【】安装第三方模块 mysql,然后连接 MySQL 数据库,之后执行 SQL 语句
// 1. 导入 mysql 模块
const mysql = require('mysql')
// 2. 建立与 MySQL 数据库的连接关系
const db = mysql.createPool({
host: '127.0.0.1', // 数据库的 IP 地址
user: 'root', // 登录数据库的账号
password: 'admin123', // 登录数据库的密码
database: 'my_db_01', // 指定要操作哪个数据库
})
// 测试 mysql 模块能否正常工作
db.query('select 1', (err, results) => {
// mysql 模块工作期间报错了
if(err) return console.log(err.message)
// 能够成功的执行 SQL 语句
console.log(results)
})
【】查询操作
// 查询 users 表中所有的数据
const sqlStr = 'select * from users'
db.query(sqlStr, (err, results) => {
if (err) return console.log(err.message)
// 注意:如果执行的是 select 查询语句,则执行的结果是数组
console.log(results)
})
【】插入操作
// 向 users 表中,新增一条数据,其中 username 的值为 Spider-Man,password 的值为 pcc123
const user = { username: 'Spider-Man', password: 'pcc123' }
const sqlStr1 = 'insert into users (username, password) values (?, ?)'
db.query(sqlStr, [user.username, user.password], (err, results) => {
if (err) return console.log(err.message)
// 注意:如果执行的是 insert into 插入语句,则 results 是一个对象
// 可以通过 affectedRows 属性,来判断是否插入数据成功
if (results.affectedRows === 1) {
console.log('插入数据成功!')
}
})
// 演示插入数据的便捷方式
const user2 = { username: 'Spider-Man2', password: 'pcc4321' }
// 定义待执行的 SQL 语句
const sqlStr2 = 'insert into users set ?'
// 执行 SQL 语句
db.query(sqlStr, user2, (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('插入数据成功')
}
})
【】更新操作
// 演示如何更新用户的信息
const user3 = { id: 6, username: 'aaa', password: '000' }
// 定义 SQL 语句
const sqlStr3 = 'update users set username=?, password=? where id=?'
// 执行 SQL 语句
db.query(sqlStr, [user3.username, user3.password, user3.id], (err, results) => {
if (err) return console.log(err.message)
// 注意:执行了 update 语句之后,执行的结果,也是一个对象,可以通过 affectedRows 判断是否更新成功
if (results.affectedRows === 1) {
console.log('更新成功')
}
})
// 演示更新数据的便捷方式
const user4 = { id: 6, username: 'aaaa', password: '0000' }
// 定义 SQL 语句
const sqlStr4 = 'update users set ? where id=?'
// 执行 SQL 语句
db.query(sqlStr, [user4, user4.id], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('更新数据成功')
}
})
【】删除操作
// 删除 id 为 5 的用户
const sqlStr5 = 'delete from users where id=?'
db.query(sqlStr, 5, (err, results) => {
if (err) return console.log(err.message)
// 注意:执行 delete 语句之后,结果也是一个对象,也会包含 affectedRows 属性
if (results.affectedRows === 1) {
console.log('删除数据成功')
}
})
// 标记删除
const sqlStr6 = 'update users set status=? where id=?'
db.query(sqlStr, [1, 6], (err, results) => {
if (err) return console.log(err.message)
if (results.affectedRows === 1) {
console.log('标记删除成功')
}
})