SQL 教程

SQL 教程 SQL 简介 SQL 语法 SQL Select SQL Select Distinct SQL Where SQL And, Or, Not SQL Order By SQL Insert Into SQL Null Values SQL Update SQL Delete SQL Select Top SQL Min 和 Max SQL Count, Avg, Sum SQL Like SQL 通配符 SQL In SQL Between SQL 别名 SQL 联接 SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL 自联接 SQL Union SQL Group By SQL Having SQL Exists SQL Any, All SQL Select Into SQL Insert Into Select SQL Case SQL Null 函数 SQL 存储过程 SQL 注释 SQL 运算符

SQL 数据库

SQL 创建数据库 SQL 删除数据库 SQL 数据库备份 SQL Create Table SQL Drop Table SQL Alter Table SQL 约束 SQL Not Null SQL Unique SQL Primary Key SQL Foreign Key SQL Check SQL Default SQL Index SQL 自动增量 SQL 日期 SQL 视图 SQL 注入 SQL 托管 SQL 数据类型

SQL 参考手册

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

SQL 实例

SQL 实例 SQL 测验 SQL 练习


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

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


SQL 通用数据类型

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

SQL 开发人员必须在创建 SQL 表时决定表中的每个列将要存储的数据的类型。数据类型是一个标签,是便于 SQL 了解每个列期望存储什么类型的数据的指南,它也标识了 SQL 如何与存储的数据进行交互。

注释: 数据类型在不同的数据库中可能有不同的名称。即使名称相同,大小和其他细节也可能不同!请始终检查数据库文档!!


MySQL 数据类型 (Version 8.0)

在 MySQL 中,有三种主要的类型:String(文本字符串)、Number(数字)和 Date/Time(日期/时间)类型。

String 类型:

数据类型 描述
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) 保存最大长度为 65535 字节的字符串
BLOB(size) 用于 BLOB (二进制大对象)。最多可容纳 65535 字节的数据
MEDIUMTEXT 保存最大长度为 16777215个字符的字符串
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 个值

Numeric 类型:

数据类型 描述
BIT(size) 位值类型。每个值的位数在 size 中指定。 size 参数可以保存从 1 到 64 的值。size 的默认值为 1。
TINYINT(size) 一个非常小的整数。有符号范围是-128 到 127。无符号范围是 0 到 255。size 参数指定最大显示宽度(即 255)
BOOL 零被认为是假,非零值被认为是真。
BOOLEAN Equal to 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) Equal to 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。< em>d 为 0。
DEC(size, d) 等于 DECIMAL(size,d)

注释: 这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。

Date 类型:

数据类型 描述
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) A time。格式:hh:mm:ss。支持的范围是从 '-838:59:59' 到 '838:59:59'
YEAR 四位数格式的年份。允许采用四位数格式的值:1901 到 2155 和 0000。
MySQL 8.0 不支持两位数格式的年份。


SQL Server 数据类型

String 类型:

数据类型 描述 Max size 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  
image 可变宽度二进制字符串 2GB  

Numeric 类型:

数据类型 描述 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 字节

Date 类型:

数据类型 描述 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 存储每次创建或修改行时都会更新的唯一编号。时间戳值基于内部时钟,并不对应于实时。每个表可能只有一个时间戳变量  

其他数据类型:

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

Microsoft Access 数据类型

数据类型 描述 Storage
Text 用于文本或文本和数字的组合。最多 255 个字符  
Memo 备忘录用于大量文本。最多可存储 65,536 个字符。 注释: 您无法对备注字段进行排序。但是,它们是可搜索的  
Byte 允许从 0 到 255 的整数 1 字节
Integer 允许 -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 逻辑字段可以显示为是/否、真/假或开/关。在代码中,使用常量 True 和 False(相当于 -1 和 0)。 注释:是/否字段中不允许有空值 1 位
Ole Object 可以存储图片、音频、视频或其他 BLOB(Binary Large OBjects) 高达 1GB
Hyperlink 包含指向其他文件的链接,包括网页  
Lookup Wizard 让您输入一个选项列表,然后可以从下拉列表中进行选择 4 字节