趋近智
关系数据库将数据组织成表,这些表看起来很像带有行和列的电子表格。列是表中垂直的结构。每列代表表中存储项的特定属性或特征。例如,在一个存储客户信息的表中,你可能会有 CustomerID、FirstName、LastName 和 EmailAddress 等列。
数据库表中的每一列都必须指定一个特定的数据类型。这是一个基本规定,它准确地告诉数据库该列的每一行中允许存储何种数据。这为何如此重要?
DATE 类型的数据列中搜索特定日期比在可能以各种格式存储日期的通用文本列中更高效。尽管不同数据库管理系统 (DBMS) 之间确切的名称和变体可能略有差异,但大多数关系数据库都支持一组标准数据类型。以下是一些你将遇到的最常用类型:
这些用于存储数字。
101)、订单商品数量 (5) 或某人的年龄 (30)。常见整型包括:
INT (或 INTEGER):标准整数,适用于多种通用用途。SMALLINT:比 INT 占用更少存储空间,但可能值的范围较小。适用于你知道不会非常大的数字。BIGINT:占用更多存储空间,但可以容纳极大的整数。DECIMAL 或 NUMERIC): 用于对精度要求较高的数字,特别是涉及金钱的计算。你通常需要指定总位数和小数点后的位数。例如:存储 $19.99 这样的价格。使用这些类型可以避免浮点类型可能出现的小数位舍入误差。FLOAT 或 REAL): 用于近似数字数据值,常用于科学计算,在这些计算中可能不需要或无法达到小数点后绝对精确。它们可以表示非常大的数值范围,但可能会引入微小的舍入差异。这些用于存储文本数据。
VARCHAR(n): 存储可变长度的字符串,n 表示允许的最大字符数。如果你存储的文本短于 n,它只会使用实际文本所需的空间,外加少量额外开销。这对于姓名、电子邮件地址或简短描述非常常见。例如,VARCHAR(50) 可以存储一个名字。CHAR(n): 存储固定长度的字符串,n 是确切的字符数。如果你存储的文本短于 n,数据库通常会添加空格(填充)来将其补齐到长度 n。这对于长度始终相同的数据非常有用,例如两个字母的州代码(例如,CHAR(2) 用于 'CA'、'NY'、'TX')。如果存储不是主要考虑,VARCHAR 通常更具灵活性。TEXT(或类似类型,如 CLOB): 用于存储长篇文本块,如产品描述、文章或用户评论,通常超出 VARCHAR 的常见限制。这些专门设计用于存储日历日期和/或时钟时间。
DATE: 存储日期(年、月、日)。例如:2024-07-15。TIME: 存储时间(小时、分钟和秒)。例如:14:30:00。TIMESTAMP 或 DATETIME: 同时存储日期和时间信息。例如:2024-07-15 14:30:00。对于精确记录事件发生时间很有用。用于存储真或假值。不同的数据库可能会将其称为 BOOLEAN、BOOL,或者有时使用 BIT 类型,甚至是一个微小的整型,如 TINYINT(1),其中 0 代表假,1 代表真。例如:IsActive、HasShipped。
为每列选择最适合的数据类型是设计数据库表的重要组成部分。你应该选择最能匹配你打算存储的数据的类型。
DECIMAL 或 NUMERIC。VARCHAR 而非 TEXT,因为它可能更高效。DATE 或 TIMESTAMP 类型;将它们存储为文本会使比较和计算变得困难。例如,使用 DATE 类型查找特定日期之前的所有订单很简单,但如果日期存储为“2024年7月15日”这样的字符串,则会很复杂。有时,特定行中某一列的值可能未知或不适用。数据库使用一个名为 NULL 的特殊标记 (token)来表示这种缺失信息。重要的是要明白,NULL 对于数字来说与零 (0) 不同,对于文本来说也与空字符串 ('' ) 不同。它明确表示“没有值存在”。在定义列时,你通常可以指定它是否允许包含 NULL 值,或者它是否必须始终具有一个值。
Products 表结构让我们通过一个存储产品信息的简单表结构来形象地说明这一点:
| 列名 | 数据类型 | 描述 | 允许NULL值? |
|---|---|---|---|
ProductID |
INT |
产品的唯一标识符(可能是主键) | 否 |
ProductName |
VARCHAR(100) |
产品名称 | 否 |
Description |
TEXT |
产品的详细描述 | 是 |
Price |
DECIMAL(10,2) |
销售价格(例如,最高99,999,999.99) | 否 |
QuantityOnHand |
INT |
当前库存单位数量 | 否 |
DateAdded |
DATE |
产品添加到目录的日期 | 是 |
IsDiscontinued |
BOOLEAN |
如果产品不再销售则为真 | 否 |
Products 表的示例定义,展示了列名、它们指定的数据类型、简要描述以及是否允许 NULL 值。
在此示例中,每列都具有经过仔细选择的数据类型。ProductID 和 QuantityOnHand 是整数 (INT)。ProductName 使用 VARCHAR(100),假设名称不会超过 100 个字符。Price 使用 DECIMAL(10, 2) 来准确存储货币。Description 使用 TEXT 来存储可能较长的描述。DateAdded 使用 DATE,IsDiscontinued 使用 BOOLEAN。另外请注意,一些列(例如 ProductID、ProductName 等)被定义为不允许 NULL 值,以确保每个产品记录中始终存在一些必要的信息。
了解列和数据类型对于创建结构良好且可靠的关系数据库非常重要。它们强制执行一致性,并使数据库能够高效地存储和检索信息。随着你的学习,你将看到这些基本构成部分如何支持更复杂的数据库操作和设计。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•