整型的每一种都分无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
MySQL DECIMAL
数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL
数据类型用于保留准确精确度的列,例如会计系统中的货币数据。
P
是表示有效数字数的精度。 P
范围为1?65
。D
是表示小数点后的位数。 D
的范围是0
~30
。MySQL要求D
小于或等于(<=
)P
。
ENUM是枚举类型,它虽然只能保存一个值,却能够处理多达65535个预定义的值。下面是我写的一个mysql语句
CREATE TABLE student( id INT(11) PRIMARY key auto_increment, name VARCHAR(10) not null, sex ENUM(‘boy‘,‘girl‘,‘secret‘) DEFAULT ‘secret‘ )ENGINE=INNODB
如果sex列中插入了除bor,girl,secret之外的其它字符,则视为空字符串
1、每个枚举值都有一个索引:
SELECT * FROM tbl_name WHERE enum_col=0;
2、最多可以有65535个不同的元素值(实际限制小于3000)。
3、枚举值不能是0或空字符串(虽然存在特殊情况)
4、enum在底层的存储方式是以整型进行存储的,比如这样的字段sex enum(‘male‘ , ‘female‘ , ‘both‘ , ‘unknow‘)在查询时where sex=‘male‘和where sex=1是等效的
bit类似多用于存储状态,如bit(1) 直接对应Java语言的布尔类型true和false,用做状态保存时一个字段可以保存多至64个状态。如我开发的某个系统需要保存对用户发送短信的状态,有10几种不同类型的短信,每种都要标记发过没有,这时候用bit类型就很方便,当然用int也能实现,但用bit更符合语义,查询或更新某个状态时按位操作即可。
末尾写一些会用到的命令:
①查看创建表的sql语句:show create table students;
②
原文:https://www.cnblogs.com/cpw6/p/11081304.html