您的位置:首页 > 数据库 > MySQL

MySQL中字段的数据类型和约束

2017-12-20 20:44 531 查看

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:’HH:MM:SS’,只包含时间。如:’08:20:03’。

datetime:’YYYY-MM-DD HH:MM:SS’,包含日期和时间。如:’1926-03-05 08:20:03’,默认值一般采用CURRENT_TIMESTAMP(当前的日期时间)或’0000-00-00 00:00:00’。

timestamp:’YYYY-MM-DD HH:MM:SS’。范围是’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 “用户名”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: