作为一名数据库开发工程师,我经常需要指导新人快速上手MySQL。今天我将分享一个完整的MySQL入门实战案例,涵盖从安装到创建数据库、表结构设计的全过程。这个案例特别适合刚接触数据库开发的朋友,我会详细解释每个步骤背后的原理和注意事项。
MySQL 8.0是目前最稳定的生产版本,我推荐使用8.0.37版本。这个版本修复了许多已知问题,同时保持了良好的兼容性。安装前需要考虑你的操作系统环境:
提示:初学者建议使用MSI安装包,它会自动完成大部分配置工作,减少出错概率。
安装完成后,可以通过命令提示符验证是否安装成功:
bash复制mysql --version
如果显示版本信息(如"mysql Ver 8.0.37 for Win64 on x86_64"),说明安装成功。
使用以下命令连接到本地MySQL服务器:
bash复制mysql -uroot -p
系统会提示输入密码,输入安装时设置的root密码即可。
连接成功后,你会看到MySQL的命令行提示符:
code复制mysql>
我们首先创建一个名为mydb6_product的数据库:
sql复制CREATE DATABASE mydb6_product;
使用这个数据库:
sql复制USE mydb6_product;
验证当前使用的数据库:
sql复制SELECT DATABASE();
这个命令会返回当前正在使用的数据库名称。
员工表是典型的实体表,包含员工的基本信息。以下是创建语句:
sql复制CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
gender VARCHAR(10) NOT NULL DEFAULT 'unknown',
salary FLOAT
);
设计要点解析:
id作为主键,使用INT类型name设置为NOT NULL,因为每个员工必须有姓名gender设置了默认值'unknown',避免空值salary使用FLOAT类型,适合存储带小数的薪资数值查看表结构:
sql复制DESC employees;
订单表记录产品订单信息:
sql复制CREATE TABLE orders (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price FLOAT,
quantity INT,
category VARCHAR(50)
);
设计考虑:
发票表是典型的关联表,与订单表形成外键关系:
sql复制CREATE TABLE invoices (
number INT AUTO_INCREMENT PRIMARY KEY,
order_id INT,
`in date` DATE,
`total amount` FLOAT CHECK (`total amount` > 0),
FOREIGN KEY (order_id) REFERENCES orders(id)
);
关键设计点:
number使用AUTO_INCREMENT实现自动编号order_id作为外键关联到orders表的id列重要提示:必须先创建orders表,再创建invoices表,因为外键约束需要引用已存在的表。
sql复制SHOW TABLES;
这个命令会列出当前数据库中的所有表,方便你了解数据库结构。
如果需要修改已创建的表结构,可以使用ALTER TABLE语句。但要注意:
向employees表插入数据:
sql复制INSERT INTO employees (id, name, age, gender, salary)
VALUES (1, '张三', 28, '男', 8500.00);
向orders表插入数据:
sql复制INSERT INTO orders (id, name, price, quantity, category)
VALUES (101, '笔记本电脑', 5999.00, 1, '电子产品');
如果无法连接到MySQL服务器,可以检查:
当遇到外键约束错误时(如无法插入invoice记录),检查:
即使是小型数据库,也应考虑性能:
在实际项目中,我通常会先绘制ER图明确实体关系,再编写SQL创建脚本。对于初学者,建议先用图形化工具(如MySQL Workbench)设计模型,再导出SQL脚本,这样可以减少语法错误。