首先你可以不设置,如果你不设置mysql会根据所选字段选择默认长度的。
例如:char型。默认长度是255,但是你所存储的数据只需要10个字符。这样的话其余的245个字符就浪费了,而且还站着空间,不能存储其他的任何东西了。用一句俗话说就是“占着茅坑不拉屎”。
所以设置字段长度的其中一个好处就是节省空间,按需所取。
精确数字整数
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整数数据。
tinyint
从 0 到 255 的整数数据。
bit
bit
1 或 0 的整数数据。
decimal 和 numeric
decimal
从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
numeric
功能上等同于 decimal。
money 和 smallmoney
money
货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。
smallmoney
货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。
近似数字
float
从 -1.79E + 308 到 1.79E + 308 的浮点精度数字。
real
从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。
datetime 和 smalldatetime
datetime
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。
smalldatetime
从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。
字符串
char
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
varchar
可变长度的非 Unicode 数据,最长为 8,000 个字符。
text
可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。
Unicode 字符串
nchar
固定长度的 Unicode 数据,最大长度为 4,000 个字符。
nvarchar
可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于 nvarchar(128),用于引用数据库对象名。
ntext
可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。
二进制字符串
binary
固定长度的二进制数据,其最大长度为 8,000 个字节。
varbinary
可变长度的二进制数据,其最大长度为 8,000 个字节。
image
可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。
其它数据类型
cursor
游标的引用。
sql_variant
一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。
table
一种特殊的数据类型,存储供以后处理的结果集。
timestamp
数据库范围的唯一数字,每次更新行时也进行更新。
uniqueidentifier
全局唯一标识符 (GUID)。
你好,固定长度字符串:就是字符串的长度是固定的,当实际字符不满足长度时,用空格来不齐。
比如:MySql中,某字段的类型是:char(10),就是固定长度的。
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索 *** 作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
在MySQL中用来判断是否需要进行对据列类型转换的规则
1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)