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
 
相关推荐
木风小助理8 小时前
PostgreSQL基础知识——DDL深度解析
数据库·postgresql
hanqunfeng9 小时前
(四十四)Redis8 新增的数据类型 -- Vector Set
数据库·redis·缓存
梦梦代码精10 小时前
BuildingAI vs Dify vs 扣子:三大开源智能体平台架构风格对比
开发语言·前端·数据库·后端·架构·开源·推荐算法
纪莫11 小时前
技术面:MySQL篇(InnoDB的锁机制)
java·数据库·java面试⑧股
Filotimo_11 小时前
在java开发中,cron表达式概念
java·开发语言·数据库
DBA小马哥12 小时前
从MongoDB迁移到金仓数据库:数据模型与业务连续性难题的保姆级指南
数据库·mongodb·dba
QZ1665609515913 小时前
低误差率、高性能、符合审计要求的金融数据库审计和监测最佳实践指南
数据库·金融
愚公移码13 小时前
蓝凌EKP产品:主文档权限机制浅析
java·前端·数据库·蓝凌
此生只爱蛋13 小时前
【Redis】持久化
数据库·redis
burning_maple14 小时前
redis笔记
数据库·redis·笔记