MySQL 主键约束、非空约束、唯一约束( 二 )

1.2.5 自动增长列我们有的时候,希望表的某一个字段的值是自动增长的,比如编号,从1开始,依次+1,在数据库中,我们可以使用auto_increment自动增长列关键字来实现,数据库会自动生成该字段的值默认开始的值是1,我们也可以修改起始值,语法如下:
ALTER TABLE 表名 AUTO_INCREMENT=值此外值得注意的是,如果一个字段是自动增长的列,那么该字段的数据类型必须是整型且必须是主键,下面我们看一个示例:
CREATE TABLE `People` (`id` int PRIMARY KEY AUTO_INCREMENT,`name` varchar(30) DEFAULT NULL,`age` int DEFAULT NULL);我们看一下表结构:
mysql> desc People;+-------+-------------+------+-----+---------+----------------+| Field | Type| Null | Key | Default | Extra|+-------+-------------+------+-----+---------+----------------+| id| int| NO| PRI | NULL| auto_increment || name| varchar(30) | YES|| NULL||| age| int| YES|| NULL||+-------+-------------+------+-----+---------+----------------+3 rows in set (0.00 sec)我们有自动增长列的表中插入数据的时候,可以不为id字段设置值,也可以为其设置成null,示例代码如下:
mysql> insert into People(name,age) values("王二",20);Query OK, 1 row affected (0.01 sec)mysql> insert into People(id,name,age) values(Null,"李四",20);Query OK, 1 row affected (0.00 sec)mysql> select * from People;+----+--------+------+| id | name| age|+----+--------+------+|1 | 王二|20 ||2 | 李四|20 |+----+--------+------+2 rows in set (0.00 sec)mysql> 从上面的示例上我们可以看出,我们即使没有指定id字段的值,也是不会报错的,数据库会自动为其生成值 。
1.3 非空约束所谓非空的约束,其实很简单,如果那个字段的值添加了非空的约束,那么这个字段的值就不能为NULL,如果是NULL,就会报错,示例代码如下:
mysql> desc People;+-------+-------------+------+-----+---------+----------------+| Field | Type| Null | Key | Default | Extra|+-------+-------------+------+-----+---------+----------------+| id| int| NO| PRI | NULL| auto_increment || name| varchar(30) | YES|| NULL||| age| int| YES|| NULL||| sex| char(30)| NO|| NULL||+-------+-------------+------+-----+---------+----------------+4 rows in set (0.00 sec)mysql> insert into People(name,age,sex) values('张三',29,NULL);ERROR 1048 (23000): Column 'sex' cannot be nullmysql> 我们从通过查询People的表结构发现,sex字段不能为空,当我们在插入数据的时候,如果把该字段插入一个空值,那么就会报错 。添加非空约束的语法如下,只需要在需要添加的字段后面,增加NOT NULL即可 。示例代码如下:
CREATE TABLE `People` (`id` int PRIMARY KEY AUTO_INCREMENT,`name` varchar(30) DEFAULT NULL,`age` int DEFAULT NULL, `sex` CHAR(30) NOT NULL);1.4 唯一约束唯一约束也很简单,就是字面意思,如果一个字段被添加了唯一约束,那么该字段的值就只能是唯一的,不可重复的,添加唯一约束方式也很简单,直接在数据类型的后面加上UNIQUE关键字即可,示例代码如下:
CREATE TABLE `Person` (`id` int PRIMARY KEY AUTO_INCREMENT,`name` varchar(30) UNIQUE,`age` int );以我们这里的Person表为例,所有数据的名字都不能重复,如果重复则会报错,示例如下:
mysql> desc person;+-------+-------------+------+-----+---------+----------------+| Field | Type| Null | Key | Default | Extra|+-------+-------------+------+-----+---------+----------------+| id| int| NO| PRI | NULL| auto_increment || name| varchar(30) | YES| UNI | NULL||| age| int| YES|| NULL||+-------+-------------+------+-----+---------+----------------+3 rows in set (0.00 sec)mysql> insert into person(name,age) values("张三",20);Query OK, 1 row affected (0.00 sec)mysql> insert into person(name,age) values("张三",20);ERROR 1062 (23000): Duplicate entry '张三' for key 'person.name'mysql> 但是这个唯一约束对一个值例外,就是NULL,在MySQL中,NULL与任意一个值都不相等,连和它自己都不相等,多以如果名称这一列有多条记录,但是它的值是空的,也是不会报错的 。
1.5 结尾本期的内容就到这里了,如有不足之处还请大家多多指正,欢迎大家留言、关注、转发、收藏,谢谢 。




推荐阅读