每一个常量、变量、参数都有数据类型,用来指定一定的存储格式、约束和有效范围。
TINYINT 占1个字节:范围:2^8=256 无符号0-255 有符号:-128-127 一百
SMALLINT占2个字节:范围:2^16=65536 无符号0-65535 有符号:-32768-32767 六万
MEDIUMINT 占3个字节: 范围:2^24=16777216 无符号:0-16777215 有符号:-8388608-8388607 1500万
INT 占4个字节 范围:2^32=4294967296 无符号:4294967295 有符号:-2147483648-2147483647 42亿
BIGINT 占8个字节 范围:2^64=18446744073700000000 1844千万万亿
一:数值类型
int类型
对于整型数据,MySQL支持在类型名称后面的小括号显示指定宽度,但是指定宽度只是希望显示的宽度。比如int(5),和zerofill合作后。我插入数字3,则显示00003,如果插入55555555,则显示55555555。只是期望显示5位,但具体的限制还是4294967296.
创建一个表示,指定主键,可以使用如下:
create table test2(id int not null PRIMARY KEY);
或者
create table test2(id int not null, PRIMARY KEY(id));
小数类型
对于小数,mysql分为两种:浮点数和定点数。
浮点数:float 和 double 类型(点后面的小数按照四舍五入浮动,不精确。1.436 会表示为1.44)
定点数:decimal类型 在mysql内用字符串的形式表示,比浮点数更加精确,适合用来表示货币等精度高的数据。(不会浮动,点后面是定的)
decimal可以使用(M,D)的方法来指定显示的小数位数,而float,double最好不用。所以定点数精度更高。
浮点数和定点数都可以用(M,D)类型来表示。M为精度,D为标度。M表示有多少位,D表示有多少小数。
(M,D)对于float,double为不标准用法,所以在数据库迁移时会带来很多麻烦。最好不要用。
float和double在不指定精度时,会默认按照实际的精度,(计算机本身的精度来显示)
decimal在不指定精度时,默认的整数位为10,默认的小数位为0.
BIT类型
用于存放字段值。BIT(M)用来存放多位二进制数,M范围为1-64,不写默认为1.
比如存放10,则BIT类型的数据表示为1010.
查询显示时,不可以用SELECT * FROM t1.
要使用select bin(id) from xxx bin二进制,hex十六进制。
二:日期时间类型
日期和时间类型可以分为5种。
DATE:表示年月日
TIME:表示时分秒
DATETIME:表示年月日时分秒
TIMESTAMP:表示为年月日时分秒
YEAR:只表示年,范围是1901-2155
char和varchar的区别
char长度固定,varchar长度不固定。
比如char(M)表示每个值都占用M个字节,不足的用空格补齐。
varchar只占用刚够用的字节再加上一个记录长度的字节。 总长度为L+1