一. PRIMARY KEY
-
主键约束
-
每张数据表只能存在一个主键
-
关于联合主键和复合主键的解释,请查看复合主键与联合主键
-
主键保证记录的唯一性
-
主键自动为NOT NULL
-
AUTO_INCREMENT必须和主键一起使用,但是主键不一定必须和AUTO_INCREMENT使用
二. 设置主键
我们将上节中的id定义成主键
mysql> CREATE TABLE tb3( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(30) NOT NULL -> ); Query OK, 0 rows affected (0.01 sec)
可以看到,创建成功了,主键可以写PRIMARY KEY,也可以直接写KEY
现在再来看一下数据表结构:
mysql> SHOW COLUMNS FROM tb3; +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(30) | NO | | NULL | | +----------+----------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
可以看到,id不能为空,因为主键自动为NOT NULL,Key被定义成了PRI,Extra被定义成了自动编号,则写入记录的时候id不需要专门赋值了,我们插入三条记录:
mysql> INSERT tb3(username) VALUES('Tom'); Query OK, 1 row affected (0.01 sec) mysql> INSERT tb3(username) VALUES('John'); Query OK, 1 row affected (0.00 sec) mysql> INSERT tb3(username) VALUES('Zoro'); Query OK, 1 row affected (0.00 sec)
然后查看一下记录:
mysql> SElECT * FROM tb3; +----+----------+ | id | username | +----+----------+ | 1 | Tom | | 2 | John | | 3 | Zoro | +----+----------+ 3 rows in set (0.00 sec)
可以看到id被自动编号成了123
请登录之后再进行评论