一、数据库的基本概念
1.1 数据库的概念
- 定义:组织,存储和管理数据的仓库
- 分类:
- 关系型数据库(传统型数据库)
- MySQL数据库(开源)
- Oracle数据库
- SQL Server数据库
- 非关系型数据库(新型数据库)
1.2 关系型数据库-数据组织结构
- 数据库(database)
- 数据表(table)
- 数据行(row)
- 字段 (field)
二、安装并配置MySQL
2.1 相关软件
- MySQL Server:提供数据存储和服务的软件
- MySQL Workbench:可视化MySQL管理工具
2.2 安装
- 步骤
- 下载:MySQL
- 双击:mysql-installer-community-8.0.19.0.msi
- 除以下选择,其他默认

2.3 数据类型及字段标识
- DataType数据类型
- int整数
- varchar(len)字符串
- tinyint(1)布尔值
- 字段的特殊标识
- PK:主键,唯一标识
- NN:值不允许为空
- UQ:值唯一
- AI:值自动增长
三、MySQL的基本语法
3.1 SQL简单介绍
- sql:数据库编程语言
- sql语句:以编程的形式,操作数据库中的数据
3.2 主要语法:
* 查询:select
```
// 语法
select * from 表名称
select 列名称 from 表名称
// 示例
select username, password from my_test_db_01.user;
```
* 插入:insert into
```
// 语法
insert into 表名称 (列1, 列2, ...) values (值1, 值2, ...);
// 示例
insert into my_test_db_01.user (username, password) values ('小明', 678);
```
* 更新:update
```
// 语法
update 表名称 SET 列名称 = 新值 where 列名称 = 某值
// 示例
update my_test_db_01.user set status = 1 where username = '张三';
```
* 删除:delete(一般只会改状态)
```
// 语法
delete from 表名称 where 列名称 = 值
// 示例
delete from my_test_db_01.user where username = '小明';
```
* 其他语法
```
// where 子句
select * from 表名称 where status = 8;
select * from 表名称 where id > 8;
select * from 表名称 where id <> 8; // 不等于
// and和or运算符
select * from 表名称 where status = 1 and id < 8; // 且
select * from 表名称 where status = 1 or id < 8; // 或
// order by排序
select * from 表名称 order by status; // 升序
select * from 表名称 order by status desc; // 降序
select * from 表名称 order by status desc, username asc; // 多重排序
// count(*)函数
select count(*) from 表名称 where status = 0; // 查询数量
// as起别名
select 列名称 as 别名, 列名称 as 别名 from 表名称;
```
四、Express中操作MySQL
4.1 使用步骤
- 1.安装操作MySQL数据库的第三方模块(mysql)
- 2.通过mysql模块连接MySQL数据库
- 3.通过mysql模块执行SQL语句
- 示例
// 1.安装
npm install express mysql
// 2.新建config/db.js文件
const mysql = require('mysql');
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'admin123',
database: 'my_test_db_01' // 指定操作哪个数据库
})
const dbQuery = (sql, values) => {
return new Promise((resolve, reject) => {
pool.query(sql, values, (error, results) => {
if (error) return reject(error);
resolve(results);
})
})
}
module.exports = dbQuery;
4.2 增删改查操作(node中使用)
// 增
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
sql = `INSERT INTO users (username, password, status) VALUES (?, ?, ?)`
await dbQuery(sql, [username, hashedPassword, status])
// 删
DELETE FROM 表名 WHERE 条件;
await dbQuery('DELETE FROM users status = ? WHERE id = ?', [status, id])
// 改
UPDATE 表名 SET 列1=新值 WHERE 条件;
await dbQuery('UPDATE users SET status = ? WHERE id = ?', [status, id])
// 查
SELECT 列1, 列2 FROM 表名 WHERE 条件;
sql = `SELECT id, username, status FROM users WHERE username LIKE ? AND status = ? ORDER BY id DESC LIMIT ? OFFSET ?`;
await dbQuery(sql,[username, status, parseInt(pageSize), parseInt(offset)])