第一次作业

一.

  1. 环境检查:
  • 确认操作系统位数(32/64 位),匹配对应 MySQL 安装包(推荐 64 位);
  • 关闭占用 3306 端口的程序(如其他数据库、迅雷等,可通过netstat -ano | findstr 3306(Windows)或lsof -i:3306(Linux/macOS)查询);
  • 预留至少 500MB 磁盘空间(含安装文件和数据存储)。
  1. 安装包下载:
  • 官方渠道:选择对应系统的 "Installer"(Windows)、"RPM 包"(Linux);
  • 镜像渠道:国内用户可选择华为云、阿里云镜像,下载速度更快。
  1. 权限要求:
  • Windows:需管理员权限(右键安装程序选择 "以管理员身份运行");
  • Linux/macOS:需 root 权限(使用sudo命令)。

  • 二、MySQL 安装步骤(分系统详解)​

    (一)Windows 系统(exe 安装包 / 压缩包两种方式)​

  • 双击下载的mysql-installer-community-xxx.exe,勾选 "Accept License Agreement",点击 "Next";

  • 选择安装类型:

  • 新手选 "Developer Default";

  • 自定义选 "Custom",勾选 "MySQL Server" 及需要的组件;

  • 路径设置:默认安装路径(C:\Program Files\MySQL\MySQL Server 8.0)可修改,数据存储路径建议单独设置(如 D:\MySQL\Data),避免 C 盘满溢;

  • 配置端口:默认 3306,若被占用可修改为 3307 等未占用端口,勾选 "Open Firewall port for network access";

  • 账号设置:必须设置 root 管理员密码,可添加普通用户;

  • 服务配置:默认 "Windows Service Name" 为 MySQL80,勾选 "Start the MySQL Server at System Startup";

  • 完成安装:点击 "Execute" 执行配置,等待进度条完成后,点击 "Finish",可勾选 "Launch MySQL Workbench" 验证连接。

  • 方式 2:压缩包

  • 解压下载的压缩包到目标路径;

  • 新建配置文件:在解压根目录新建my.ini文件,写入基础配置:

  • ini

    mysqld\]​ basedir=D:\\MySQL\\mysql-8.0.36 datadir=D:\\MySQL\\Data port=3306​ character-set-server=utf8mb4​ default-storage-engine=INNODB​ \[mysql\]​ default-character-set=utf8mb4​ ​

  • cmd

    cd D:\MySQL\mysql-8.0.36\bin​

    mysqld --initialize --console

  • 安装并启动服务:

  • plaintext

    mysqld --install MySQL80 ​

    net start MySQL80

  • 登录并修改密码:

  • cmd

    mysql -u root -p

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ​

    (二)Linux 系统

    方式 1:YUM 安装

  • 下载 MySQL YUM 仓库配置文件:

  • plaintext

    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm​

  • 安装仓库并启用对应版本:

  • bash

    rpm -ivh mysql80-community-release-el7-3.noarch.rpm​

    vi /etc/yum.repos.d/mysql-community.repo​​

  • 安装 MySQL Server:

  • b

    yum install -y mysql-community-server​

  • 启动服务并设置开机自启:

  • b

    systemctl start mysqld​

    systemctl enable mysqld​

  • 查看临时密码并修改:

  • b

    grep 'temporary password' /var/log/mysqld.log

    mysql -u root -p

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';

    方式 2:RPM 包安装

  • 下载对应版本的 RPM 包;

  • 卸载系统自带的 mariadb:

  • ba

    rpm -e --nodeps mariadb-libs​

  • 安装依赖并安装 MySQL:

  • bas

    yum install -y libaio-devel​

    rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm​

    rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm​

    rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm​

    rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm​

  • 后续步骤(启动服务、改密码)同 YUM 安装的 4-5 步。

一、数据库设计说明

**

  1. 数据库名称:library_management
  1. 设计原则
    • 字段类型适配数据特性;
    • 添加主键约束确保数据唯一性,外键关联保证数据一致性;
    • 非空字段设置NOT NULL,避免无效数据;
    • 密码字段预留加密空间。

二、建库建表 SQL 语句

复制代码

-- 1. 创建数据库(指定编码为utf8mb4,支持所有中文及特殊字符)

CREATE DATABASE IF NOT EXISTS library_management

DEFAULT CHARACTER SET utf8mb4

DEFAULT COLLATE utf8mb4_general_ci;

-- 切换到目标数据库

USE library_management;

-- 2. 创建用户表(user)

