常见数据类型
数值型
⑴.整型
①.分类:
Tinyint(1)、Smallint(2)、Mediumint(3)、Int(4)、integer(4)、Bigint(8)
②.特点:
⒈默认是有符号的,如果要无符号后边添加UNSIGNED。
⒉如果插入的值超出范围,发出警告,插入临界值。
⒊有默认长度int(11),无符号int(10)。
⒋自己设置长度和范围无关(范围只和类型有关),如果自己设置长度后,位数不够会用0填充(必须搭配zerofill,默认会变为无符号)。
⑵.小数
①.分类
浮点数: float(M,D)4、double(M,D)8
定点数: DEC(M,D)
②.特点
⒈M:整数部位和小数部位总位数,D:小数位数。
⒉如果超出范围插入临界值。
⒊M和D都可以省略,但定点型(M,D)默认为(10,0),float和double随插入精度决定。
字符型
⑴.较长的文本
text、blob(存二进制)。
⑵.较短的文本
char(M)、 varchar(M)、
enum('a','b','c')列表中一个不区分大小写、
set('a','b','c')中多个,insert into 表 values ('a,b')不区分大小写。
特点:
M:最大字符数
char是固定长度字符,M是多少默认开多大空间,可省略(M)默认为1(较耗费空间,但效率会高点)。
varchar可变长度字符,写多少字符开多大空间不可省略(M)。
日期型
⑴.分类
date(只有日期)、time(只有时间)、year(只有年)、
datetime(时间+日期)8 1000-9999
timestamp(日期+时间,受时区和版本影响)4 1970-2038
…
约束
含义:
为了限制表中数据,保证表中数据一致性(准确和可靠)。
分类:六大约束
①.NOT NULL 非空约束(保证该字段值不能为空)。
②.DEFAULT 默认约束(保证字段有默认值)。
③.PRIMARY KEY 主键约束(保证字段值的唯一性且非空)。
④.UNIQUE 唯一 (保证字段值唯一,可以为空)。
⑤.CHECK 检查约束(MySQL不支持)。
⑥.FOREIGN KEY 外键约束(限制两张表关系,
保证该表字段值来自于主表关联列的值,
在从表添加外键约束,用来引用主表中的列)。
添加约束时机
①.创建表时:
②.修改表时:
约束添加分类
①.列级约束:六大约束语法都支持,但外键约束没有效果。
字段名 类型 列级约束;
②.表级约束:除非空约束和默认约束其它都支持。
CREATE TABLE 表名(
字段名 类型 列级约束,
字段名 类型 列级约束,
表级约束
);
标识列(自增长列)
①.不用手动插入值,系统提供默认的序列值。
②.示例:字段名 类型 auto_increment
③.特点:
⒈标识列必须和KEY搭配(主键或唯一)。
⒉一个表中只能有一个标识列。
⒊标识列类型只能是数值型。
⒋标识列可通过:SET auto_increment_increment 来设置步长。
细节问题
①.主键和唯一区别:
⒈唯一性:主键和唯一都能保证唯一性。
⒉非空:主键不能为空,唯一可以为空。
⒊个数:主键至多有一个,唯一可以有多个。
⒋组合:组合主键:(字段名,字段名),组合唯一类似。
插入值时只要两条数据字段值不重复即可。
insert into 表 values (字段值1,字段值2);
insert into 表 values (字段值1,字段值3);
②.外键特点:
⒈在从表设置外键。
⒉从表外键列的类型和主表关联列类型一致或兼容名称无所谓。
⒊主表关联列必须是KEY(主键或唯一)。
⒋插入数据先插入主表数据,在插入从表数据。
⒌删除数据先删除从表数据,在删除主表数据。
③.修改表时添加约束:
alter table 表 modify column 字段名 类型 约束;