SQL主键:Primary Key
主键(Primary Key)由表中的一个或者多个字段构成,用来唯一标识表中的每一行记录。可以将主键类比为学号、身份证号、车牌号或者 ID。
主键必须包含唯一值,换句话说,所有记录的主键都不能出现相同的值。此外,主键必须是一个具体的值,不能是 NULL 值。
当主键包含多个字段时,又称为复合键(Composite Primary Key)。
SQL 规定,主键长度不能超过 900 个字节。Oracle 规定,主键不能超过 32 个字段。
如果 website 表和 id 字段都已经存在,则可以使用 ALTER TABLE 命令添加主键,语法如下:
如果 website 表已经存在,则可以使用下面的 SQL 语句在 id 和 url 字段上添加主键:
主键必须包含唯一值,换句话说,所有记录的主键都不能出现相同的值。此外,主键必须是一个具体的值,不能是 NULL 值。
当主键包含多个字段时,又称为复合键(Composite Primary Key)。
注意事项
在设计主键时,应使用尽可能少的字段,这不但能减少存储空间,还能提升查询性能。主键包含的字段越少,所需要的存储空间就越小,就性能而言,更少的数据意味着更快速地处理。SQL 规定,主键长度不能超过 900 个字节。Oracle 规定,主键不能超过 32 个字段。
示例
下面的 SQL 语句将创建 website 表,并将 id 字段定义为主键:CREATE TABLE website ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, url VARCHAR(30), age TINYINT UNSIGNED NOT NULL, alexa INT UNSIGNED NOT NULL, uv FLOAT DEFAULT '0', country CHAR(3) NOT NULL , PRIMARY KEY (id) );最后一行将 id 字段定义为主键。
如果 website 表和 id 字段都已经存在,则可以使用 ALTER TABLE 命令添加主键,语法如下:
ALTER TABLE website ADD PRIMARY KEY (id);注意,只有在首次创建数据表时,那些被声明为不能包含 NULL 值的字段,才能使用 ALTER TABLE 命令添加为主键。
主键包含多个字段
在创建数据表时,为多个字段添加主键可以使用下面的 SQL 语句:CREATE TABLE website ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, url VARCHAR(30), age TINYINT UNSIGNED NOT NULL, alexa INT UNSIGNED NOT NULL, uv FLOAT DEFAULT '0', country CHAR(3) NOT NULL , PRIMARY KEY (id, url) );最后一行将 id 和 url 字段设置为主键。
如果 website 表已经存在,则可以使用下面的 SQL 语句在 id 和 url 字段上添加主键:
ALTER TABLE website ADD CONSTRAINT PK_CUSTID PRIMARY KEY (id, url);
删除主键
使用下面的语句可以删除表的主键约束:ALTER TABLE website DROP PRIMARY KEY;