四时宝库

程序员的知识宝库

MySQL 教程(mysql完整教程)

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 的基本使用方法,并能够进行更复杂的数据管理和操作。如果有任何问题或需要进一步的帮助,请随时提问!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接