一、MySQL概述
2026/8/6 6:55:21 网站建设 项目流程

一、数据库知识总览


二、数据库基本概念

1、数据库(Database)

数据库是存储和管理数据的容器,由一组相关的表组成。一个 MySQL 实例可以管理多个数据库。

2、数据库管理系统(DBMS)

数据库管理系统是一种操纵和管理数据库的大型软件。它位于用户(或应用程序)与操作系统之间,提供了一套完整的工具来创建、使用和维护数据库。


三、核心组件与概念

1、表(Table)

表是数据的结构化存储形式,由行(记录)和列(字段)组成,类似于 Excel 表格。每个表具有唯一的名称,并定义列的数据类型和约束。

2、SQL(Structured Query Language)

SQL 是与 MySQL 交互的标准语言,用于查询、插入、更新和删除数据。主要分为:

  • DDL(数据定义语言):定义数据库结构,如 CREATE、ALTER、DROP。
  • DML(数据操作语言):操作数据,如 SELECT、INSERT、UPDATE、DELETE。
  • DCL(数据控制语言):控制访问权限,如 GRANT、REVOKE。

3、索引(Index)

索引是提高查询效率的数据结构。常见类型包括:

索引类型特点用途
主键索引唯一标识每行记录,不允许 NULL 值确保数据行的唯一性,是表的主键
唯一索引确保列值唯一,允许 NULL 值防止数据重复,如用户邮箱、身份证号
普通索引加速查询,允许重复值和 NULL 值提高非唯一列的查询速度

4、事务(Transaction)

事务是一组操作,遵循 ACID 原则:

  • 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部回滚。
  • 一致性(Consistency):事务执行前后,数据库从一个一致状态转换到另一个一致状态。
  • 隔离性(Isolation):并发执行的事务互不干扰。
  • 持久性(Durability):事务提交后,对数据的修改是永久性的。

5、存储引擎(Storage Engine)

MySQL 支持多种存储引擎,负责数据的存储、处理和检索。常见的有:

存储引擎特点适用场景
InnoDB支持事务、行级锁和外键,提供高可靠性需要事务支持、数据一致性要求高的应用(如电商、金融)
MyISAM不支持事务,但插入和查询速度快,表级锁读密集型、对事务要求不高的场景(如日志分析、数据仓库)
MEMORY数据存储在内存中,速度极快,重启后数据丢失临时数据存储、高速缓存

6、视图(View)

视图是基于 SQL 查询的虚拟表,可用于简化复杂查询或隐藏敏感数据。

-- 示例:创建一个视图,隐藏员工的薪资信息CREATEVIEWemployee_publicASSELECTid,name,department,hire_dateFROMemployees;

7、触发器(Trigger)

触发器是在特定事件(如 INSERT、UPDATE、DELETE)发生时自动执行的存储过程。

-- 示例:在插入新订单后,自动更新库存CREATETRIGGERupdate_inventoryAFTERINSERTONordersFOR EACH ROWBEGINUPDATEproductsSETstock=stock-NEW.quantityWHEREid=NEW.product_id;END;

8、存储过程(Stored Procedure)

存储过程是预编译的 SQL 语句集合,可重复调用,能够减少网络传输并提高应用程序的性能和可维护性。

-- 示例:一个简单的存储过程,根据用户ID获取订单总数DELIMITER//CREATEPROCEDUREGetOrderCount(INuserIdINT,OUTorderCountINT)BEGINSELECTCOUNT(*)INTOorderCountFROMordersWHEREuser_id=userId;END//DELIMITER;

9、外键(Foreign Key)

外键用于建立表与表之间的关联,确保数据的引用完整性。

-- 示例:在 orders 表中创建外键,关联 users 表ALTERTABLEordersADDCONSTRAINTfk_userFOREIGNKEY(user_id)REFERENCESusers(id)ONDELETECASCADE;

四、数据库类型

1、关系型数据库

基于关系模型,以二维表(行和列)的形式存储数据,支持标准的 SQL 语言,强调数据的一致性和完整性。

代表产品主要特点
MySQL开源、流行、性能优异,适用于 Web 应用
Oracle功能强大、稳定性高,常用于大型企业级应用
PostgreSQL开源、支持高级特性(如 JSON、GIS),扩展性强
SQL Server微软出品,与 .NET 生态集成紧密

2、非关系型数据库

不依赖固定的表结构,采用灵活的数据模型,适用于处理大规模、高并发和半结构化/非结构化数据。它进一步细分为:

  • 键值(Key-Value)数据库:以键值对形式存储,读写速度极快,常用于缓存。代表:Redis。
  • 文档数据库:以文档(如 JSON 格式)存储,适合存储不规则数据。代表:MongoDB。
  • 图数据库:以节点和边的形式存储,擅长处理复杂的关系网络。代表:Neo4j。
  • 列族数据库:以列族方式组织数据,适合海量数据的分布式存储。代表:HBase、Cassandra。

