MySQL完整学习教程
概述
本教程面向从零开始学习MySQL数据库的读者设计,使用中英文双语编写,内容涵盖从基础概念到高级应用的全方位知识。无论您是软件开发者、数据分析师还是数据库管理员,本教程都将帮助您掌握MySQL数据库的核心技能。
教程特点
- 循序渐进 - 从基础到高级,逐步深入
- 双语对照 - 中英文同步讲解
- 实践导向 - 大量可运行的示例代码
- 实用性强 - 含含真实场景的应用案例
- 内容完整 - 涵盖35+核心主题
教程结构
第一部分:基础
- introduction.md - MySQL简介
- installation.md - MySQL安装
- administration.md - MySQL管理
- connection.md - MySQL连接
- create-database.md - 创建数据库
- drop-database.md - 删除数据库
- select-database.md - 选择数据库
- data-types.md - 数据类型
第二部分:核心操作
- create-table.md - 创建数据表
- drop-table.md - 删除数据表
- insert-data.md - 插入数据
- select-data.md - 查询数据
- where-clause.md - WHERE子句
- update.md - UPDATE更新
- delete.md - DELETE语句
- like-clause.md - LIKE子句
- union.md - UNION
- order-by.md - ORDER BY
- group-by.md - 分组
- joins.md - 连接
- null-values.md - NULL值处理
第三部分:高级主题
- regex.md - 正则表达式
- transactions.md - 事务
- alter.md - ALTER命令
- indexes.md - 索引
- temporary-tables.md - 临时表
- clone-tables.md - 复制表
- metadata.md - 元数据
- sequences.md - 序列
- duplicates.md - 处理重复数据
- sql-injection.md - SQL注入
第四部分:数据操作
- export-data.md - 导出数据
- import-data.md - 导入数据
- functions.md - MySQL函数
- operators.md - MySQL运算符
- commands.md - 命令大全
- quiz.md - MySQL测验
- programming.md - 编程语言
- resources.md - 参考资源
快速入门
安装MySQL
bash
# Windows: Download from dev.mysql.com
# macOS: brew install mysql
brew install mysql@8.0
# Linux (Ubuntu/Debian)
sudo apt update
sudo apt install mysql-server
# Start MySQL service
sudo systemctl start mysql连接MySQL
bash
mysql -u root -p
# 创建数据库
CREATE DATABASE myapp;
USE myapp;
# 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
# 插入数据
INSERT INTO users (name, email) VALUES
('张三', 'zhangsan@example.com'),
('李四', 'lisi@example.com');
# 查询数据
SELECT * FROM users;MySQL核心概念
数据库操作
sql
-- 显示所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE database_name;
-- 使用数据库
USE database_name;
-- 删除数据库
DROP DATABASE database_name;表操作
sql
-- 显示所有表
SHOW TABLES;
-- 创建表
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
PRIMARY KEY (column1)
);
-- 显示表结构
DESCRIBE table_name;
-- 删除表
DROP TABLE table_name;CRUD操作
sql
-- 创建(插入)
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
-- 读取(查询)
SELECT * FROM users;
-- 更新
UPDATE users SET name = '李四' WHERE name = '张三';
-- 删除
DELETE FROM users WHERE name = '李四';数据类型速查
数值类型
| 类型 | 存储 | 范围 | 描述 |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 小整数 |
| INT | 4 bytes | -2147483648 to 2147483647 | 整数 |
| BIGINT | 8 bytes | -9.2e+18 to 9.2e+18 | 大整数 |
| FLOAT | 4 bytes | -3.4E+38 to 3.4E+38 | 单精度浮点 |
| DOUBLE | 8 bytes | -1.7E+308 to 1.7E+308 | 双精度浮点 |
| DECIMAL(M,D) | 变长 | 精确数值 | 精确数值 |
字符串类型
| 类型 | 最大长度 | 描述 |
|---|---|---|
| CHAR | 255 | 定长字符串 |
| VARCHAR | 65535 | 变长字符串 |
| TEXT | 65535 | 文本 |
| MEDIUMTEXT | 16777215 | 中文本 |
| LONGTEXT | 4294967295 | 长文本 |
日期时间类型
| 类型 | 大小 | 范围 | 描述 |
|---|---|---|---|
| DATE | 3 bytes | 1000-01-01 to 9999-12-31 | 日期 |
| TIME | 3 bytes | -838:59:59 to 838:59:59 | 时间 |
| DATETIME | 8 bytes | 1000-01-01 00:00:00 to 9999-12-31 23:59:59 | 日期时间 |
| TIMESTAMP | 4 bytes | 1970-01-01 00:00:01 to 2038-01-19:03:14:07:19:03:14:07 | 时间戳 |
| YEAR | 1 byte | 1901 to 2155 | 年份 |
学习路径
初学者路径(1-2周)
- MySQL简介和安装
- MySQL管理基础
- 连接MySQL服务器
- 创建和管理数据库
- 理解数据类型
- 创建和操作数据表
- 基本的INSERT和SELECT操作
- 使用WHERE子句过滤数据
中级路径(3-4周)
- 高级SELECT查询
- UPDATE和DELETE操作
- LIKE和正则表达式
- UNION和排序
- 分组和聚合
- 多表连接
- 处理NULL值
- 事务管理
高级路径(5-6周)
- 索引优化
- ALTER命令高级用法
- 临时表和复制表
- 元数据和序列
- 处理重复数据
- SQL注入防护
- 数据导入导出
- MySQL函数和运算符
在线资源
官方文档
- MySQL官方文档: https://dev.mysql.com/doc/
- MySQL教程: https://dev.mysql.com/doc/refman/8.0/en/tutorial.html
在线学习
- W3Schools MySQL教程: https://www.w3schools.com/mysql/
- MySQLTutorial: https://www.mysqltutorial.org/
- DigitalOcean MySQL教程: https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04
社区资源
- MySQL论坛: https://forums.mysql.com/
- Stack Overflow: https://stackoverflow.com/questions/tagged/mysql
- Reddit MySQL: https://www.reddit.com/r/MySQL/
最佳实践
命名规范
sql
-- 使用小写和下划线
CREATE TABLE user_accounts; -- 推荐 / Recommended
CREATE TABLE UserAccounts; -- 避免 / Avoid
-- 表名使用复数
CREATE TABLE users; -- 常见做法 / Common practice安全实践
sql
-- 创建具有有限权限的用户
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE, DELETE ON myapp.* TO 'app_user'@'localhost';
-- 预防SQL注入
PREPARE stmt FROM 'SELECT * FROM users WHERE id = ?';
SET @id = 1;
EXECUTE stmt USING @id;性能优化
sql
-- 创建适当的索引
CREATE INDEX idx_users_email ON users(email);
-- 使用EXPLAIN分析查询
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
-- 避免SELECT *
SELECT id, name, email FROM users;开始学习: MySQL简介
最后更新: 2026-01-21