MySQL学习

一、数据库的基本概念

1.1 数据库的概念

  • 定义:组织,存储和管理数据的仓库
  • 分类:
    • 关系型数据库(传统型数据库)
      • MySQL数据库(开源)
      • Oracle数据库
      • SQL Server数据库
    • 非关系型数据库(新型数据库)
      • Mongodb

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
    • 除以下选择,其他默认
      sql-安装

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)])
×

喜欢就点赞,疼爱就打赏