MySQL 基本结构
MySQL 是一种关系型数据库管理系统(RDBMS),其核心结构由多个层次组成,包括逻辑结构和物理结构。以下是 MySQL 的基本组成部分:
数据库(Database)
数据库是 MySQL 的最高层级,用于存储和管理一组相关的数据表。一个 MySQL 实例可以包含多个数据库,每个数据库独立存储。
表(Table)
表是数据库中的核心组件,用于存储结构化数据。表由行(记录)和列(字段)组成,每个列定义了数据类型和约束条件(如主键、外键等)。
列(Column)
列是表的字段,定义了数据的类型和属性。常见的列数据类型包括:
- 整数类型:
INT、TINYINT、BIGINT - 字符串类型:
VARCHAR、CHAR、TEXT - 日期时间类型:
DATE、DATETIME、TIMESTAMP - 浮点数类型:
FLOAT、DOUBLE、DECIMAL
行(Row)
行是表中的一条记录,包含多个列的值。每一行通常通过主键(Primary Key)唯一标识。
索引(Index)
索引用于加速数据检索,类似于书籍的目录。常见的索引类型包括:
- 主键索引(Primary Key)
- 唯一索引(Unique Index)
- 普通索引(Index)
- 全文索引(Fulltext Index)
视图(View)
视图是基于一个或多个表的虚拟表,不存储实际数据,仅保存查询定义。视图可以简化复杂查询或限制数据访问权限。
存储过程和函数(Stored Procedure & Function)
存储过程和函数是一组预编译的 SQL 语句,可以在数据库中重复调用。存储过程支持参数传递和流程控制(如条件判断、循环)。
触发器(Trigger)
触发器是与表关联的特殊存储过程,在特定事件(如插入、更新、删除)发生时自动执行。
用户和权限(User & Privilege)
MySQL 通过用户和权限系统管理数据库访问。每个用户可以分配特定的权限(如 SELECT、INSERT、UPDATE、DELETE)。
物理文件结构
MySQL 的数据存储在磁盘上的文件中,主要包括:
- 表结构文件:
.frm(MySQL 8.0 后不再使用) - 数据文件:
.ibd(InnoDB 引擎)、.MYD(MyISAM 引擎) - 索引文件:
.MYI(MyISAM 引擎) - 日志文件:如二进制日志(binlog)、错误日志(error log)
存储引擎
MySQL 支持多种存储引擎,不同引擎具有不同的特性和优化方向:
- InnoDB:支持事务、行级锁、外键,适用于高并发场景。
- MyISAM:不支持事务,表级锁,适用于读密集型场景。
- Memory:数据存储在内存中,速度快但重启后数据丢失。
连接与退出MySQL
连接MySQL服务器:
bash
mysql -u username -p
输入密码后即可登录。
退出MySQL:
sql
exit;
sql
quit;
数据库操作
查看所有数据库:
sql
SHOW DATABASES;
创建数据库:
sql
CREATE DATABASE dbname;
删除数据库:
sql
DROP DATABASE dbname;
选择数据库:
sql
USE dbname;
表操作
查看当前数据库中的表:
sql
SHOW TABLES;
创建表:
sql
CREATE TABLE tablename (
column1 datatype constraints,
column2 datatype constraints,
...
);
查看表结构:
sql
DESCRIBE tablename;
sql
SHOW COLUMNS FROM tablename;
删除表:
sql
DROP TABLE tablename;
数据操作
插入数据:
sql
INSERT INTO tablename (column1, column2, ...)
VALUES (value1, value2, ...);
查询数据:
sql
SELECT column1, column2, ... FROM tablename WHERE condition;
更新数据:
sql
UPDATE tablename
SET column1 = value1, column2 = value2, ...
WHERE condition;
删除数据:
sql
DELETE FROM tablename WHERE condition;
索引操作
创建索引:
sql
CREATE INDEX indexname ON tablename (column1, column2, ...);
删除索引:
sql
DROP INDEX indexname ON tablename;
用户与权限管理
创建用户:
sql
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
授予权限:
sql
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host';
撤销权限:
sql
REVOKE ALL PRIVILEGES ON dbname.* FROM 'username'@'host';
删除用户:
sql
DROP USER 'username'@'host';
事务操作
开始事务:
sql
START TRANSACTION;
提交事务:
sql
COMMIT;
回滚事务:
sql
ROLLBACK;
备份与恢复
备份数据库:
bash
mysqldump -u username -p dbname > backup.sql
恢复数据库:
bash
mysql -u username -p dbname < backup.sql