5.1 主键约束

打印 上一主题 下一主题

主题 862|帖子 862|积分 2586

主键约束(PRIMARY KEY)


目录

SQL Server PRIMARY KEY(主键)约束简介

主键是唯一标识表中每一行的一列或一组列。您可以使用主键约束为表创建主键。
如果主键仅包含一列,你可以使用PRIMARY KEY约束作为列约束:
  1. CREATE TABLE table_name (
  2.     pk_column data_type PRIMARY KEY,
  3.     ...
  4. );
复制代码
如果主键有两列或多列,则必须将主键约束用作表约束:
  1. CREATE TABLE table_name (
  2.     pk_column_1 data_type,
  3.     pk_column_2 data type,
  4.     ...
  5.     PRIMARY KEY (pk_column_1, pk_column_2)
  6. );
复制代码
每个表只能包含一个主键,一个主键可以包含多个列,即多个列的组合不能重复。参与主键的所有列必须定义为NOT NULL。如果未为所有主键列指定NOT NULL约束,SQL Server会自动为这些列设置非空约束。
SQL Server PRIMARY KEY约束示例

以下示例创建了一个具有主键的表,主键由一列组成:
  1. CREATE TABLE dbo.activities (
  2.     activity_id INT PRIMARY KEY IDENTITY,--主键
  3.     activity_name VARCHAR (255) NOT NULL,
  4.     activity_date DATE NOT NULL
  5. );
复制代码
在表dbo.activities中,activity_id列是主键列,意味着这一列的值不能重复
IDENTITY属性用于activity_id列自动生成唯一的整数值。
下面创建一个由两列组成外键的新表:
  1. CREATE TABLE dbo.participants(
  2.     activity_id int,
  3.     customer_id int,
  4.     PRIMARY KEY(activity_id, customer_id)
  5. );
复制代码
在本例中,activity_id或customer_id列中的值可以重复,但两列中的每个值组合都必须是唯一的。
通常,表总是在创建时定义主键。然而,有时,现有表可能没有定义主键。在这种情况下,可以使用ALTER TABLE语句向表中添加主键。比如示例:
先创建一个没有主键列的表:
  1. CREATE TABLE dbo.events(
  2.     event_id INT NOT NULL,
  3.     event_name VARCHAR(255),
  4.     start_date DATE NOT NULL,
  5.     duration DEC(5,2)
  6. );
复制代码
然后使event_id列成为主键:
  1. ALTER TABLE sales.events
  2. ADD PRIMARY KEY(event_id);
复制代码
注意,如果 sales.events 表已经有数据,在将 event_id 列提升为主键之前,必须确保 event_id 中的值是不重复的。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表