MySQL 字段约束 null, not null, default, auto_increment
2013-08-18 11:13
661 查看
转载自:http://www.xiaoxiaozi.com/2009/07/09/1111/
没有规矩,不成方圆,任何事物都是如此。
在 MySQL 中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。
今天我们就来看一下 MySQL 的字段约束:
NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。
NULL 和 NOT NULL 修饰符
可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),
还是说必须填上数据 (NOT NULL)。MySQL 默认情况下指定字段为 NULL 修饰符,如果一个字段指定为NOT NULL,
MySQL 则不允许向该字段插入空值(这里面说的空值都为 NULL),因为这是 “规定”。
向这些字段中插入 NULL 值将会导致插入下一个自动增加的值或者当前的时间戳。
DEFAULT 修饰符
可以使用 DEFAULT 修饰符为字段设定一个默认值。
当插入记录时,您老人家忘记传该字段的值时,MySQL 会自动为您设置上该字段的默认值。
如果指定字段可以为 NULL,则 MySQL 为其设置默认值为 NULL。
如果是 NOT NULL 字段,MySQL 对于数值类型插入 0,字符串类型插入空字符串,
时间戳类型插入当前日期和时间,ENUM 类型插入枚举组的第一条。
AUTO_INCREMENT 修饰符
AUTO_INCREMENT 修饰符只适用于 INT 字段,表明 MySQL 应该自动为该字段生成一个数
(每次在上一次生成的数值上面加 1)。对于主键(稍候介绍),这是非常有用的。
因为其允许开发者使用 MySQL 为每条记录创建唯一的标识符。
MySQL 表中只能有一个 AUTO_INCREMENT 字段,而且这个字段必须被定义为键。
除了字段的约束,MySQL 也允许表级的约束,比如主键和外键、索引和惟一约束。
这些约束置于 CREATE TABLE 命令的字段定义的后面。稍候为您介绍。敬请期待。
没有规矩,不成方圆,任何事物都是如此。
在 MySQL 中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。
今天我们就来看一下 MySQL 的字段约束:
NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。
NULL 和 NOT NULL 修饰符
可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),
还是说必须填上数据 (NOT NULL)。MySQL 默认情况下指定字段为 NULL 修饰符,如果一个字段指定为NOT NULL,
MySQL 则不允许向该字段插入空值(这里面说的空值都为 NULL),因为这是 “规定”。
/* 创建好友表,其中id ,name ,pass都不能为空 */ create table friends ( id int(3) not null, name varchar(8) not null, pass varchar(20) not null ); /* 错误提示,id列不能为空 #1048 - Column 'id' cannot be null */ INSERT INTO friends VALUES ( NULL , 'simaopig', 'simaopig' );但是在自增列和 TIMESTAMP 字段中,这个规则并不适用。
向这些字段中插入 NULL 值将会导致插入下一个自动增加的值或者当前的时间戳。
DEFAULT 修饰符
可以使用 DEFAULT 修饰符为字段设定一个默认值。
当插入记录时,您老人家忘记传该字段的值时,MySQL 会自动为您设置上该字段的默认值。
/* 创建im表,将name字段设置为默认值'QQ' */ create table im ( id int(3) not null, name varchar(25) not null default 'QQ' ); /* 插入数据,不传name字段的值,MySQL会为其设置默认值的 您运行的 SQL 语句已经成功运行了。 */ INSERT INTO im( id, name ) VALUES ( 2, 'MSN' ) ; INSERT INTO im( id ) VALUES ( 3 ) ; SELECT * FROM im LIMIT 0 , 30; /* id name 2 MSN 3 QQ */如果一个字段中没有指定 DEFAULT 修饰符,MySQL 会依据这个字段是 NULL 还是 NOT NULL 自动设置默认值。
如果指定字段可以为 NULL,则 MySQL 为其设置默认值为 NULL。
如果是 NOT NULL 字段,MySQL 对于数值类型插入 0,字符串类型插入空字符串,
时间戳类型插入当前日期和时间,ENUM 类型插入枚举组的第一条。
AUTO_INCREMENT 修饰符
AUTO_INCREMENT 修饰符只适用于 INT 字段,表明 MySQL 应该自动为该字段生成一个数
(每次在上一次生成的数值上面加 1)。对于主键(稍候介绍),这是非常有用的。
因为其允许开发者使用 MySQL 为每条记录创建唯一的标识符。
/* 您运行的 SQL 语句已经成功运行了。 ( 查询花费 0.0170 秒 ) */ CREATE TABLE items( id int( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , label varchar( 255 ) NOT NULL ); /* 插入三条数据,不指定id,采用默认值,加上AUTO_INCREMENT 您运行的 SQL 语句已经成功运行了。 */ insert into items(label) values ('xxx'); insert into items(label) values ('yyy'); insert into items(label) values ('zzz'); /* 全显示出来,看一下数据,注意看id的变化 */ select * from items; /* id label 1 xxx 2 yyy 3 zzz */
MySQL 表中只能有一个 AUTO_INCREMENT 字段,而且这个字段必须被定义为键。
除了字段的约束,MySQL 也允许表级的约束,比如主键和外键、索引和惟一约束。
这些约束置于 CREATE TABLE 命令的字段定义的后面。稍候为您介绍。敬请期待。
相关文章推荐
- MySQL中的字段约束 null、not null、default、auto_increment
- MySQL中的字段约束 null、not null、default、auto_increment
- MySQL中修改主字段属性为auto_increment
- mysql自动增长字段 auto_increment
- MySQL中修改主字段属性为auto_increment
- MySQL中修改主字段属性为auto_increment
- Mysql中自增字段(AUTO_INCREMENT)的一些常识
- 【MySQL基础】MySQL关于load对auto_increment字段的影响
- PostgreSQL 实现MySQL 的auto_increment 字段
- 如何把其他数据库中AUTO_INCREMENT约束的字段(如ID)导入Vertica数据库
- Mysql中自增字段(AUTO_INCREMENT)的一些常识
- Mysql中自增字段(AUTO_INCREMENT)的一些常识
- MySQL中可为空的字段设置为NULL还是NOT NULL
- mysql primary key对auto_increment字段影响
- Mysql中自增字段(AUTO_INCREMENT)的一些常识
- 【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
- mysql 插入语句中,auto_increment的字段的写法
- Mysql 中自增字段(AUTO_INCREMENT)的一些常识
- zerofill在mysql字段定义中的使用以及auto_increment的注意事项
- Mysql 自增字段起始值auto_increment的修改方法