SQL 主键
SQL主键
SQL 主键 是一个列(或列的组合),它在数据库表中唯一标识每个记录。主键还加速数据访问,并用于建立表之间的关系。
即使一个表只能有一个主键,它可以在一个或多个字段上定义。当一个主键在一个表的多个字段上创建时,它被称为复合键。
假设您正在开发一个名为”客户管理系统”的应用程序,用于处理会员度假村的全部客户数据。这些数据可以包括他们的个人详细信息、分配的会员ID、他们选择的其他会员信息等。在此数据库中创建的所有表中,会员ID用于区分客户。因此,该字段将成为主键。
下面是一个包含客户个人详细信息的CUSTOMERS表的图表。我们可以看到,主键在CUST_ID列上定义。使用这个主键,我们可以检索任何客户的唯一记录。
要记住的要点
以下是PRIMARY KEY的一些关键要点:
- 它只包含一个唯一值。
-
它不能为空。
-
一个表只能有一个主键。
-
主键的长度不能超过900字节。
创建SQL主键
在使用CREATE TABLE语句创建表时,您可以通过指定列名和关键字“PRIMARY KEY”在表的特定列上添加主键约束。
语法
以下是将表的某个列定义为主键的语法:
示例
在下面的示例中,我们尝试在SQL数据库中创建一个名称为CUSTOMERS的表,该表包含各种字段。在创建表时,我们将在名为ID的列上添加约束“PRIMARY KEY”。
输出
以下是上述SQL语句的输出结果 –
验证
正如我们所知,主键值必须是唯一的,因此您不能插入具有相同ID的记录。在这里,我们将通过插入具有重复ID值的记录来验证在ID列上创建的约束。
首先,让我们向CUSTOMERS表中插入一条记录 –
现在,让我们插入一个具有相同ID的记录-
正如我们在上面提到的,如果数据库表中的任何字段/列被定义为主键,那么两条记录在该列/字段中不能有相同的值。因此,第二个插入语句会生成以下错误-
同样地,主键列不能包含空值。在这里,我们使用INSERT语句向主键列(ID)传递了一个空值(NULL)。
这个语句会生成以下错误−
在已有列上创建主键
我们还可以使用 ALTER TABLE 语句在表的现有列上添加PRIMARY KEY约束。
语法
以下是在表的现有列上创建主键约束的语法:
示例
在此示例中,我们正在向现有的CUSTOMERS表的NAME列添加PRIMARY KEY约束。
输出
以下是上述语句的输出结果-
删除SQL主键
如果你可以在表中的某列上添加一个主键约束,那么你也可以删除它。这可以通过使用ALTER TABLE… DROP语句来完成。
语法
以下是从表的列中删除主键约束的ALTER TABLE语句的语法:
示例
让我们考虑一个名为CUSTOMERS的表,我们在名为ID的列上创建了一个主键约束。您可以通过执行以下语句从列ID中删除此约束 –
输出
上述 SQL 查询产生以下输出 –
验证
由于我们从名为ID的列中删除了主键,因此我们可以插入具有相同ID的多条记录。以下语句插入了四条具有相同ID的记录-
如果您验证此表的内容,您会发现有多条具有相同 ID 的记录 –
该表将显示为 –
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 |