SQL 替代键

SQL 替代键

SQL 替代键

数据库表中的SQL 替代键 是未选择为主键的候选键。它们可以用于在表中唯一标识一条元组(或一条记录)。

在表中没有特定的查询或语法来设置替代键。它只是一个接近候选键的列,可以被选择为主键。因此,它们也被称为次要候选键。

如果数据库表只包含一个候选键,那么该候选键被视为该表的主键,那么该表中就没有替代键。

让我们通过一个例子来理解替代键的概念。假设我们有一个名为CUSTOMERS的表,包含诸如ID、NAME、AGE、AADHAAR_ID、MOBILE_NO和SALARY等各种字段,如下所示。

SQL 替代键

客户的详细信息,如ID、手机号和Aadhaar号码,是唯一的,我们可以通过它们各自的字段(ID、AADHAAR_ID和MOBILE_NO)唯一地识别CUSTOMERS表中的记录。因此,这三个字段可以被视为候选键。

其中,如果将一个字段声明为CUSTOMERS表的主键,那么剩下的两个字段将成为备用键。

备用键的特点

备用键具有以下一些重要属性/特点:

  • 备用键不允许重复值。
  • 一张表可以有多个备用键。
  • 备用键可以包含NULL值,除非显式设置了NOT NULL约束。
  • 所有备用键都可以是候选键,但不是所有候选键都可以是备用键。
  • 主键(也是候选键)不能被视为备用键。

示例

为了更好地理解,让我们创建上述讨论的表,演示各种键的用法,并说明可以被视为备用键的字段。

CREATE TABLE CUSTOMERS(
   ID INT,
   NAME VARCHAR (20),
   AGE INT,
   AADHAAR_ID BIGINT,
   MOBILE_NO BIGINT,
   SALARY DECIMAL (18, 2),
   PRIMARY KEY(ID)      
);

现在,使用如下所示的INSERT语句向CUSTOMERS表中插入一些记录:

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', 32, 90123498456, 9023456789, 22000.00 ),
(2, 'Khilan', 25, 91123249545, 9032456578, 24500.34 ),
(3, 'Kaushik', 23, 91223242546, 9012436789, 20000.12 );
这个表将被创建为: ID NAME AGE AADHAAR_ID MOBILE_NO SALARY
1 Ramesh 32 90123498456 9023456789 22000.00
2 Khilan 25 91123249545 9032456578 24500.34
3 Kaushik 23 91223242546 9012436789 20000.12

表中的键

作为总结,让我们回顾一下数据库表中的所有键 –

候选键

候选键 是用于唯一标识表记录的超键的子集。它可以是单个字段或多个字段。表中的主键、备用键和外键都是候选键的类型。

主键

主键 是用于从表中检索记录的主要键。它是表中的单个列或字段,可以唯一标识数据库表中的每条记录。

可以在使用CREATE TABLE语句创建表时使用PRIMARY KEY关键字来设置主键。以下是在表的列上创建主键约束的基本语法 –

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

外键

一个表的主键将作为另一个表中的外键。在向这些表中插入值时,主键字段的值必须与外键字段中的值匹配;否则,外键列将不接受INSERT查询并抛出错误。

在SQL服务器中,设置表中外键字段的语法为−

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
    CONSTRAINT fk_name 
    FOREIGN KEY (column_name) 
    REFERENCES referenced_table(referenced_column)
);

备用键

备用键 是一个候选键,可以成为主键,但不是主键。与主键类似,它也能在表的一个字段中唯一地标识记录,以检索来自该表的行元组。在表中,可以有一个或多个字段被标识为备用键。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程