MySQL中字段的数据类型和约束
1. 字段的数据类型
1.1 整型
tinyint -128 to 127 0 to 255
smallint -32768 to 32767 0 to 65535
mediumint -8388608 to 8388607 0 to 16777215
int -2147483648 to 2147483647 0 to 4294967295
bigint -9223372036854775808 to 9223372036854775807 0 to 18446744073709551615
1.2 浮点型
float(M,D) M代表浮点数的总长度,D代表小数点后几位。
如:float(10,2) 12345678.99
decimal(M,D) decimal(6) 等同于 decimal(6,0)。
numeric 和 decimal 是同一种类型。
1.3 字符型
char 定长字符型,必须指定长度。字符个数(长度) 0 到 255。如:char(32),固定长度为32个字符。
varchar 变长字符型,必须指定长度。字符个数(长度)。
如:varchar(300),最大长度限制为300个字符。
注意:
varchar数据类型比较特殊,它所支持的字节数范围是0到65535,它的最大有效长度受限于整个数据行的最大字节数(65535个字节,所有的列共享这些字节)和所使用的字符集。存储varchar数据时,会使用1个或2个字节存储前缀,后面的字节来存储数据。如果数据的大小不大于255个字节,就使用1个字节存储前缀;反之,使用2个字节存储前缀。在utf8字符集下,一个汉字占3个字节,此时,varchar能够设置的最大长度是21844个字符。
定义char或varchar数据类型时,必须指定长度,这个长度指的是字符数。如果插入的数据长度超过指定的长度,就会自动截短为指定的长度。
1.4 文本型(变长,text同blob)
tinytext 0 到 255 字节
text 0 到 65535 字节
mediumtext 0 到 16777215 字节
longtext 0 到 4294967295 字节
1.5 枚举型(变长)
enum(“值1”,”值2” …) 最多列举65535个值。
1.6 日期时间型
date:’YYYY-MM-DD’,只包含日期。如:’2016-03-05’。
time:’HHSS’,只包含时间。如:’08:20:03’。
datetime:’YYYY-MM-DD HHSS’,包含日期和时间。如:’1926-03-05 08:20:03’,默认值一般采用CURRENT_TIMESTAMP(当前的日期时间)或’0000-00-00 00:00:00’。
timestamp:’YYYY-MM-DD HHSS’。范围是’1970-01-01 00:00:00’ UTC to ‘2038-01-19 03:14:07’ UTC。
注意:所有和日期时间相关的数据,都可以用整型 int 来存储,存储的是时间戳,方便计算和存储。
2. 字段约束
unsigned:无符号的(也就是只能为正数),只能限制数值型。
zerofill:零填充,整型的后面的小括号中的数值表示长度,当显示长度达不到指定长度的时候,会以0在前面补齐。
not null:非空。尽量指定为非空。
default:默认值,一般配合 not null 使用。 插入值时,如果不给这个字段分配值,将使用默认值。 尽量指定默认值。
primary key:主键,被标志成主键的字段自动非空,而且具有唯一性。(主键索引)
可以快速搜索定位某条记录,一般把主键定义在无意义的字段上(如:编号)。
注意:一张数据表只能有一个主键。被标志为自动增长的字段一定是主键,但主键不一定是自动增长。
auto_increment:自动增长,只能标志在数值列。 被标志为自动增长的字段,必须是主键。
unique [key]:唯一性,被标志为唯一约束的字段的值不能重复,一张表中可以有多个唯一字段。(唯一索引)
3. 字段注释
comment:给字段添加注释,便于理解该字段。
如:comment “用户名”
还没有评论,来说两句吧...