5.6.1 Numeric Column Attribute
Numeric 数据类型而不是BIT可能有一下的属性:
1.UNSIGNED负值被忽略
2.ZEROFILL引发获取的值左边被添加前导0到列展示的宽度。例如,如果存储0,14和1234在列上,被定义 INT(5) zerofill,mysql展示他们作为00000,00014,和01234
3.AUTO_INCREMENT应用于整形数据类型,它被使用来产生连续唯一的值
5.6.2 String Column Attribute
1. CHARACTER SET指定字符集和,
2. COLLATE指定set collation集合
3.Binary是缩写对于指定二进制集合,BINARY属性和BINARY 数据类型是不同的,前者设定结婚对于一个非二进制字符串列,后者创建一个二进制字符串列。
使用binary属性将引发char varchar text非二进制的字符串类型被创建使用binary,varbinary和blob二进制类型
5.6.3 一般的列属性
1.NULL 和NOT NULL
2.DEFAULT ,如果指定一个默认值NULL到非空的列会产生错误
3.默认值越界超出了数据类型,例如一个负值对于unsigned数值列
数值型的默认值是0,字符串是空字符串,日期类型是00:00:00
5.7 使用AUTO_INCREMENT column Attribute
AUTO_INcrement属性可能必须不为空,MYSql也提供last——inset——id()函数来返回最近产生的auto——increment值。这个值返回有last——insert——id()。
对于定义auto——increment下面的语句等效:
insert into t (id,name) values(null,'hans');
insert into t(name) values('Hans');
insert into t(id) values(NULL),(NULL),(17),(NULL),(NULL)
id
1
2
17
18
19
Auto_increment列被设置NULL它将被设置为下个序列的值,这可能被发送如果替换列为0除非使用NO_AUTO_VALUE_ON_ZERO
当达到上限时,将产生重复键值错误
如果你删除含有值的的行,当插入新的行是不会被重用,如:1 to 10行,当删除记录包含10的,下个序列是11而不是10(myisam,innodb)
对于mysql> create table multisequece(
-> name char(10) not null,
-> name_id int unsigned not null auto_increment,
-> primary key (name, name_id)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key