MySQL 教程
目录
简介
MySQL 是一种关系型数据库管理系统,由瑞典公司 MySQL AB 开发,目前属于 Oracle 公司。MySQL 是世界上最流行的开放源码数据库之一,广泛应用于各种应用场景中,尤其是 Web 应用。
安装 MySQL
Windows
- 下载 MySQL 安装包:MySQL 下载页面
- 运行安装包,选择"Custom"安装类型。
- 选择需要安装的 MySQL 产品,通常包括 MySQL Server 和 MySQL Workbench。
- 按照安装向导完成安装,设置 root 用户密码。
- 安装完成后,启动 MySQL Server,并使用 MySQL Workbench 或命令行客户端连接。
macOS
-
使用 Homebrew 安装 MySQL:
bashbrew install mysql
-
安装完成后,启动 MySQL 服务:
bashbrew services start mysql
-
设置 root 用户密码:
bashmysql_secure_installation
-
使用命令行客户端连接 MySQL:
bashmysql -u root -p
Linux
-
使用包管理器安装 MySQL(以 Ubuntu 为例):
bashsudo apt update sudo apt install mysql-server
-
安装完成后,启动 MySQL 服务:
bashsudo systemctl start mysql
-
设置 root 用户密码:
bashsudo mysql_secure_installation
-
使用命令行客户端连接 MySQL:
bashmysql -u root -p
连接 MySQL
命令行客户端
-
打开终端或命令提示符。
-
运行以下命令连接 MySQL:
bashmysql -u 用户名 -p
-
输入密码后,即可进入 MySQL 命令行模式。
图形化工具
- MySQL Workbench:MySQL 官方提供的图形化管理工具。
- phpMyAdmin:基于 Web 的 MySQL 管理工具。
- Navicat:流行的第三方数据库管理工具,支持多种数据库类型。
基础操作
创建数据库
sql
CREATE DATABASE 数据库名;
删除数据库
sql
DROP DATABASE 数据库名;
选择数据库
sql
USE 数据库名;
表的操作
创建表
sql
CREATE TABLE 表名 (
列名1 数据类型1,
列名2 数据类型2,
...
主键约束 (列名)
);
示例:
sql
CREATE TABLE users (
id INT AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100),
PRIMARY KEY (id)
);
删除表
sql
DROP TABLE 表名;
插入数据
sql
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
示例:
sql
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
查询数据
sql
SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
示例:
sql
SELECT * FROM users;
更新数据
sql
UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2, ... WHERE 条件;
示例:
sql
UPDATE users SET email = 'newemail@example.com' WHERE name = 'Alice';
删除数据
sql
DELETE FROM 表名 WHERE 条件;
示例:
sql
DELETE FROM users WHERE name = 'Alice';
高级操作
索引
索引可以提高查询效率。
sql
CREATE INDEX 索引名 ON 表名 (列名);
示例:
sql
CREATE INDEX idx_name ON users (name);
视图
视图是虚拟表,可以简化复杂查询。
sql
CREATE VIEW 视图名 AS SELECT 语句;
示例:
sql
CREATE VIEW user_emails AS SELECT name, email FROM users;
存储过程
存储过程是预编译的 SQL 代码块,提高了执行效率。
sql
CREATE PROCEDURE 存储过程名 (参数列表)
BEGIN
SQL 语句;
END;
示例:
sql
CREATE PROCEDURE GetUserEmail (IN userName VARCHAR(100), OUT userEmail VARCHAR(100))
BEGIN
SELECT email INTO userEmail FROM users WHERE name = userName;
END;
触发器
触发器是在特定事件发生时自动执行的 SQL 代码块。
sql
CREATE TRIGGER 触发器名 触发时间 触发事件 ON 表名
FOR EACH ROW
BEGIN
SQL 语句;
END;
示例:
sql
CREATE TRIGGER before_insert_user
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.created_at = NOW();
END;
用户管理
创建用户
sql
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
示例:
sql
CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
授权
sql
GRANT 权限 ON 数据库.* TO '用户名'@'主机';
示例:
sql
GRANT ALL PRIVILEGES ON mydb.* TO 'bob'@'localhost';
删除用户
sql
DROP USER '用户名'@'主机';
示例:
sql
DROP USER 'bob'@'localhost';
备份与恢复
备份
使用 mysqldump
工具备份数据库。
bash
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
示例:
bash
mysqldump -u root -p mydb > mydb_backup.sql
恢复
使用 mysql
工具恢复数据库。
bash
mysql -u 用户名 -p 数据库名 < 备份文件.sql
示例:
bash
mysql -u root -p mydb < mydb_backup.sql
常见问题
-
连接错误:Access denied for user 'username'@'host' (using password: YES):
- 检查用户名和密码是否正确。
- 检查用户是否有连接权限。
- 检查 MySQL 服务是否运行。
-
无法启动 MySQL 服务:
- 检查 MySQL 配置文件是否正确。
- 检查系统日志文件获取更多信息。
-
忘记 root 用户密码:
- 停止 MySQL 服务。
- 使用
--skip-grant-tables
参数启动 MySQL 服务。 - 连接 MySQL 并重置 root 用户密码。
- 重新启动 MySQL 服务。
以上即为 MySQL 的详细教程,希望对您有所帮助。如果您有任何问题,请随时与我联系。