CREATE TABLE IF NOT EXISTS `user` (

```id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '用户唯一标识(自增主键)',``

```name` VARCHAR(50) NOT NULL COMMENT '姓名',``

```username` VARCHAR(30) NOT NULL UNIQUE COMMENT '用户名(唯一,用于登录)',``

```password` VARCHAR(64) NOT NULL COMMENT '密码(建议加密存储,预留加密后长度)',``

```phone` CHAR(11) NOT NULL COMMENT '手机号(固定11位)',``

```address` VARCHAR(255) COMMENT '住址(可空)',``

```major_grade` VARCHAR(50) NOT NULL COMMENT '专业及年级(如:计算机科学与技术2022级)'``

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表';

-- 3. 创建图书表(book)

CREATE TABLE IF NOT EXISTS `book` (

```id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '图书唯一标识(自增主键)',``

```book_name` VARCHAR(100) NOT NULL COMMENT '图书名',``

```category` VARCHAR(50) NOT NULL COMMENT '分类(如:计算机、文学、历史)',``

```introduction` TEXT COMMENT '图书介绍(可长文本)',``

```publisher` VARCHAR(100) NOT NULL COMMENT '出版社',``

```stock_time` DATETIME NOT NULL COMMENT '入库时间'``

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图书信息表';

-- 4. 创建借阅登记表(borrow_record)

CREATE TABLE IF NOT EXISTS `borrow_record` (

```id` INT PRIMARY KEY AUTO_INCREMENT COMMENT '借阅记录唯一标识(自增主键)',``

```user_id` INT NOT NULL COMMENT '借阅人ID(关联用户表)',``

```book_id` INT NOT NULL COMMENT '图书ID(关联图书表)',``

```borrow_time` DATETIME NOT NULL COMMENT '借阅时间',``

```is_return` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否归还(0=未归还,1=已归还)',``

-- 外键约束:确保借阅人、图书存在于对应表中

FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE,

FOREIGN KEY (`book_id`) REFERENCES `book`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='图书借阅登记表';

三、表结构详细信息(模拟 desc 查询结果)

1. 用户表(user)

|-------------|--------------|-----|-----|------|----------------|--------------------------|
| 字段名 | 类型 | 空值 | 键 | 默认值 | 额外 | 注释 |
| id | int | NO | PRI | NULL | auto_increment | 用户唯一标识 |
| name | varchar(50) | NO | | NULL | | 姓名 |
| username | varchar(30) | NO | UNI | NULL | | 用户名 |
| password | varchar(64) | NO | | NULL | | 密码 |
| phone | char(11) | NO | | NULL | | 手机号 |
| address | varchar(255) | YES | | NULL | | 住址 |
| major_grade | varchar(50) | NO | | NULL | | 专业及年级(如:计算机科学与技术 2022 级) |

2. 图书表(book)

|--------------|--------------|-----|-----|------|----------------|--------|
| 字段名 | 类型 | 空值 | 键 | 默认值 | 额外 | 注释 |
| id | int | NO | PRI | NULL | auto_increment | 图书唯一标识 |
| book_name | varchar(100) | NO | | NULL | | 图书名 |
| category | varchar(50) | NO | | NULL | | 分类 |
| introduction | text | YES | | NULL | | 图书介绍 |
| publisher | varchar(100) | NO | | NULL | | 出版社 |
| stock_time | datetime | NO | | NULL | | 入库时间 |

3. 借阅登记表(borrow_record)

|-------------|------------|----|-----|------|----------------|----------|
| 字段名 | 类型 | 空值 | 键 | 默认值 | 额外 | 注释 |
| id | int | NO | PRI | NULL | auto_increment | 借阅记录唯一标识 |
| user_id | int | NO | MUL | NULL | | 借阅人 ID |
| book_id | int | NO | MUL | NULL | | 图书 ID |
| borrow_time | datetime | NO | | NULL | | 借阅时间 |
| is_return | tinyint(1) | NO | | 0 | | 是否归还 |

相关推荐
有谁看见我的剑了?14 小时前
ESXI 虚拟机模板学习
云计算
iconball15 小时前
个人用云计算学习笔记 --33 Containerd
运维·笔记·学习·云计算
iconball16 小时前
个人用云计算学习笔记 --35 Ceph 分布式存储
运维·笔记·ceph·学习·云计算
iconball16 小时前
个人用云计算学习笔记 --36 MySQL
运维·笔记·学习·云计算
iconball16 小时前
个人用云计算学习笔记 --34华为 OceanStor 仿真器部署与基础使用指南
运维·笔记·学习·云计算
楚来客1 天前
云计算操作系统与数据库基础概念
云计算
Kiyra1 天前
LinkedHashMap 源码阅读
java·开发语言·网络·人工智能·安全·阿里云·云计算
fengfeng N1 天前
阿里云esc预安装宝塔启动
阿里云·云计算
iconball2 天前
个人用云计算学习笔记 --32 Docker和docker swarm
运维·笔记·学习·docker·容器·云计算