是否有一条select语句可以完成以下三个任务:主键、唯一和auto_increment?
发布于 2010-05-28 00:33:41
我们在这里创建一个小表:
mysql> CREATE TABLE test2 (id int);注意: auto_increment为空,并且Null不是主键,它也不是主键。
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)主键始终是唯一的。
发布于 2010-05-28 00:25:56
主键始终是唯一的。
发布于 2010-05-28 00:34:34
您不能使用像SELECT这样的DML (数据操纵语言)语句来更改数据库结构。您需要DDL (数据定义语言)语句。可以使用ALTER TABLE修改表列
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
语法基本上是这样的:
ALTER TABLE `foo`
CHANGE COLUMN `bar` `bar` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`foo`);至于您想要进行的确切更改,您必须知道,在关系数据库中,主键是用于唯一标识表中的每一行的值。如果它不是唯一的或者不是空的,那么它就不会达到这个目的。
https://stackoverflow.com/questions/2922856
复制相似问题