MySQL 教程

MySQL 教程

目录

  1. 简介
  2. [安装 MySQL](#安装 MySQL)
  3. [连接 MySQL](#连接 MySQL)
  4. 基础操作
  5. 表的操作
  6. 高级操作
  7. 用户管理
  8. 备份与恢复
  9. 常见问题

简介

MySQL 是一种关系型数据库管理系统,由瑞典公司 MySQL AB 开发,目前属于 Oracle 公司。MySQL 是世界上最流行的开放源码数据库之一,广泛应用于各种应用场景中,尤其是 Web 应用。

安装 MySQL

Windows

  1. 下载 MySQL 安装包:MySQL 下载页面
  2. 运行安装包,选择"Custom"安装类型。
  3. 选择需要安装的 MySQL 产品,通常包括 MySQL Server 和 MySQL Workbench。
  4. 按照安装向导完成安装,设置 root 用户密码。
  5. 安装完成后,启动 MySQL Server,并使用 MySQL Workbench 或命令行客户端连接。

macOS

  1. 使用 Homebrew 安装 MySQL:

    bash 复制代码
    brew install mysql
  2. 安装完成后,启动 MySQL 服务:

    bash 复制代码
    brew services start mysql
  3. 设置 root 用户密码:

    bash 复制代码
    mysql_secure_installation
  4. 使用命令行客户端连接 MySQL:

    bash 复制代码
    mysql -u root -p

Linux

  1. 使用包管理器安装 MySQL(以 Ubuntu 为例):

    bash 复制代码
    sudo apt update
    sudo apt install mysql-server
  2. 安装完成后,启动 MySQL 服务:

    bash 复制代码
    sudo systemctl start mysql
  3. 设置 root 用户密码:

    bash 复制代码
    sudo mysql_secure_installation
  4. 使用命令行客户端连接 MySQL:

    bash 复制代码
    mysql -u root -p

连接 MySQL

命令行客户端

  1. 打开终端或命令提示符。

  2. 运行以下命令连接 MySQL:

    bash 复制代码
    mysql -u 用户名 -p
  3. 输入密码后,即可进入 MySQL 命令行模式。

图形化工具

  1. MySQL Workbench:MySQL 官方提供的图形化管理工具。
  2. phpMyAdmin:基于 Web 的 MySQL 管理工具。
  3. 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

常见问题

  1. 连接错误:Access denied for user 'username'@'host' (using password: YES)

    • 检查用户名和密码是否正确。
    • 检查用户是否有连接权限。
    • 检查 MySQL 服务是否运行。
  2. 无法启动 MySQL 服务

    • 检查 MySQL 配置文件是否正确。
    • 检查系统日志文件获取更多信息。
  3. 忘记 root 用户密码

    • 停止 MySQL 服务。
    • 使用 --skip-grant-tables 参数启动 MySQL 服务。
    • 连接 MySQL 并重置 root 用户密码。
    • 重新启动 MySQL 服务。

以上即为 MySQL 的详细教程,希望对您有所帮助。如果您有任何问题,请随时与我联系。

相关推荐
杨江1 小时前
ThingsBoard安装测试
服务器·数据库
mit6.8241 小时前
[Redis#4] string | 常用命令 | + mysql use:cache | session
数据库·redis·后端·缓存
Beekeeper&&P...2 小时前
map和redis关系
数据库·redis·缓存
jianqimingtian2 小时前
如何使用 Matlab 制作 GrabCAD 体素打印切片
数据结构·数据库
真真假假々2 小时前
MySQL和ADSDB
数据库·mysql
秦老师Q2 小时前
MySQL第二章 sql约束与sql数据类型
数据库·sql·mysql
不是二师兄的八戒2 小时前
mysql in查询大数据量业务无法避免情境下优化
数据库·mysql
苹果醋32 小时前
vue3 在哪些方便做了性能提升?
java·运维·spring boot·mysql·nginx
----云烟----3 小时前
Qt获取文件夹下的文件个数(过滤和不过滤的区别)
数据库·qt
Dotrust东信创智3 小时前
浅谈丨功能安全测试,汽车的守护者
运维·服务器·数据库