MySQL 教程
MySQL 是一个开源的关系型数据库管理系统(RDBMS),广泛用于 Web 应用程序、企业系统和各种数据存储需求。以下是一个详细的 MySQL 教程,涵盖了从基础到高级的主题,并附有示例。
1. 安装与配置
1.1 安装 MySQL
- Windows: 下载并安装 MySQL Installer。
- Linux: 使用包管理器(如 apt 或 yum)安装。
- macOS: 使用 Homebrew 安装。
\\\`bash
Ubuntu/Debian
sudo apt update sudo apt install mysql-server
CentOS/RHEL
sudo yum install mysql-server
macOS
brew install mysql \\\`
1.2 启动 MySQL 服务
\\\`bash
Ubuntu/Debian/CentOS/RHEL
sudo systemctl start mysql
macOS
brew services start mysql \\\`
1.3 配置 MySQL
首次启动后,建议运行 mysql_secure_installation 来设置 root 密码和其他安全选项。
bash sudo mysql_secure_installation
2. 基本命令
2.1 登录 MySQL
bash mysql -u root -p
2.2 查看数据库
sql SHOW DATABASES;
2.3 创建数据库
sql CREATE DATABASE mydatabase;
2.4 使用数据库
sql USE mydatabase;
2.5 查看表
sql SHOW TABLES;
2.6 创建表
sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
2.7 插入数据
sql INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
2.8 查询数据
sql SELECT * FROM users;
2.9 更新数据
sql UPDATE users SET email = 'alice.smith@example.com' WHERE id = 1;
2.10 删除数据
sql DELETE FROM users WHERE id = 2;
2.11 删除表
sql DROP TABLE users;
3. 数据类型
MySQL 支持多种数据类型,包括:
- 数值类型:INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT, FLOAT, DOUBLE, DECIMAL
- 字符串类型:CHAR, VARCHAR, TEXT, BLOB
- 日期和时间类型:DATE, TIME, DATETIME, TIMESTAMP
- 枚举类型:ENUM
- 集合类型:SET
示例
sql CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), price DECIMAL(10, 2), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
4. 索引
索引可以提高查询效率。常见的索引类型有:
- 普通索引:INDEX
- 唯一索引:UNIQUE
- 全文索引:FULLTEXT
- 主键索引:PRIMARY KEY
创建索引
sql CREATE INDEX idx_name ON users (name);
查看索引
sql SHOW INDEX FROM users;
5. 约束
约束用于确保数据的完整性和一致性。常见的约束有:
- 主键约束:PRIMARY KEY
- 外键约束:FOREIGN KEY
- 唯一约束:UNIQUE
- 非空约束:NOT NULL
- 默认值约束:DEFAULT
示例
sql CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, order_date DATE, FOREIGN KEY (user_id) REFERENCES users(id) );
6. 聚合函数
聚合函数用于对一组值进行计算并返回单个值。常见的聚合函数有:
- COUNT:计数
- SUM:求和
- AVG:平均值
- MAX:最大值
- MIN:最小值
示例
sql SELECT COUNT(*) AS total_users FROM users; SELECT AVG(price) AS average_price FROM products;
7. JOIN 操作
JOIN 用于组合多个表的数据。常见的 JOIN 类型有:
- INNER JOIN:返回两个表中匹配的行
- LEFT JOIN:返回左表中的所有行,以及右表中匹配的行
- RIGHT JOIN:返回右表中的所有行,以及左表中匹配的行
- FULL JOIN:返回两个表中的所有行(MySQL 不直接支持 FULL JOIN)
示例
sql SELECT users.name, orders.order_date FROM users INNER JOIN orders ON users.id = orders.user_id;
8. 子查询
子查询是在另一个查询内部的查询。子查询可以嵌套在 SELECT、FROM、WHERE 或 HAVING 子句中。
示例
sql SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
9. 视图
视图是基于 SQL 语句的结果集的虚拟表。视图可以简化复杂的查询。
创建视图
sql CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active';
查询视图
sql SELECT * FROM active_users;
10. 存储过程和函数
存储过程和函数是预编译的 SQL 代码块,可以在需要时调用。
创建存储过程
sql DELIMITER // CREATE PROCEDURE get_user_by_id(IN user_id INT) BEGIN SELECT * FROM users WHERE id = user_id; END // DELIMITER ;
调用存储过程
sql CALL get_user_by_id(1);
创建函数
sql DELIMITER // CREATE FUNCTION get_user_email(user_id INT) RETURNS VARCHAR(100) BEGIN DECLARE email VARCHAR(100); SELECT email INTO email FROM users WHERE id = user_id; RETURN email; END // DELIMITER ;
调用函数
sql SELECT get_user_email(1);
11. 事务
事务是一组 SQL 语句,要么全部执行成功,要么全部失败。事务保证了数据的一致性。
开始事务
sql START TRANSACTION;
提交事务
sql COMMIT;
回滚事务
sql ROLLBACK;
示例
\\\`sql START TRANSACTION;
INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com'); INSERT INTO orders (user\_id, order\_date) VALUES (LAST\_INSERT\_ID(), CURDATE());
COMMIT; \\\`
12. 备份与恢复
备份数据库
bash mysqldump -u root -p mydatabase > backup.sql
恢复数据库
bash mysql -u root -p mydatabase < backup.sql
13. 用户管理
创建用户
sql CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
授予权限
sql GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
撤销权限
sql REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'newuser'@'localhost';
删除用户
sql DROP USER 'newuser'@'localhost';
总结
以上是 MySQL 的详细教程,涵盖了从安装配置到高级功能的各种操作。通过这些内容,你应该能够掌握 MySQL 的基本使用方法,并能够进行更复杂的数据管理和操作。如果有任何问题或需要进一步的帮助,请随时提问!