目录

  1. MySQL 简介
  2. 安装 MySQL
  3. MySQL 基本操作
  4. 数据库和表的操作
  5. 数据类型
  6. SQL 语句
  7. 索引
  8. 存储引擎
  9. 视图
  10. 存储过程与触发器
  11. 用户权限管理
  12. 备份与恢复
  13. 性能优化
  14. 常见问题
  15. 参考资料

MySQL 简介

MySQL 是一种开源的关系型数据库管理系统(RDBMS),使用 SQL(结构化查询语言)进行操作。它广泛用于 Web 开发、企业级应用、数据分析等领域。


安装 MySQL

Windows 安装

  1. 下载 MySQL Installer:MySQL 官网
  2. 运行安装程序,选择完整安装或自定义安装。
  3. 配置 root 账户密码,设置端口(默认 3306)。
  4. 完成安装后,使用 mysql -u root -p 登录。

Linux 安装(Ubuntu 示例)

sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo mysql_secure_installation

macOS 安装(使用 Homebrew)

brew install mysql
brew services start mysql


MySQL 基本操作

启动 MySQL 服务

sudo systemctl start mysql  # Linux
brew services start mysql   # macOS
net start mysql             # Windows

连接 MySQL

mysql -u root -p

退出 MySQL

exit;


数据库和表的操作

创建数据库

CREATE DATABASE mydb;

删除数据库

DROP DATABASE mydb;

创建表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

删除表

DROP TABLE users;

修改表结构

ALTER TABLE users ADD COLUMN age INT;
ALTER TABLE users DROP COLUMN age;


数据类型

常见数据类型

  • 整型TINYINTSMALLINTMEDIUMINTINTBIGINT
  • 浮点型FLOATDOUBLEDECIMAL
  • 字符型CHARVARCHARTEXT
  • 日期时间DATEDATETIMETIMESTAMP

SQL 语句

插入数据

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

查询数据

SELECT * FROM users;
SELECT name, email FROM users WHERE id = 1;

更新数据

UPDATE users SET name = 'Bob' WHERE id = 1;

删除数据

DELETE FROM users WHERE id = 1;


索引

创建索引

CREATE INDEX idx_name ON users(name);

删除索引

DROP INDEX idx_name ON users;


存储引擎

MySQL 常见存储引擎:

  • InnoDB(默认,支持事务)
  • MyISAM(适用于只读或少量写操作的场景)
  • Memory(基于内存,适合临时数据存储)

视图

CREATE VIEW user_view AS 
SELECT name, email FROM users;


存储过程与触发器

存储过程

DELIMITER //
CREATE PROCEDURE GetUsers()
BEGIN
    SELECT * FROM users;
END //
DELIMITER ;

触发器

CREATE TRIGGER before_insert_users
BEFORE INSERT ON users
FOR EACH ROW
SET NEW.created_at = NOW();


用户权限管理

创建用户

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';

授权

GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'localhost';

撤销权限

REVOKE ALL PRIVILEGES ON mydb.* FROM 'user1'@'localhost';

删除用户

DROP USER 'user1'@'localhost';


备份与恢复

备份数据库

mysqldump -u root -p mydb > backup.sql

恢复数据库

mysql -u root -p mydb < backup.sql


性能优化

  • 使用索引
  • 避免 SELECT *,只查询必要的字段
  • 使用 EXPLAIN 分析查询性能
  • 定期优化表结构OPTIMIZE TABLE
  • 使用缓存(Query Cache 或 Redis)

常见问题

1. 忘记 root 密码怎么办?

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

2. 解决 “MySQL server has gone away”

调整 max_allowed_packet 参数,提高默认值:

SET GLOBAL max_allowed_packet = 64M;


参考资料


这样的一篇 MySQL 教程包含了从基础到进阶的知识点,你觉得需要补充哪些内容?