菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SQL 教程

SQL HOME SQL Intro SQL Syntax SQL Select SQL Select Distinct SQL Where SQL Order By SQL And SQL Or SQL Not SQL Insert Into SQL Null Values SQL Update SQL Delete SQL Select Top SQL Aggregate Functions SQL Min and Max SQL Count SQL Sum SQL Avg SQL Like SQL Wildcards SQL In SQL Between SQL Aliases SQL Joins SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Self Join SQL Union SQL Group By SQL Having SQL Exists SQL Any, All SQL Select Into SQL Insert Into Select SQL Case SQL Null Functions SQL Stored Procedures SQL Comments SQL Operators

SQL 数据库

SQL Create DB SQL Drop DB SQL Backup DB SQL Create Table SQL Drop Table SQL Alter Table SQL Constraints SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key SQL Check SQL Default SQL Index SQL Auto Increment SQL Dates SQL Views SQL Injection SQL Hosting SQL Data Types

SQL 参考

SQL 关键字 MySQL 函数 SQL Server 函数 MS Access 函数 SQL 快速参考

SQL 示例

SQL 示例 SQL 编辑器 SQL 测验 SQL 练习 SQL Server SQL Bootcamp SQL 证书

SQL MySQL, SQL Server 和 MS Access 的数据类型


列的数据类型定义了该列可以包含的值:整数、字符、货币、日期和时间、二进制等。


SQL 数据类型

数据库表中的每一列都必须有一个名称和一个数据类型。

SQL 开发人员在创建表时必须决定每列要存储什么类型的数据。数据类型是 SQL 理解每列中预期数据类型的指南,它还确定了 SQL 如何与存储的数据进行交互。

注意:不同数据库中的数据类型名称可能不同。即使名称相同,大小和其他细节也可能不同!务必查阅文档!


MySQL 数据类型 (版本 8.0)

在 MySQL 中,主要有三种数据类型:字符串、数值以及日期和时间。

字符串数据类型

数据类型 描述
CHAR(size) 固定长度字符串(可包含字母、数字和特殊字符)。size 参数指定了字符列的长度,范围从 0 到 255。默认值为 1。
VARCHAR(size) 可变长度字符串(可包含字母、数字和特殊字符)。size 参数指定了最大字符串长度(字符数),范围从 0 到 65535。
BINARY(size) 与 CHAR() 相同,但存储二进制字节字符串。size 参数指定了字节列的长度。默认值为 1。
VARBINARY(size) 与 VARCHAR() 相同,但存储二进制字节字符串。size 参数指定了最大字节列的长度。
TINYBLOB 用于 BLOB(二进制大对象)。最大长度:255 字节。
TINYTEXT 存储最大长度为 255 个字符的字符串。
TEXT(size) 存储最大长度为 65,535 字节的字符串。
BLOB(size) 用于 BLOB(二进制大对象)。存储最多 65,535 字节的数据。
MEDIUMTEXT 存储最大长度为 16,777,215 个字符的字符串。
MEDIUMBLOB 用于 BLOB(二进制大对象)。存储最多 16,777,215 字节的数据。
LONGTEXT 存储最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB 用于 BLOB(二进制大对象)。存储最多 4,294,967,295 字节的数据。
ENUM(val1, val2, val3, ...) 一个字符串对象,只能包含一个值,该值从可能的列表中选择。您可以在 ENUM 列表中最多列出 65535 个值。如果插入的值不在列表中,则会插入一个空值。值将按您输入的顺序排序。
SET(val1, val2, val3, ...) 一个字符串对象,可以包含 0 个或多个值,这些值从可能的列表中选择。您可以在 SET 列表中最多列出 64 个值。

数值数据类型

