MySQL数据库从入门到精通完整教程

本文摘要一、MySQL简介MySQL是最流行的开源关系型数据库管理系统,具有以下特点:开源免费:社区版完全免费,商业版提供企业级支持性能优异:处理速度快,支持高并发访问跨平台:支持Windows、Linux、Mac OS等多种操作系统生态完善:丰富的工具、文档和社区支持二、基础入门1. 安装与配置Windows:下载安装包,图形化安装Linux:apt/yum命令安装,配置my.cnfMac:brew i...

一、MySQL简介

MySQL是最流行的开源关系型数据库管理系统,具有以下特点:

  • 开源免费:社区版完全免费,商业版提供企业级支持
  • 性能优异:处理速度快,支持高并发访问
  • 跨平台:支持Windows、Linux、Mac OS等多种操作系统
  • 生态完善:丰富的工具、文档和社区支持

二、基础入门

1. 安装与配置

  • Windows:下载安装包,图形化安装
  • Linux:apt/yum命令安装,配置my.cnf
  • Mac:brew install mysql

2. 基本操作

-- 登录数据库
mysql -u root -p

-- 查看所有数据库
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE test_db CHARACTER SET utf8mb4;

-- 使用数据库
USE test_db;

-- 查看所有表
SHOW TABLES;

3. 数据类型

  • 数值型:INT、BIGINT、FLOAT、DOUBLE、DECIMAL
  • 字符串:CHAR、VARCHAR、TEXT、BLOB
  • 日期时间:DATE、TIME、DATETIME、TIMESTAMP

三、SQL语句详解

1. DDL(数据定义语言)

-- 创建表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(100) NOT NULL,
    email VARCHAR(100),
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 修改表结构
ALTER TABLE users ADD COLUMN age INT;
ALTER TABLE users MODIFY COLUMN username VARCHAR(80);
ALTER TABLE users DROP COLUMN age;

-- 删除表
DROP TABLE users;

2. DML(数据操作语言)

-- 插入数据
INSERT INTO users (username, password, email) 
VALUES ('admin', '123456', 'admin@example.com');

-- 更新数据
UPDATE users SET email = 'new@example.com' WHERE id = 1;

-- 删除数据
DELETE FROM users WHERE id = 1;

3. DQL(数据查询语言)

-- 基础查询
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;

-- 条件查询
SELECT * FROM users WHERE create_time > '2026-01-01';

-- 排序和分页
SELECT * FROM users ORDER BY create_time DESC LIMIT 10 OFFSET 0;

-- 聚合函数
SELECT COUNT(*) FROM users;
SELECT MAX(id), MIN(id), AVG(id) FROM users;

-- 分组查询
SELECT COUNT(*), DATE(create_time) FROM users GROUP BY DATE(create_time);

4. 联表查询

-- INNER JOIN
SELECT u.*, o.order_no 
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

-- LEFT JOIN
SELECT u.*, o.order_no 
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;

四、进阶技能

1. 索引优化

  • 主键索引:PRIMARY KEY
  • 唯一索引:UNIQUE
  • 普通索引:INDEX
  • 联合索引:INDEX(col1, col2, col3)
-- 创建索引
CREATE INDEX idx_username ON users(username);
CREATE INDEX idx_email ON users(email);

-- 查看执行计划
EXPLAIN SELECT * FROM users WHERE username = 'admin';

2. 事务处理

-- 开启事务
START TRANSACTION;

-- 执行SQL
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;

-- 提交事务
COMMIT;

-- 回滚事务
-- ROLLBACK;

3. 存储过程与函数

-- 创建存储过程
DELIMITER //
CREATE PROCEDURE GetUserById(IN userId INT)
BEGIN
    SELECT * FROM users WHERE id = userId;
END //
DELIMITER ;

-- 调用存储过程
CALL GetUserById(1);

五、性能优化

  1. 索引优化:为常用查询字段建立合适的索引
  2. SQL优化:避免SELECT *,使用LIMIT分页,避免全表扫描
  3. 分库分表:数据量大时考虑水平/垂直拆分
  4. 读写分离:主库写,从库读,提高并发能力
  5. 缓存策略:Redis缓存热点数据,减少数据库压力

六、学习建议

  1. 多练习:SQL语法需要大量练习才能熟练
  2. 看官方文档:MySQL官方文档是最好的学习资料
  3. 理解原理:了解索引原理、事务隔离级别等底层机制
  4. 实战项目:通过实际项目积累经验
  5. 持续学习:MySQL版本更新,新特性需要持续关注
MySQL是后端开发必备技能,掌握它让你如虎添翼!

觉得内容不错?我要

打赏杯咖啡或蜜雪冰城吧
微信扫一扫
微信赞赏码
支付宝扫一扫
支付宝赞赏码
评论 暂无评论
请登录后参与评论