mysql数据库字段
发现(原创)
1.
mysql里的sql文件:tinyint字段不设置长度,则数据库默认是tinyint(4)
注:此长度是显示长度,比如:tinyint(4),我存储5,那么数据库就是0005
它的存储长度是固定不变的。
2.
未指定UNSIGNED类型的TINYINT 型的字段存储-127到128的整数。指定了UNSIGNED类型的TINYINT 型的字段用来存储0-255的整数。
通常,为了节省空间,应该尽可能的使用最小的整型数据。
一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。
这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。
另一方面,一旦你已经创建了一个字段,要修改它是很困难的。
因此,为安全起见,你应该预测一下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。
3.boolean字段反应到数据库是tinyint(1),boolean -32786到 32767
tinyint是有正负的:-128到127
如果设置unsigned那么从0到255
4.选择zerofill则会默认选择unsigned一项
选择unsigned不会默认选择zerofill一项
5.boolean型---boolean
tinyint----short……
numeric----long
smallint----short
int----Interger
6.字符串类型的后面括号是存储长度
CHAR(n)、CHARACTER(n) 包含固定长度的字符串,用空格填充到长度n。
VARCHAR(n)、CHARACTER VARYING(n)、CHARACTER VARYING 存储长度可变的字符串,
最大长度由n指定。末尾的空格不存储
数
值类型的后面是显示长度
tinyint(4)、int(4)
7.NUMERIC、decimal类型的字段不能使用auto_increment属性
int 可以,但是映射到java实体类的时候是Integer型
bigint也可以,映射到java实体类的时候是long型
8.如果在方法里不添加事务,那么会有插入提交,但是没有提交事务,所以,结果是:消耗掉了一个id,但是,数据库没有记录