数据库入门

        在信息系统开发中,数据库是存储和管理数据的核心组件。本文将从实践出发,带大家完成 MySQL 的安装与卸载、数据库原理图绘制,并设计实现图书管理系统的数据库,帮助初学者夯实数据库基础操作与设计思维。

一、MySQL 8.0 安装与卸载(Windows 系统)

1.1 安装前准备​

  1. 下载安装包:访问MySQL 官,选择 “MySQL Community Server”,操作系统选择 “Windows”,下载 “ZIP Archive” 版本(无需安装器,操作更灵活)。​
  1. 环境配置:解压安装包到自定义路径(如D:\MySQL\mysql-8.0.36-winx64),在系统环境变量 “Path” 中添加D:\MySQL\mysql-8.0.36-winx64\bin(便于全局调用 MySQL 命令)。​
  1. 新建配置文件:在安装目录下新建my.ini文件,写入基础配置(指定端口、数据存储路径等):
[mysqld]
# 端口号(默认3306)
port=3306
# 安装目录
basedir=D:\MySQL\mysql-8.0.36-winx64
# 数据存储目录(需手动新建data文件夹)
datadir=D:\MySQL\mysql-8.0.36-winx64\data
# 最大连接数
max_connections=200
# 字符集(默认utf8mb4,支持 emoji)
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB
[mysql]
# 客户端字符集
default-character-set=utf8mb4

1.2 详细安装步骤​

  1. 初始化 MySQL:以管理员身份打开命令提示符(CMD),执行初始化命令(生成临时 root 密码,需记录):
mysqld --initialize --console

执行后会输出类似内容,其中 “root@localhostlocalhost:” 后的字符串即为临时密码(如_pX8k9&Yq2+):安装 MySQL 服务:执行命令将 MySQL 注册为系统服务(服务名默认为 “MySQL”)

2024-XX-XXTXX:XX:XX.XXXXXXZ 0 [Warning] ...
2024-XX-XXTXX:XX:XX.XXXXXXZ 1 [Note] A temporary password is generated for root@localhost: _pX8k9&Yq2+
  1. 3安装 MySQL 服务:执行命令将 MySQL 注册为系统服务(服务名默认为 “MySQL”):​
mysqld --install MySQL

若提示 “Service successfully installed”,说明服务安装成功。​

3.启动 MySQL 服务:执行命令启动服务:

net start MySQL

提示 “MySQL 服务已经启动成功” 即可。​

4.登录并修改密码:使用临时密码登录 MySQL,然后修改为自定义密码(如123456,实际生产环境需设复杂密码):

# 登录命令
mysql -u root -p
# 输入临时密码(粘贴时注意隐藏字符)
# 修改密码(将'123456'替换为你的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 刷新权限
FLUSH PRIVILEGES;

1.3 安装验证

登录 MySQL 后,执行show databases;命令,若能正常显示系统默认数据库(如information_schema、mysql),说明安装成功:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

1.4 卸载步骤

若需卸载 MySQL,需按以下步骤操作,避免残留文件影响后续安装:

  1. 停止 MySQL 服务:管理员身份打开 CMD,执行:
net stop MySQL

3.卸载安装目录:删除 MySQL 安装文件夹(如D:\MySQL\mysql-8.0.36-winx64),注意提前备份数据(若需保留)。

4.清理注册表:按下Win+R输入regedit打开注册表,删除以下路径的 MySQL 相关项(谨慎操作,避免误删其他内容):

    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL
    • HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB

5.清理环境变量:删除系统环境变量 “Path” 中 MySQL 的 bin 路径。

1.5 注意事项

  • 端口占用问题:若安装时提示 “端口 3306 被占用”,可修改my.ini中的port字段(如 3307),重新执行初始化步骤。
  • 临时密码丢失:删除data文件夹,重新执行mysqld --initialize --console生成新临时密码。

二、数据库原理图(ER 图)绘制

ER 图(实体 - 关系图)是数据库设计的核心工具,用于可视化实体、属性及实体间的关系。本次使用免费在线工具DrawIO绘制,步骤如下:

2.1 工具准备

打开 DrawIO 官网,选择 “空白绘图”,在左侧 “形状” 面板中找到 “实体关系图” 分类,包含实体、属性、关系等基础元素。

2.2 绘制步骤(以图书管理系统为例)

  1. 添加实体:拖拽 “实体” 形状到画布,分别命名为 “用户”“图书”“借阅登记”。
  1. 添加属性:
    • 右键 “用户” 实体→“添加属性”,依次添加 “用户名(主键)”“姓名”“密码”“电话”“住址”“专业及年级”;
    • 右键 “图书” 实体→“添加属性”,依次添加 “图书 ID(主键)”“图书名”“分类”“介绍”“出版社”“入库时间”;
    • 右键 “借阅登记” 实体→“添加属性”,依次添加 “借阅 ID(主键)”“借阅人(外键,关联用户。用户名)”“图书 ID(外键,关联图书。图书 ID)”“借阅时间”“是否归还”。
  1. 建立关系:
    • 拖拽 “关系” 形状连接 “用户” 和 “借阅登记”,标注关系为 “1:N”(1 个用户可有多条借阅记录);
    • 拖拽 “关系” 形状连接 “图书” 和 “借阅登记”,标注关系为 “1:N”(1 本图书可有多条借阅记录)。

