MySQL 是一个流行的开源关系型数据库管理系统,广泛应用于 Web 开发。以下是 MySQL 从安装到基本理解的完整指南:
下载安装包
安装步骤
# 1. 运行安装程序
# 2. 选择安装类型:Developer Default(推荐)
# 3. 配置 MySQL Server
# - 设置 root 密码
# - 配置服务名称和端口(默认3306)
# 4. 完成安装
# 更新包列表
sudo apt update
# 安装 MySQL
sudo apt install mysql-server
# 启动 MySQL 服务
sudo systemctl start mysql
# 设置开机启动
sudo systemctl enable mysql
# 安全配置
sudo mysql_secure_installation
# 使用 Homebrew 安装
brew install mysql
# 启动 MySQL 服务
brew services start mysql
# 初始化安全设置
mysql_secure_installation
数据库实例 → 数据库 → 表 → 行(记录) → 字段(列)
-- 命令行连接
mysql -u root -p
-- 连接指定主机和端口
mysql -h localhost -P 3306 -u root -p
-- 显示所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE test_db;
-- 使用数据库
USE test_db;
-- 删除数据库
DROP DATABASE test_db;
-- 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT DEFAULT 18,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 显示表结构
DESCRIBE users;
-- 修改表
ALTER TABLE users ADD COLUMN phone VARCHAR(15);
-- 删除表
DROP TABLE users;
-- 插入数据
INSERT INTO users (username, email, age)
VALUES ('张三', 'zhangsan@example.com', 25);
-- 查询数据
SELECT * FROM users;
SELECT username, email FROM users WHERE age > 20;
-- 更新数据
UPDATE users SET age = 26 WHERE username = '张三';
-- 删除数据
DELETE FROM users WHERE id = 1;
SELECT * FROM users
WHERE age BETWEEN 20 AND 30
AND email LIKE '%@example.com'
ORDER BY created_at DESC
LIMIT 10;
-- 统计、求和、平均值等
SELECT
COUNT(*) as total_users,
AVG(age) as avg_age,
MAX(age) as max_age,
MIN(age) as min_age
FROM users;
SELECT
age_group,
COUNT(*) as user_count
FROM (
SELECT
CASE
WHEN age < 20 THEN '青少年'
WHEN age BETWEEN 20 AND 30 THEN '青年'
ELSE '成年'
END as age_group
FROM users
) as grouped
GROUP BY age_group;
-- 创建订单表
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
amount DECIMAL(10,2),
order_date DATE,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 内连接
SELECT
u.username,
o.amount,
o.order_date
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 左连接
SELECT
u.username,
COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id;
-- 单列索引
CREATE INDEX idx_email ON users(email);
-- 复合索引
CREATE INDEX idx_age_created ON users(age, created_at);
-- 唯一索引
CREATE UNIQUE INDEX idx_unique_username ON users(username);
SHOW INDEX FROM users;
-- 分析查询性能
EXPLAIN SELECT * FROM users WHERE age > 25;
-- 开始事务
START TRANSACTION;
-- 执行操作
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
-- 提交或回滚
COMMIT; -- 确认更改
-- ROLLBACK; -- 撤销更改
-- 创建存储过程
DELIMITER //
CREATE PROCEDURE GetUserCount()
BEGIN
SELECT COUNT(*) as total FROM users;
END //
DELIMITER ;
-- 调用存储过程
CALL GetUserCount();
# 备份整个数据库
mysqldump -u root -p test_db > backup.sql
# 备份指定表
mysqldump -u root -p test_db users > users_backup.sql
# 恢复数据库
mysql -u root -p test_db < backup.sql
-- 创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
-- 授予权限
GRANT SELECT, INSERT ON test_db.* TO 'newuser'@'localhost';
-- 查看权限
SHOW GRANTS FOR 'newuser'@'localhost';
-- 撤销权限
REVOKE INSERT ON test_db.* FROM 'newuser'@'localhost';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
这个学习路线涵盖了 MySQL 的核心内容。建议按照顺序学习,从基础操作开始,逐步深入高级功能。实践是最好的学习方式,多动手编写 SQL 语句,解决实际问题。