📜  SQL Server主键

📅  最后修改于: 2020-12-02 05:01:25             🧑  作者: Mango

SQL Server主键

SQL Server主键是单个字段或字段组合,用于唯一地定义一条记录。主键的任何字段都不能包含空值。一个表只能有一个主键。

您可以在CREATE TABLE语句或ALTER TABLE语句中定义主键。

使用CREATE TABLE语句创建主键

句法:

CREATE TABLE table_name
( 
  column1 datatype [ NULL | NOT NULL ] [ PRIMARY KEY ],
  column2 datatype [ NULL | NOT NULL ],
  ...
); 

要么

CREATE TABLE table_name
( 
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...
  CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ... column_n)
); 

例:

创建一个表“ cricketers”,其中“ cricketer_id”是主键。

CREATE TABLE cricketers
( cricketer_id INT PRIMARY KEY,
  last_name VARCHAR(50) NOT NULL,
  first_name VARCHAR(50) NOT NULL,
  salary MONEY
); 

输出:

您可以使用SELECT命令验证创建的表:

SELECT * 
FROM [javatpoint].[dbo].[cricketers]  

输出:

这里cricketer_id是主键。

您还可以使用第二种语法创建具有主键的表:

例:

CREATE TABLE cricketers2
( cricketer_id INT,
  last_name VARCHAR(50) NOT NULL,
  first_name VARCHAR(50) NOT NULL,
  salary MONEY,
  CONSTRAINT cricketers2_pk PRIMARY KEY (cricketer_id)
); 

输出:

您可以使用SELECT命令验证创建的表:

SELECT * 
FROM [javatpoint].[dbo].[cricketers2]  

输出:

在主键有多个字段的SQL Server中创建一个主键:

例:

CREATE TABLE cricketers3
( last_name VARCHAR(50) NOT NULL,
  first_name VARCHAR(50) NOT NULL,
  salary MONEY,
  CONSTRAINT cricketers3_pk PRIMARY KEY (last_name, first_name)
);

输出:

您可以使用SELECT命令验证创建的表:

SELECT * 
FROM [javatpoint].[dbo].[cricketers3]  

输出:

在这里,last_name和first_name都是主键。

使用ALTER TABLE语句创建主键

您可以使用ALTER TABLE语句仅在已经定义为NOT NULL的一个或多个列上创建主键。

如果表的某列具有NULL值,则不能添加主键而不删除并重新创建该表。

句法:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ... column_n);

例:

在表“ cricketers2”中创建一个主键“ cricketer_id”。

ALTER TABLE [javatpoint].[dbo].[cricketers2]
ADD CONSTRAINT cricketers2_pk PRIMARY KEY (cricketer_id);

输出:

它将在“ cricketers2”表中创建一个主键“ cricketer_id”。