第1个回答 推荐于2017-11-23
Oracle:
SQL> CREATE TABLE test_tab (
2 id INT,
3 name VARCHAR(10),
4 age INT,
5 val VARCHAR(10)
6 );
Table created.
SQL> ALTER TABLE test_tab
2 ADD CONSTRAINT pk_test_tab PRIMARY KEY(id);
Table altered.
SQL Server 麻烦一点
1> CREATE TABLE test_tab (
2> id INT,
3> name VARCHAR(10),
4> age INT,
5> val VARCHAR(10)
6> );
7> go
1> ALTER TABLE test_tab
2> ADD CONSTRAINT pk_test_tab PRIMARY KEY(id);
3> go
消息 8111,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
无法在表 'test_tab' 中可为空的列上定义 PRIMARY KEY 约束。
消息 1750,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
无法创建约束。请参阅前面的错误消息。
首先对 id 这个列,增加一个 NOT NULL 约束,然后再设置为主键。
1> ALTER TABLE test_tab
2> ALTER COLUMN id INT NOT NULL;
3> go
1> ALTER TABLE test_tab
2> ADD CONSTRAINT pk_test_tab PRIMARY KEY(id);
3> go
MySQL
mysql> CREATE TABLE test_tab (
-> id INT,
-> name VARCHAR(10),
-> age INT,
-> val VARCHAR(10)
-> );
-> //
Query OK, 0 rows affected (0.08 sec)
mysql> ALTER TABLE test_tab
-> ADD CONSTRAINT pk_test_tab PRIMARY KEY(id);
-> //
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0本回答被提问者采纳
第2个回答 2019-03-21
创建表:定义列之后独立指定主键:
CREATE TABLE stu(
sid CHAR(6),
sname VARCHAR(20),
age INT,
gender VARCHAR(10),
PRIMARY KEY(sid)
);
修改表时指定主键:
ALTER TABLE stu
ADD PRIMARY KEY(sid);
删除主键(只是删除主键约束,而不会删除主键列):
ALTER TABLE stu DROP PRIMARY KEY;