SQL 主键

SQL 主键

SQL主键

SQL 主键 是一个列(或列的组合),它在数据库表中唯一标识每个记录。主键还加速数据访问,并用于建立表之间的关系。

即使一个表只能有一个主键,它可以在一个或多个字段上定义。当一个主键在一个表的多个字段上创建时,它被称为复合键。

假设您正在开发一个名为”客户管理系统”的应用程序,用于处理会员度假村的全部客户数据。这些数据可以包括他们的个人详细信息、分配的会员ID、他们选择的其他会员信息等。在此数据库中创建的所有表中,会员ID用于区分客户。因此,该字段将成为主键。

下面是一个包含客户个人详细信息的CUSTOMERS表的图表。我们可以看到,主键在CUST_ID列上定义。使用这个主键,我们可以检索任何客户的唯一记录。

SQL 主键

要记住的要点

以下是PRIMARY KEY的一些关键要点:

  • 它只包含一个唯一值。

  • 它不能为空。

  • 一个表只能有一个主键。

  • 主键的长度不能超过900字节。

创建SQL主键

在使用CREATE TABLE语句创建表时,您可以通过指定列名和关键字“PRIMARY KEY”在表的特定列上添加主键约束。

语法

以下是将表的某个列定义为主键的语法:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY(column_name)
);

示例

在下面的示例中,我们尝试在SQL数据库中创建一个名称为CUSTOMERS的表,该表包含各种字段。在创建表时,我们将在名为ID的列上添加约束“PRIMARY KEY”。

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

输出

以下是上述SQL语句的输出结果 –

Query OK, 0 rows affected (0.03 sec)

验证

正如我们所知,主键值必须是唯一的,因此您不能插入具有相同ID的记录。在这里,我们将通过插入具有重复ID值的记录来验证在ID列上创建的约束。

首先,让我们向CUSTOMERS表中插入一条记录 –

INSERT INTO CUSTOMERS VALUES (3, 'kaushik', 23, 'Kota', 2000.00);

现在,让我们插入一个具有相同ID的记录-

INSERT INTO CUSTOMERS VALUES (3, 'Chaitali', 25, 'Mumbai', 6500.00);

正如我们在上面提到的,如果数据库表中的任何字段/列被定义为主键,那么两条记录在该列/字段中不能有相同的值。因此,第二个插入语句会生成以下错误-

ERROR 1062 (23000): Duplicate entry '3' for key 'customers.PRIMARY'

同样地,主键列不能包含空值。在这里,我们使用INSERT语句向主键列(ID)传递了一个空值(NULL)。

INSERT INTO CUSTOMERS VALUES (null, 'Komal', 22, 'MP', 4500.00);

这个语句会生成以下错误−

ERROR 1048 (23000): Column 'ID' cannot be null

在已有列上创建主键

我们还可以使用 ALTER TABLE 语句在表的现有列上添加PRIMARY KEY约束。

语法

以下是在表的现有列上创建主键约束的语法:

ALTER TABLE table_name ADD CONSTRAINT PRIMARY KEY (column_name);

示例

在此示例中,我们正在向现有的CUSTOMERS表的NAME列添加PRIMARY KEY约束。

ALTER TABLE CUSTOMERS ADD CONSTRAINT PRIMARY KEY(NAME);

输出

以下是上述语句的输出结果-

Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

删除SQL主键

如果你可以在表中的某列上添加一个主键约束,那么你也可以删除它。这可以通过使用ALTER TABLE… DROP语句来完成。

语法

以下是从表的列中删除主键约束的ALTER TABLE语句的语法:

ALTER TABLE table_name DROP PRIMARY KEY;

示例

让我们考虑一个名为CUSTOMERS的表,我们在名为ID的列上创建了一个主键约束。您可以通过执行以下语句从列ID中删除此约束 –

ALTER TABLE CUSTOMERS DROP PRIMARY KEY;

输出

上述 SQL 查询产生以下输出 –

Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

验证

由于我们从名为ID的列中删除了主键,因此我们可以插入具有相同ID的多条记录。以下语句插入了四条具有相同ID的记录-

INSERT INTO CUSTOMERS VALUES 
(3, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(3, 'Hardik', 27, 'Bhopal', 8500.00 ),
(3, 'Komal', 22, 'Hyderabad', 4500.00 ),
(3, 'Muffy', 24, 'Indore', 10000.00 );

如果您验证此表的内容,您会发现有多条具有相同 ID 的记录 –

SELECT * FROM CUSTOMERS;

该表将显示为 –

ID NAME AGE ADDRESS SALARY
3 Kaushik 23 Kota 2000.00
3 Chaitali 25 Mumbai 6500.00
3 Hardik 27 Bhopal 8500.00
3 Komal 22 Hyderabad 4500.00
3 Muffy 24 Indore 10000.00

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程