- MYSQL [安装教程](./MySQL for Windows)
2.1 安装 MYSQL 相关的软件
MYSQL Server:专门用来提供数据存储和服务的软件MYSQL Workbench:可视化的 MYSQL 管理工具,通过它,可以方便的操作存储在 MYSQL Server 中的数据
2.2 MYSQL 的基本使用
2.2.1 使用 MYSQL Workbench 管理数据库
-
连接数据库
-
了解主界面的组成部分
- 创建数据库
- 创建数据表
-
DataType 数据类型:
int整数varchar(len)字符串tinyint(1)布尔值
-
字段的特使标识
PK(Primary Key)主键、唯一标识,比如:idNN(Not null)值不允许为空UQ(值唯一)AI(Auto Increment)值自动增长
-
向表中写入数据
2.3 使用 SQL 管理数据库
-
SQL(英文全称:Structured Query Language)是结构化查询语言,专门用来访问和处理数据库的编程语言,能够让我们以编程的形式,操作数据库里面的数据。三个关键点:- SQL 是一门数据库编程语言
- 使用 SQL 语言编写出来的代码,叫做 SQL 语句
- SQL 语言只能在关系型数据库中使用(例如 MySQL、Oracle、SQL Server)。非关系型数据库(例如 Mongodb)
2.4 SQL 的基本使用
-- 1. 通过 * 把 users 表中所有的数据查询出来
-- select * from users
-- 2. 从 users 表中把 username 和 password 对应的数据查询出来
-- select username, password from users
-- 3. 向 users 表中,插入新数据,username 的值为 tony stark password 的值为 0987123
-- insert into 表 (要插入的列名,用英文逗号分割) values (要插入的数据,用英文逗号分割)
-- insert into users (username, password) values ('tony stark12', '0987123')
-- select * from users
-- 4. update 更新某一行中的某一列
-- update users set password='888888' where id=3
-- select * from users
-- 5. update 更新某一行中的多个列
-- update users set password='admin123', status=1 where id=2
-- select * from users
-- 6. delete 删除 列表中某一列
-- delete from users where id=7
-- select * from users
2.4.1 SQL 的 where 子句
-
where 子句用于限定选择的标准。在 select 、update、delete 语句中,皆可使用 where 子句来限定选择的标准
-- 查询语句中的 where 条件 -- select 列名称 from 表名称 where 列 运算符 值 -- 更新语句中的 where 条件 -- update 表名称 set 列=新值 where 列 运算符 值 -- 删除语句中的 where 条件 -- delete from 表名称 where 列 运算符 值 -
where 子句中使用的运算符
-
注意:在某些版本的 SQL 中,操作符 < > 可以写为 != -
and和or可在where 子语句中吧两个或多个条件结合起来,and 表示必须同时满足多个条件,相当于 JavaScript 中的 **&& **;or 表示只要满足任意一个条件即可,相当于 JavaScript 中的 ||-- 查询语句中的 where 条件 -- select 列名称 from 表名称 where 列 运算符 值 -- select * from users where id <> 2 -- and 表示且,or 表示或 -- select * from users where id != 3 and status=1 -- select * from users where id=1 or status=1
2.4.2 order by 语句
- 用于根据指定的列对结果集进行排序
- order by 语句默认按照升序对记录进行排序
asc,如果希望按照降序进行排序,可以使用desc关键字
-- order by 语句用于根据指定的列对结果集进行排序
-- order by 语句默认按照升序对记录进行排序 asc,如果希望按照降序进行排序,可以使用 desc 关键字
-- select * from users order by status desc
-- select * from users order by status asc, username desc
2.4.3 count(*) 函数
-
用于返回查询结果的总数据条数,语法格式如下:
-- select count(*) from 表名称 select count(*) from users where status=1 -
使用 as 为列设置别名
select count(*) as total from users where id > 2
2.4.4 操作 MYSQL 数据库的步骤
-
安装操作 MySQL 数据库的第三方模块
npm i mysql -
通过 mysql 模块连接到 MySQL 数据库
// 1. 导入 mysql 模块 const mysql = require('mysql'); // 2. 建立与 MySQL 数据库的连接 const db = mysql.createPool({ host: '127.0.0.1', // 数据库的 IP 地址 user: 'root', // 登录数据库的账号 password: 'qwertyuiop0', // 登录数据库的密码 database: 'my_db_01', // 指定要操作的数据库 }); // 检测 mysql 模块能否正常工作 db.query('select 1', (err, results) => { if (err) return console.log(err.message); // 只要能打印出 [ RowDataPacket { '1': 1 } ] 的结果,就证明数据库连接正常 console.log(results); }); -
通过 mysql 模块执行 SQL 语句
/** * 查询 users 表中所有的数据 */ const sqlStr = 'select * from users'; db.query(sqlStr, (err, results) => { // 数据查询失败 if(err) return console.log(err.message); /** * 数据查询成功 * 注意:如果执行的是 select 查询语句,则执行的结果是数组 */ console.log(results); }); const userData = { username: '胖丁', password: '123456', }; const insertSqlData = 'insert into users (username, password) values (?, ?)'; db.query(insertSqlData, [userData.username, userData.password], (err, results) => { // 数据插入失败 if(err) return console.log(err.message); /** * 数据插入成功 * 注意:如果执行的是 insert into 插入语句,则 results 是一个对象 * 可以通过 affectedRows 属性,来判断是否插入数据成功 */ if(results.affectedRows === 1) { console.log('数据插入成功', results); } }); const userList = { username: '芳芳', password: '123456', }; const insertSqlList = 'insert into users set ?'; db.query(insertSqlList, userList, (err, results) => { // 数据插入失败 if(err) return console.log(err.message); /** * 数据插入成功 * 注意:如果执行的是 insert into 插入语句,则 results 是一个对象 * 可以通过 affectedRows 属性,来判断是否插入数据成功 */ if(results.affectedRows === 1) { console.log('数据插入成功', results); } }); /** * 更新数据 */ const updateUserData = { id: 8, username: '我叫胖丁哈哈', password: '22222' } // const updateSqlDate = 'update users set username=?, password=? where id=?'; // db.query(updateSqlDate, [updateUserData.username, updateUserData.password, updateUserData.id], (err, results) => { // if(err) return console.log(err.message); // 更新失败 // if(results.affectedRows === 1) { // console.log('更新成功!') // } // }) const updateSqlDate = 'update users set ? where id=?'; db.query(updateSqlDate, [updateUserData, updateUserData.id], (err, results) => { if(err) return console.log(err.message); // 更新失败 if(results.affectedRows === 1) { console.log('更新成功!') } }) /** * 删除数据 * 推荐根据 id 这样的唯一标识,来删除对应的数据 */ const deleteSqlData = 'delete from users where id=?'; db.query(deleteSqlData, 8, (err, results) => { if(err) return console.log(err.message); if(results.affectedRows === 1) return console.log('删除成功!'); });