mysql:如何将列更改为PK Auto_Increment

时间:2010-05-27 16:18:43

标签: sql mysql

是否有一个select语句可以完成所有这三个:primary key,unique和auto_increment?

3 个答案:

答案 0 :(得分:2)

我们在这里创建一个小桌子:

mysql> CREATE TABLE test2 (id int);

注意Null为YES,id不是主键,也不是auto_increment。

mysql> DESCRIBE test2;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       | 
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

这是alter命令:

mysql> ALTER TABLE test2 MODIFY COLUMN id INT NOT NULL auto_increment, ADD primary key (id);

现在Null为NO,id是auto_increment的主键。

mysql> describe test2;
describe test2;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment | 
+-------+---------+------+-----+---------+----------------+
1 row in set (0.00 sec)

主键始终是唯一的。

答案 1 :(得分:1)

主键始终是唯一的。

答案 2 :(得分:1)

您无法使用SELECT(数据操作语言)语句(如ALTER TABLE)更改数据库结构。您需要DML(数据定义语言)语句。表列可以使用ALTER TABLE `foo` CHANGE COLUMN `bar` `bar` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (`foo`); 修改:

DDL

语法基本上是这样的:

{{1}}

关于您要执行的确切更改,您必须知道在关系数据库中,主键是用于唯一标识表中每一行的值。如果它不是唯一的或NULL,它将不会起到这种作用。