数据类型 描述
BIT(size) 位值类型。每个值的位数在size中指定。size参数可以包含 1 到 64 的值。size的默认值是 1。
TINYINT(size) 非常小的整数。有符号范围是 -128 到 127。无符号范围是 0 到 255。size参数指定了最大显示宽度(即 255)。
BOOL 零被视为假,非零值被视为真。
BOOLEAN 等于 BOOL。
SMALLINT(size) 小的整数。有符号范围是 -32768 到 32767。无符号范围是 0 到 65535。size参数指定了最大显示宽度(即 255)。
MEDIUMINT(size) 中等整数。有符号范围是 -8388608 到 8388607。无符号范围是 0 到 16777215。size参数指定了最大显示宽度(即 255)。
INT(size) 中等整数。有符号范围是 -2147483648 到 2147483647。无符号范围是 0 到 4294967295。size参数指定了最大显示宽度(即 255)。
INTEGER(size) 等于 INT(size)。
BIGINT(size) 大的整数。有符号范围是 -9223372036854775808 到 9223372036854775807。无符号范围是 0 到 18446744073709551615。size参数指定了最大显示宽度(即 255)。
FLOAT(size, d) 浮点数。总位数在size中指定。小数点后的位数在d参数中指定。此语法在 MySQL 8.0.17 中已弃用,将在未来的 MySQL 版本中移除。
FLOAT(p) 浮点数。MySQL 使用p值来确定是将 FLOAT 还是 DOUBLE 用于结果数据类型。如果p的范围是 0 到 24,则数据类型为 FLOAT()。如果p的范围是 25 到 53,则数据类型为 DOUBLE()。
DOUBLE(size, d) 正常大小的浮点数。总位数在size中指定。小数点后的位数在d参数中指定。
DOUBLE PRECISION(size, d)  
DECIMAL(size, d) 精确的定点数。总位数在size中指定。小数点后的位数在d参数中指定。size的最大值为 65。d的最大值为 30。size的默认值为 10。d的默认值为 0。
DEC(size, d) 等于 DECIMAL(size,d)。

注意:所有数值数据类型都可以有一个额外的选项:UNSIGNED 或 ZEROFILL。如果您添加 UNSIGNED 选项,MySQL 会禁止该列出现负值。如果您添加 ZEROFILL 选项,MySQL 会自动为该列添加 UNSIGNED 属性。

日期和时间数据类型

数据类型 描述
DATE 日期。格式:YYYY-MM-DD。支持的范围从 '1000-01-01' 到 '9999-12-31'。
DATETIME(fsp) 日期和时间组合。格式:YYYY-MM-DD hh:mm:ss。支持的范围从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'。在列定义中添加 DEFAULT 和 ON UPDATE 以实现自动初始化和更新为当前日期和时间。
TIMESTAMP(fsp) 时间戳。TIMESTAMP 值存储为自 Unix 纪元 ('1970-01-01 00:00:00' UTC) 以来的秒数。格式:YYYY-MM-DD hh:mm:ss。支持的范围从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC。可以通过在列定义中使用 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 来指定自动初始化和更新为当前日期和时间。
TIME(fsp) 时间。格式:hh:mm:ss。支持的范围从 '-838:59:59' 到 '838:59:59'。
YEAR 以四位数字格式表示的年份。四位数字格式允许的值:1901 到 2155,以及 0000。
MySQL 8.0 不支持两位数字格式的年份。


SQL Server 数据类型

字符串数据类型

数据类型 描述 最大尺寸 Storage
char(n) 固定宽度字符字符串。 8,000 个字符 定义宽度
varchar(n) 可变宽度字符字符串。 8,000 个字符 2 字节 + 字符数
varchar(max) 可变宽度字符字符串。 1,073,741,824 个字符 2 字节 + 字符数
text 可变宽度字符字符串。 2GB 文本数据 4 字节 + 字符数
nchar 固定宽度 Unicode 字符串。 4,000 个字符 定义宽度 x 2
nvarchar 可变宽度 Unicode 字符串。 4,000 个字符  
nvarchar(max) 可变宽度 Unicode 字符串。 536,870,912 个字符  
ntext 可变宽度 Unicode 字符串。 2GB 文本数据  
binary(n) 固定宽度二进制字符串。 8,000 字节  
varbinary 可变宽度二进制字符串。 8,000 字节  
varbinary(max) 可变宽度二进制字符串。 2GB  
图片 可变宽度二进制字符串。 2GB  

数值数据类型

