1.thiyint类型 -128~127
2.bit类型:
bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
bit字段在显示时,是按照ASCLL对应值显示的.
3.float类型:
float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节.MySQL在保存值时会进行四舍五入.
4.decimal类型
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数.
5.char类型
char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255.
6.varchar
archar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节.
关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf8中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)
char与varchar的区别
如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘空间比较节省,但是效率低。
7.日期类型
常用的日期有如下三个
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从1000到9999,占用八字节
date:日期 'yyyy-mm-dd',占用三字节
timestamp:时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss格式和datetime完全一致,占用四字节
添加数据时时间戳会自动补上当前数据
8.enum和set
enum:单选类型
最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,....最多65535个;当我们添加枚举值时,也可以添加对应的数字编号
set:多选类型
9.集合查询:
find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0; str_list 用逗号分隔的字符
1.默认值:default
某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值
默认值的生效:数据在插入的时候不给该字段赋值,就使用默认值
2.列描述:comment
没有实际意义,用来描述字段信息,给程序员和DBA来进行解释
desc查找不到注释信息,show 可以
3.zeoffill
4.主键 primary key 唯一且不能为空
primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。
追加主键alter table 表名 add primary key(字段列表)
5.唯一键 unique
一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较
6.自增长auto_increment
当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键
任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
自增长字段必须是整数
一张表最多只能有一个自增长
7.外键 foreign key (字段名) references customer(列名),
外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null