2.3 原理图解析

  • 实体:用户、图书、借阅登记(对应数据库中的表);
  • 主键:唯一标识实体的属性(如 “用户名” 唯一标识 “用户”);
  • 外键:关联两个实体的属性(如 “借阅登记。借阅人” 关联 “用户。用户名”,确保数据一致性);
  • 关系:1:N 表示 “一对多”,是图书管理系统中核心的数据关联逻辑。

(注:实际绘制完成后,可通过 DrawIO 的 “文件→导出” 功能保存为 PNG/JPG 格式,便于后续文档插入。)

三、图书管理系统数据库设计与实现

根据需求,设计包含 3 张表的数据库,遵循 “三范式” 原则(减少数据冗余、保证数据一致性),具体实现如下:

3.1 需求分析​

表名​

核心需求​

用户表​

存储用户基本信息,需唯一标识用户(用户名),记录姓名、密码等关键信息​

图书表​

存储图书信息,需唯一标识图书(新增图书 ID,避免同名图书冲突),记录分类、出版社等​

借阅登记表​

记录借阅行为,关联用户与图书,需跟踪借阅时间和归还状态​

3.2 数据库与表设计​

  1. 数据库名:library_management(图书管理系统);​
  1. 表结构设计:​

表名​

字段名​

字段类型​

约束条件​

说明​

user_info​

user_account​

VARCHAR(50)​

PRIMARY KEY, NOT NULL, UNIQUE​

用户名(主键,唯一标识)​

user_name​

VARCHAR(50)​

NOT NULL​

姓名​

user_password​

VARCHAR(100)​

NOT NULL​

密码(建议加密存储)​

user_phone​

VARCHAR(20)​

NOT NULL, CHECK(LENGTH>=11)​

电话(至少 11 位)​

user_address​

VARCHAR(200)​

NULL​

住址(可空)​

user_major_grade​

VARCHAR(50)​

NOT NULL​

专业及年级​

book_info​

book_id​

INT​

PRIMARY KEY, NOT NULL, AUTO_INCREMENT​

图书 ID(主键,自增)​

book_name​

VARCHAR(100)​

NOT NULL​

图书名​

book_category​

VARCHAR(50)​

NOT NULL​

分类(如 “计算机科学”)​

book_intro​

TEXT​

NULL​

介绍(长文本,可空)​

book_publisher​

VARCHAR(100)​

NOT NULL​

出版社​

book_stock_time​

DATETIME​

NOT NULL​

入库时间​

borrow_record​

borrow_id​

INT​

PRIMARY KEY, NOT NULL, AUTO_INCREMENT​

借阅 ID(主键,自增)​

borrower_account​

VARCHAR(50)​

NOT NULL, FOREIGN KEY​

借阅人(关联 user_info.user_account)​

borrow_book_id​

INT​

NOT NULL, FOREIGN KEY​

图书 ID(关联 book_info.book_id)​

borrow_time​

DATETIME​

NOT NULL​

借阅时间(默认当前时间)​

is_returned​

ENUM('YES','NO')​

NOT NULL, DEFAULT 'NO'​

是否归还(默认未归还)​

3.3 建库建表语句​

打开 MySQL 命令行或 Navicat 等工具,执行以下 SQL 语句:​

1. 创建数据库

CREATE DATABASE IF NOT EXISTS library_management 
DEFAULT CHARACTER SET utf8mb4 
DEFAULT COLLATE utf8mb4_general_ci;

2. 使用数据库

USE library_management;

3. 创建用户表(user_info)

CREATE TABLE IF NOT EXISTS user_info (
    user_account VARCHAR(50) PRIMARY KEY NOT NULL UNIQUE,
    user_name VARCHAR(50) NOT NULL,
    user_password VARCHAR(100) NOT NULL,
    user_phone VARCHAR(20) NOT NULL CHECK (LENGTH(user_phone) >= 11),
    user_address VARCHAR(200) NULL,
    user_major_grade VARCHAR(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

4. 创建图书表(book_info)

CREATE TABLE IF NOT EXISTS book_info (
    book_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    book_name VARCHAR(100) NOT NULL,
    book_category VARCHAR(50) NOT NULL,
    book_intro TEXT NULL,
    book_publisher VARCHAR(100) NOT NULL,
    book_stock_time DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

5. 创建借阅登记表(borrow_record)

CREATE TABLE IF NOT EXISTS borrow_record (
    borrow_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    borrower_account VARCHAR(50) NOT NULL,
    borrow_book_id INT NOT NULL,
    borrow_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    is_returned ENUM('YES','NO') NOT NULL DEFAULT 'NO',
    -- 外键约束:关联用户表
    FOREIGN KEY (borrower_account) REFERENCES user_info(user_account)
    ON DELETE CASCADE ON UPDATE CASCADE,
    -- 外键约束:关联图书表
    FOREIGN KEY (borrow_book_id) REFERENCES book_info(book_id)
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值