MySQL 教程
1. MySQL 概述
MySQL 是一个开源的关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL)进行数据管理。它广泛应用于Web应用程序和数据存储。
2. 安装 MySQL
2.1 Windows 上的安装
- 下载 MySQL Installer:MySQL Installer
- 运行安装程序,选择“Server only”或“Full”安装。
- 按照向导完成安装,设置 root 用户密码。
2.2 Linux 上的安装
在 Ubuntu 上使用以下命令安装 MySQL:
sudo apt update
sudo apt install mysql-server
安装完成后,启动 MySQL 服务:
sudo service mysql start
3. 连接到 MySQL
使用命令行工具连接到 MySQL:
mysql -u root -p
输入密码后即可进入 MySQL 命令行界面。
4. 数据库操作
4.1 创建数据库
CREATE DATABASE my_database;
4.2 查看数据库
SHOW DATABASES;
4.3 选择数据库
USE my_database;
4.4 删除数据库
DROP DATABASE my_database;
5. 表操作
5.1 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
5.2 查看表
SHOW TABLES;
5.3 描述表结构
DESCRIBE users;
5.4 删除表
DROP TABLE users;
6. 数据操作
6.1 插入数据
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
6.2 查询数据
SELECT * FROM users;
6.3 条件查询
SELECT * FROM users WHERE name = 'Alice';
6.4 更新数据
UPDATE users SET email = 'alice_new@example.com' WHERE name = 'Alice';
6.5 删除数据
DELETE FROM users WHERE name = 'Bob';
7. 数据类型
- 整数类型:
TINYINT
,SMALLINT
,MEDIUMINT
,INT
,BIGINT
- 浮点数类型:
FLOAT
,DOUBLE
,DECIMAL
- 字符串类型:
CHAR
,VARCHAR
,TEXT
,BLOB
- 日期和时间类型:
DATE
,TIME
,DATETIME
,TIMESTAMP
,YEAR
8. 索引
索引可以加速查询操作,但会增加写入操作的开销。
8.1 创建索引
CREATE INDEX idx_email ON users (email);
8.2 查看索引
SHOW INDEX FROM users;
8.3 删除索引
DROP INDEX idx_email ON users;
9. 事务处理
事务是一组操作,要么全部成功,要么全部失败。
9.1 开始事务
START TRANSACTION;
9.2 提交事务
COMMIT;
9.3 回滚事务
ROLLBACK;
10. 用户管理
10.1 创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
10.2 授权
GRANT ALL PRIVILEGES ON my_database.* TO 'newuser'@'localhost';
10.3 查看用户
SELECT User, Host FROM mysql.user;
10.4 删除用户
DROP USER 'newuser'@'localhost';
11. 备份与恢复
11.1 备份数据库
使用 mysqldump
工具备份数据库:
mysqldump -u root -p my_database > backup.sql
11.2 恢复数据库
使用以下命令恢复数据库:
mysql -u root -p my_database < backup.sql
12. 高级查询
12.1 联接查询
- 内联接:
SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;
- 左联接:
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
12.2 子查询
SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);
12.3 聚合函数
SELECT COUNT(*) FROM users;
SELECT AVG(amount) FROM orders;
13. 最佳实践
- 定期备份: 确保数据安全。
- 使用事务: 确保数据一致性。
- 优化查询: 使用索引和合理的查询结构。
- 监控性能: 使用 MySQL 的性能监控工具。
14. 常见问题
- 连接失败: 检查用户名和密码是否正确,确保 MySQL 服务正在运行。
- 权限问题: 确保用户具有足够的权限执行操作。