一.常见数据类型
数值类型:
TINYINT:占用1字节,默认为有符号
BIT(M):位类型:M指定位数,默认值为1,范围为1-64,bit类型在显示时,按照ASCII码对应的值进行显示。
FLOAT[(M,D)]:M指定显示长度,D指定小数位数,占用4字节
DOUBLE[(M,D)]:M指定显示长度,D指定小数位数,占用8字节
DECIMAL(M,D):M指定显示长度,D指定小数位数,每4个字节表示9个数字,小数点占用1字节
文本类型:
CHAR(L):固定长度字符串:L指定字符串长度,最大为255
VARCHAR(L):可变长度字符串:L指定字符串长度上限,最多占用65535字节
时间
DATE / DATETIME:日期类型:YYYY-MM-DD格式 / YYYY-MM-DD HH:MM:SS格式
TIMESTAMP:时间戳:以YYYY-MM-DD HH:MM:SS格式进行显示
字符串类型
ENUM:枚举类型:ENUM类型的取值范围需要在定义字段时进行指定,设置字段值时只允许从成员中选取单个值,其所需的存储空间由定义ENUM类型时指定的成员个数决定
SET:集合类型:SET类型的取值范围需要在定义字段时进行指定,设置字段值时可以从成员中选取一个或多个值,其所需的存储空间由定义SET类型时指定的成员个数决定
二.表的约束
介绍常见的约束
空属性
空属性有两个值,分别是null和not null,空值是无法参与运算。
默认值
向表中插入数据时如果不给带有默认值的字段赋值,那么就会使用默认值进行插入。
zerofill
显示宽度
主键
主键是唯一的约束该字段里面的数据,表当中每条记录的主键不能重复也不能为空,并且一张表里面只能有一个主键,此外,主键所在的列通常是整数类型。
复合主键
一个主键可以由多个字段来承担,这种主键叫做复合主键,这多个字段不能同时重复也不能为空。
自增长
1.若该字段设置了自增长且插入时未给值,那么自动找出当前字段当中已有的最大值,将最大值进行加一后的值插入该字段。
2.任何一个字段要做自增长,前提是其本身必须是一个索引(Key一栏有值),并且自增长字段必须是数值类型,一张表最多只能有一个自增长字段。
3.自增长通常和主键搭配使用,作为逻辑主键
唯一键
一张表中可能有很多字段需要唯一性,但一张表中只能有一个主键,而唯一键就可以解决表中有多个字段需要唯一性约束的问题。唯一键允许字段为空,并且可以多个字段为空,空字段不做唯一性比较。
外键
外键用来定义主表和从表之间的关系,外键约束主要定义在从表上,主表必须有主键约束或唯一键约束。
外键定义后,要求插入外键列的数据必须在主表对应的列存在或为null。
定义一个班级表为主表(含班级的id和班级名),定义一个学生表为从表(包含学生的id、姓名以及学生所在班级对应的id)
先往主表插入数据
从表插入数据是,对应的class_id必须在主表的id中