mysql基本结构及操作

MySQL 基本结构

MySQL 是一种关系型数据库管理系统(RDBMS),其核心结构由多个层次组成,包括逻辑结构和物理结构。以下是 MySQL 的基本组成部分:

数据库(Database)

数据库是 MySQL 的最高层级,用于存储和管理一组相关的数据表。一个 MySQL 实例可以包含多个数据库,每个数据库独立存储。

表(Table)

表是数据库中的核心组件,用于存储结构化数据。表由行(记录)和列(字段)组成,每个列定义了数据类型和约束条件(如主键、外键等)。

列(Column)

列是表的字段,定义了数据的类型和属性。常见的列数据类型包括:

  • 整数类型:INTTINYINTBIGINT
  • 字符串类型:VARCHARCHARTEXT
  • 日期时间类型:DATEDATETIMETIMESTAMP
  • 浮点数类型:FLOATDOUBLEDECIMAL

行(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
 
相关推荐
todoitbo2 小时前
时序数据库选型实战指南:国产时序数据库Apache IoTDB的技术对比与实践
数据库·apache·时序数据库·iotdb·国产
赵渝强老师2 小时前
【赵渝强老师】TiDB的备份恢复策略
数据库·mysql·oracle·tidb
Ditglu.2 小时前
数据库运维(DBA)职业能力提升知识库
运维·数据库·dba
黛琳ghz2 小时前
机密计算与安全容器:openEuler安全生态深度测评
服务器·数据库·安全·计算机·操作系统·openeuler
小清兔3 小时前
一个unity中URP的环境下旋转天空盒的脚本(RotationSky)
开发语言·数据库·学习·程序人生·unity·c#·游戏引擎
技术爬爬虾3 小时前
为什么React的漏洞能攻破服务器?Next.js与RSC入门基础
前端·数据库·安全
Kaede63 小时前
如何保护MySQL中的重要数据
数据库·mysql
小股虫3 小时前
Redis实现轻量级消息队列:实操手册与项目应用指南
数据库·redis
lllsure3 小时前
【MySQL】数据库备份与恢复
数据库·mysql