数据类型 描述 Storage
bit 整数,可以是 0、1 或 NULL。  
tinyint 允许的整数范围是 0 到 255。 1 字节
smallint 允许的整数范围是 -32,768 到 32,767。 2 字节
int 允许的整数范围是 -2,147,483,648 到 2,147,483,647。 4 字节
bigint 允许的整数范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。 8 字节
decimal(p,s) 固定精度和标度数字。

允许的数字范围是 -10^38 +1 到 10^38 –1。

p 参数表示可以存储的总位数(包括小数点左边和右边)。p 必须是 1 到 38 之间的一个值。默认为 18。

s 参数表示小数点右边可以存储的最大位数。s 必须是 0 到 p 之间的一个值。默认值为 0。

5-17 字节
numeric(p,s) 固定精度和标度数字。

允许的数字范围是 -10^38 +1 到 10^38 –1。

p 参数表示可以存储的总位数(包括小数点左边和右边)。p 必须是 1 到 38 之间的一个值。默认为 18。

s 参数表示小数点右边可以存储的最大位数。s 必须是 0 到 p 之间的一个值。默认值为 0。

5-17 字节
smallmoney 货币数据,范围从 -214,748.3648 到 214,748.3647。 4 字节
money 货币数据,范围从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。 8 字节
float(n) 浮点精度数字数据,范围从 -1.79E + 308 到 1.79E + 308。

n 参数表示字段应持有 4 或 8 字节。float(24) 持有 4 字节字段,float(53) 持有 8 字节字段。n 的默认值为 53。

4 或 8 字节
real 浮点精度数字数据,范围从 -3.40E + 38 到 3.40E + 38。 4 字节

日期和时间数据类型

数据类型 描述 Storage
datetime 从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 字节
datetime2 从 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 字节
smalldatetime 从 1900 年 1 月 1 日到 2079 年 6 月 6 日,精度为 1 分钟。 4 字节
date 仅存储日期。范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日。 3 字节
time 仅存储时间,精度为 100 纳秒。 3-5 字节
datetimeoffset 与 datetime2 相同,但增加了时区偏移量。 8-10 字节
timestamp 存储一个唯一数字,每次创建或修改行时都会更新。timestamp 值基于内部时钟,与实际时间无关。每个表只能有一个 timestamp 变量。  

其他数据类型

数据类型 描述
sql_variant 存储最多 8,000 字节的各种数据类型,除了 text、ntext 和 timestamp。
uniqueidentifier 存储全局唯一标识符 (GUID)。
xml 存储 XML 格式的数据。最大 2GB。
cursor 存储用于数据库操作的游标引用。
table 存储用于后续处理的结果集。

MS Access 数据类型

数据类型 描述 Storage
文本 用于文本或文本与数字的组合。最多 255 个字符。  
Memo Memo 用于存储大量文本。最多存储 65,536 个字符。注意:您不能对 memo 字段进行排序。但是,它们是可搜索的。  
Byte 允许的整数范围是 0 到 255。 1 字节
整数 允许的整数范围是 -32,768 到 32,767。 2 字节
Long 允许的整数范围是 -2,147,483,648 到 2,147,483,647。 4 字节
Single 单精度浮点数。可以处理大多数小数。 4 字节
Double 双精度浮点数。可以处理大多数小数。 8 字节
Currency 用于货币。可以存储最多 15 位整数美元,外加 4 位小数。提示:您可以选择使用哪种货币。 8 字节
AutoNumber AutoNumber 字段会自动为每条记录分配一个唯一的数字,通常从 1 开始。 4 字节
Date/Time 用于日期和时间。 8 字节
Yes/No 逻辑字段可以显示为 Yes/No、True/False 或 On/Off。在代码中,使用常量 True 和 False(分别等于 -1 和 0)。注意:Yes/No 字段不允许 NULL 值。 1 位
Ole Object 可以存储图片、音频、视频或其他 BLOB(二进制大对象)。 最多 1GB
Hyperlink 包含指向其他文件(包括网页)的链接。  
Lookup Wizard 允许您输入选项列表,然后可以从下拉列表中选择。 4 字节

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持