mysql中主键数据类型_MySQL系列-详解mysql数据类型MySQL数据类型
(1)数值类型
1、整数型
2、浮点型
3、定点型
(2)⽇期时间类型
(3)字符串类型
MySQL字段属性
1、空\不为空值:NULL、NOT NULL戒奶
2、主键:primary key
3、唯⼀键:unique key
4、⾃增长:auto_increment
5、默认值:default
美国著名的桥6、字段描述:comment
数值类型
整数类型:tinyint、smallint、mediumint、integer、bigint
类型
简写
字节⼤⼩
singed范围
unsinged范围
备注
整数型
tinyint
1
0~255
-128~127
smallint
2
0~65535
-32768~32767
mediunint
0~16777215
-
8388608~8388607
integer
int
4
0~4294967295
-2147483648~2147483647
bigint
8
0~264-1
-263~263-1
⼩数类型:float、double、decimal
float数值类型⽤于表⽰单精度浮点数值,⽽double数值类型⽤于表⽰双精度浮点数值,float和double都是浮点型,⽽decimal是定点型。浮点型和定点型可以⽤类型名称后加(M,D)来表⽰,M表⽰该值的总共长度,D表⽰⼩数点后⾯的长度,M和D⼜称为精度和标度。
float和double在不指定精度时,默认会按照实际的精度来显⽰,⽽DECIMAL在不指定精度时,默认整数为10,⼩数为0。
时间⽇期类型
时间⽇期类型包括date、time、datetime、timestamp、year
类型
每当想起你字节⼤⼩
范围
格式
⽤途
date
3
1000-01-01/9999-12-31
YYYY-MM-DD
⽇期值
time
3
-838:59:59~838:59:59
HH:MM:SS
时间值或持续时间
year
datetime
8
1000-01-01 00:00:00/9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
混合⽇期和时间值
timestamp
4
1970-01-01 00:00:00到2038-01-19 03:14:07
YYYY-MM-DD HH:MM:SS
⼀旦该⾏记录被修改,那么timestamp会修改成当前时间。
字符串类型
字符串类型包括char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext 类型
范围
存储所需字节
说明
char(m)
[0,28-1]
m
最⼤长度为255,不使⽤L时默认为1
varchar(m)
[0,216-1]
m
单位为字符,最⼤长度为65536
timyblob
L+1
blob
L+2
存储⼆进制数据(少⽤)
mediumblob
L+1
短⽂本数据
text
L+2
存储⽂字,当字符⼤于255时,⼀般使⽤text;
mediuntext
L+3
中等长度⽂本数据
longtext
L+4
极⼤⽂本数据
不要轻易的使⽤最⼤限度来存储字符串,因为涉及记录长度问题 :孕妇可以吃山楂
西米粽子MySQL中规定任何⼀条数据最长不能超过65535个字节
如果有任何⼀个字段允许为空,那么系统会⾃动从整个记录中保存⼀个字节来存储NULL;
text⽂本不占⽤记录长度,额外存储。
UTF8中varchar的最⼤限度:65535-2(需要两个字节来存储长度) /3=21844,所以最⼤字符数为21844
GBK中varchar的最⼤限度:65535-2(需要两个字节来存储长度) /2=32766
字段属性:
如何疏通下水道字段属性是字段除数据类型外的属性,⼀般有空\不为空值、主键、唯⼀键、⾃增长、默认值、描述等属性。
空\不为空值:NULL、NOT NULL
字段的数据默认情况下是允许为空的,⽐如说⼀条⼈的信息记录中可以没有邮箱(或许有些⼈考虑⽤“空字符串”来代表),我们允许可以不填⼊数据的字段可以设置为null;但⽐如说某些必填数据,我们不想填⼊的时候留空,可以设置这个字段为not null
主键:primary key
主键⽤于唯⼀标识每⼀条记录(每个⼈都有⾃⼰唯⼀的⾝份证)
每⼀张表只能有⼀个主键。
因为唯⼀标识,所以主键字段的数据不能为空,并且主键字段的数据值不能重复
主键也是⼀种索引,可以提⾼查找速率。
主键的⽤途:主键的主要⽤途是⽤来唯⼀标识每⼀条记录,⽐如我们想将两个表(学⽣表跟⽼师表)的多对多关系封装到⼀个表中,这个抽取
的映射字段⼀般都是各⾃的主键。;并且由于主键的数据的不可重复性,也⽤来约束数据的唯⼀性。
唯⼀键:unique key
唯⼀键的功能与主键有点类型,但不同的是主键只能有⼀个,唯⼀键可以有多个,⽽且唯⼀键的字段的数据允许为空。
唯⼀键可以约束字段,使得字段的数据不能重复
如果唯⼀键同时也有not null,并且表中没有主键的话,在desc查看表结构中会显⽰成主键
如果唯⼀键也不允许为空,那么功能与主键相同
唯⼀键的定义⽅法可以参考主键的。
唯⼀键的删除:
alter table 表名 drop index 唯⼀键名; -- 唯⼀键默认使⽤字段名来定义名字
⾃增长:auto_increment
⾃增长的功能是可以使某个字段的数据随着记录的插⼊⽽进⾏增长(不给这个字段插⼊数据的情况下)
⾃增长的前提是这个字段必须是⼀个“索引”,⽐如主键、唯⼀键
⾃增长的前提这个字段的数据类型是⼀个数值型的,(如果给了float,也不会增长成⼩数,⽽仅仅是整数)
⼀个表只能有⼀个⾃增长。
只有不给值,或者给null的情况下,才能正确⾃增长;如果某⼀次⾃增长失败了,那么下⼀次会从当前字段的最⼤值开始继续⾃增长。
爱媳如梦
⾃增长的修改:
修改增长速度:t auto_increment = 值;
修改下次增长的值:alter table 表名 auto_increment = 值; 【修改的值只能变⼤,不能变⼩,因为可能导致数据重复问题】
⾃增长的查看:show vairable like "auto_increment%";
⾃增长的删除:利⽤alter来删除,alter修改字段属性的时候如果不带上原来的属性就会被删掉:
默认值:default几月几号开学
默认值的功能是当我们不给⼀个字段赋值的时候,使⽤默认值作为数据,⽐如不选择性别的时候,默认使⽤“保密”;
字段描述:comment
字段描述是⽤来描述字段的,能在查看数据表创建语句的时候显⽰出来(不会再lect结果中显⽰出来),可以帮助我们了解某⼀个字段的意义。