五、MySQL数据类型

1、数值类型 (Numeric Types)

数值类型用于存储数字数据,主要分为整数、浮点数和定点数。

整数类型

用于存储没有小数部分的数字。随着存储空间的增加,可表示的数值范围也随之扩大。

类型存储空间有符号范围无符号范围描述
TINYINT1 字节-128 到 1270 到 255极小整数
SMALLINT2 字节-32,768 到 32,7670 到 65,535小整数
MEDIUMINT3 字节-8,388,608 到 8,388,6070 到 16,777,215中等大小整数
INT / INTEGER4 字节-2,147,483,648 到 2,147,483,6470 到 4,294,967,295标准整数(最常用)
BIGINT8 字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070 到 18,446,744,073,709,551,615大整数,用于存储极大的数值(如全局唯一ID)
浮点数类型

用于存储带有小数部分的近似数值,适合科学计算等对绝对精度要求不那么极端的场景。

类型存储空间描述
FLOAT4 字节单精度浮点数,精度约 7 位有效数字
DOUBLE8 字节双精度浮点数,精度约 15 位有效数字
定点数类型

用于存储精确的小数值,底层以字符串形式存储,不会出现精度丢失。

类型语法描述
DECIMALDECIMAL(M, D)精确数值,M 是总位数(精度),D 是小数位数(标度)。常用于金融、货币等对精度要求极高的字段。
-- 示例:创建表时使用不同的数值类型CREATETABLEproducts(idINTUNSIGNEDAUTO_INCREMENTPRIMARYKEY,-- 标准整数,无符号自增主键priceDECIMAL(10,2),-- 精确价格,总10位,小数2位weightFLOAT,-- 近似重量stockSMALLINTUNSIGNED-- 无符号小整数表示库存);

2、字符串类型 (String Types)

字符串类型用于存储文本数据,根据长度是否固定和存储方式的不同进行分类。

定长字符串
  • CHAR(M):固定长度字符串。无论实际内容多长,都会占用 M 个字符的空间。优点是检索速度快,适合存储长度固定的数据(如身份证号、MD5密码、性别代码)。
变长字符串
  • VARCHAR(M):可变长度字符串。只占用实际字符长度加 1 或 2 个字节的额外空间。节省存储空间,是日常开发中最常用的字符串类型(如用户名、邮箱、地址)。
大文本类型
  • TEXT:用于存储长文本(最大 65,535 字节)。适合存储文章正文、长篇评论等。
  • LONGTEXT:用于存储超大文本(最大 4GB)。
二进制字符串
  • BLOB:用于存储二进制大对象,如图片、音频、视频文件等。
类型最大长度描述
CHAR(M)M 字符,M 范围 0-255定长字符串,不足部分用空格填充
VARCHAR(M)M 字符,M 范围 0-65,535变长字符串,按实际长度存储
TEXT65,535 字节长文本数据
LONGTEXT4 GB超大文本数据
BLOB65,535 字节二进制大对象
-- 示例:创建表时使用不同的字符串类型CREATETABLEusers(idINTPRIMARYKEY,usernameVARCHAR(50)NOTNULL,-- 变长用户名id_cardCHAR(18),-- 定长身份证号bioTEXT,-- 长文本个人简介avatarBLOB-- 二进制存储头像);

3、日期和时间类型 (Date and Time Types)

用于记录时间相关的数据。

日期类型
  • DATE:仅表示日期,格式为 YYYY-MM-DD。
时间类型
  • TIME:仅表示时间,格式为 HH:MM:SS。
日期时间类型
  • DATETIME:表示日期和时间,格式为 YYYY-MM-DD HH:MM:SS。占用 8 字节,与时区无关。
  • TIMESTAMP:表示时间戳,格式同 DATETIME,但占用 4 字节。其值会根据时区进行转换,且默认值通常与系统当前时间绑定,适合记录数据的创建或更新时间。
年份类型
  • YEAR:仅表示年份,格式为 YYYY。
类型格式范围描述
DATEYYYY-MM-DD‘1000-01-01’ 到 ‘9999-12-31’日期
TIMEHH:MM:SS‘-838:59:59’ 到 ‘838:59:59’时间
DATETIMEYYYY-MM-DD HH:MM:SS‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’日期和时间,与时区无关
TIMESTAMPYYYY-MM-DD HH:MM:SS‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC时间戳,受时区影响
YEARYYYY1901 到 2155年份
-- 示例:创建表时使用日期时间类型CREATETABLEorders(order_idINTPRIMARYKEY,order_dateDATE,-- 订单日期delivery_timeTIME,-- 预计送达时间created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,-- 创建时间(自动记录)updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,-- 更新时间(自动更新)warranty_yearYEAR-- 保修年份);

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询