PostgreSQL
除了postgresql内置的变量类型外,常用的还有 record ,表示一条记录。
数字类型
子类型 | 标准名 | 描述 |
small integer | smallint | 2字节的符号型整数,可以存储-2^15到2^15-1的数字 |
integer | int | 4字节的符号型整数,可以存储-2^31到2^31-1的数字 |
big integer | bigint | 8 字节大范围的整数-2^63 到 2^63-1 |
float | float(n) | 支持最少精度为n,存储为最多8字节的浮点数。 |
float8 | real | 8字节双精度不准确的浮点数字 |
numeric decimal | numeric(p,s) decimal(p,s) | 不像float,这始终是一个确切的数字,但工作效率比普通浮点数字低。末尾四舍五入,据太大会插入失败 |
double precision | double | 8 字节变精度,不精确15 位十进制数字精度 |
serial | serial | 4 字节自增整数1 到 2^31-1 |
big serial | bigserial | 8 字节大范围的自增整数1 到 2^63-1 |
字符类型
名字 | 描述 | |
"char" | 1 字节;单字节内部类型 | |
name | 64 字节;用于对象名的内部类型 | |
character varying(n) | varchar(n) | 变长,有长度限制 |
character(n) | char(n) | 定长,不足补空白 |
text | 变长,无长度限制 |
时间类型
time ,timestamp 和interval 接受一个可选的精度值 (p),这个精度值声明在秒域后面小数点之后保留的位数。 缺省的时候在精度上是没有明确的绑定的, p 有用的范围对 timestamp和 interval 是从 0 到大约 6。
名字 | 描述 | 精度 |
timestamp [without time zone] | 8 字节;包括日期和时间;4713 BC到5874897 AD | 1ms / 14 位 |
timestamp with time zone | 8 字节;日期和时间,带时区;4713 BC到5874897 AD | 1ms / 14 位 |
interval | 12 字节;时间间隔;-178000000 到178000000 年 | 1ms / 14 位 |
date | 4 字节;只用于日期;4713 BC到32767 AD | 1 天 |
time [without time zone] | 8 字节;只用于一日内时间;00:00:00到24:00:00 | 1ms / 14 位 |
Time with time zone | 12 字节;一日时间; 00:00:00+1359到24:00:00-1359 | 1ms / 14 位 |
特殊类型
注:postgresql也允许你使用sql命令create type在数据库中建立你自己的类型。这通常不需要,而且在一定程度上,它是postgresql独有的。
名字 | 描述 | 表现形式 |
point | 16 字节;空间中一点 | (x,y) |
line | 32 字节;(无穷)直线(未完全实现) | ((x1,y1),(x2,y2)) |
lseg | 32 字节;有限线段 | ((x1,y1),(x2,y2)) |
box | 32 字节;长方形 | ((x1,y1),(x2,y2)) |
path | 16+16n 字节;闭合路径(与多边形类似) | ((x1,y1),...) |
path | 16+16n 字节;开放路径 | [(x1,y1),...] |
polygon | 40+16n 字节;多边形(与闭合路径相似) | ((x1,y1),...) |
circle | 24 字节;圆(圆心和半径) | <(x,y),r>(圆心与半径) |
cidr或inet | 一个ipv4的地址,录入192.168.0.1 | |
macaddr | 以mac地址(以太网卡物理地址) |
数组、复合类型
postgresql样式的数组:int[]
不需要定义元素的个数。即使定义了个数,也不会强制要求存储的个数。
sql99样式的数组:int array[7]
在sql99标准中,必须指出元素的个数。
复合类型:
creat type 名字 as(
子名1 类型1,
子名2 类型2…)
SQL Server
数据类型 | 描述 |
char(n) | 固定长度的字符串。最多 8,000 个字符。 |
varchar(n) | 可变长度的字符串。最多 8,000 个字符。 |
Varchar(max) | 可变长度的字符串。最多 2^30 个字符。 |
Text | 可变长度的字符串。最多 2gb 字符数据。 |
nchar(n) | 固定长度的 unicode 数据。最多 4,000 个字符。 |
Nvarchar(n) | 可变长度的 unicode 数据。最多 4,000 个字符。 |
Nvarchar(max) | 可变长度的 unicode 数据。最多 2^29 个字符。 |
Ntext | 可变长度的 unicode 数据。最多 2gb 字符数据。 |
数字类型
数据类型 | 描述 | 字节 |
tinyint | 允许从0到255的所有数字。 | 1 |
smallint | 允许从-2^15到2^15-1的所有数字。 | 2 |
int | 允许从-2^31到2^31-1的所有数字。 | 4 |
bigint | 允许介于-2^63和2^63-1之间的所有数字。 | 8 |
decimal(p,s) | 固定精度和比例的,-10^38+1到10^38-1间的数字。p:整体最大位数。p是1-38默认18。s:小数点右侧最大位数。s是0-p默认0。 | 5-17 |
smallmoney | 介于-(2^31)÷10000和(2^31-1)÷10000之间的货币数据。 | 4 |
介于-(2^63)÷10000和(2^63-1)÷10000之间的货币数据。 | 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 |
日期时间类型
数据类型 | 描述 | 存储 |
datetime | 从 1753 .1 .1 到 9999 .12 .31 ,精度为 3.33 毫秒。 | 8 |
datetime2 | 从 1753 .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 变量。 |
|
其他数据类型
数据类型 | 描述 |
bit | 允许 0、1 或 null |
binary(n) | 固定长度的二进制数据。最多 8,000 字节。 |
Varbinary(n) | 可变长度的二进制数据。最多 8,000 字节。 |
Varbinary(max) | 可变长度的二进制数据。最多 2gb 字节。 |
Image | 可变长度的二进制数据。最多 2gb。 |
sql_variant | 存储最多 8,000 字节不同数据类型的数据,除text、ntext 和 timestamp。 |
存储全局标识符 (guid)。 | |
Xml | 存储 xml 格式化数据。最多 2gb。 |
Cursor | 存储对用于数据库操作的指针的引用。 |
Table | 存储结果集,供稍后处理。 |
Microsoft Access 数据类型
数据类型 | 描述 | 存储 |
text | 用于文本或文本与数字的组合。最多255个字符。 |
|
memo | memo用于更大数量的文本。最多存储65,536个字符。注释:无法对memo字段进行排序。不过它们是可搜索的。 |
|
byte | 允许0到255的数字。 | 1 |
integer | 允许介于-2^15到2^15-1之间的数字。 | 2 |
long | 允许介于-2^31与2^31-1之间的全部数字 | 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值 | 1bit |
OLEobject | 可以存储图片、音频、视频或其他blobs(binarylargeobjects) | <1g |
hyperlink | 包含指向其他文件的链接,包括网页。 |
|
lookupwizard | 允许你创建一个可从下列列表中进行选择的选项列表。 | 4 |
MySQL 数据类型
text类型
数据类型 | 描述 |
char(n) | 保存固定长度的字符串。在括号中指定字符串的长度。最多 255 个字符。 |
varchar(n) | 保存可变长度的字符串。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 text 类型。 |
tinytext | 存放最大长度为 255 个字符的字符串。 |
text | 存放最大长度为 2^16-1 个字符的字符串。 |
BLOB | 用于 blobs (binary large objects)。存放最多 2^16-1 字节的数据。 |
mediumtext | 存放最大长度为 16,777,215 个字符的字符串。 |
mediumblob | 用于 blobs (binary large objects)。存放最多 2^24-1 字节的数据。 |
longtext | 存放最大长度为 2^32-1个字符的字符串。 |
longblob | 用于 blobs (binary large objects)。存放最多 2^32-1 字节的数据。 |
enum(x,y,z,etc.) | 允许你输入可能值的列表。可以在 enum 列表中列出最大 2^16-1 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:enum(‘x’,’y’,’z’) |
set | 类似enum,set最多只能包含64个列表项,不过set可存储一个以上的值。 |
number 类型
数据类型 | 描述 |
tinyint(n) | -128到127常规。0到255无符号。在括号中规定最大位数。 |
smallint(n | -2^15到2^15-1常规。0到2^16-1无符号。在括号中规定最大位数。 |
mediumint(n) | -2^23到2^23-1常规。0到2^24-1无符号。在括号中规定最大位数。 |
int(n) | -2^31到2^31-1常规。0到2^32-1无符号。在括号中规定最大位数。 |
bigint(n) | -2^63到2^63-1常规。0到2^64-1无符号。在括号中规定最大位数。 |
float(n,d) | 带浮动小数点的小数字。括号中规定最大位数。d规定小数点右侧最大位数。 |
double(n,d) | 带浮动小数点的大数字。括号中规定最大位数。d规定小数点右侧最大位数。 |
decimal(n,d) | 作为字符串存储的double类型,允许固定的小数点。 |
*这些整数类型拥有额外的选项unsigned。通常,整数可以是负数或正数。如果添加unsigned属性,那么范围将从0开始,而不是某个负数。
date 类型
数据类型 | 描述 |
date() | 日期。格式:yyyy-mm-dd。注释:范围是从’1000-01-01’到’9999-12-31’ |
datetime() | 日期+时间。格式:yyyy-mm-dd hh:mm:ss。注释:范围是从’1000-01-01 00:00:00’到’9999-12-31 23:59:59 |
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 |
time() | 时间。格式:hh:mm:ss注释:范围是从’-838:59:59’到’838:59:59’ |
year() | 2位或4位格式的年。注释:4位格式所允许的值:1901到2155。2位格式所允许的值:70到69,表示从1970到2069。 |
* 即便 datetime 和 timestamp 返回相同的格式,它们的工作方式很不同。在 insert 或 update 查询中,timestamp 自动把自身设置为当前的日期和时间。timestamp 也接受不同的格式,比如 yyyymmddhhmmss、yymmddhhmmss、yyyymmdd 或 yymmdd。