- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs 连接
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - 检查约束
- SQL - 默认约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 通用表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - 备选键
SQL 备选键
数据库表中的SQL备选键是指当前未被选为主键的候选键。它们可以用来唯一标识表中的一元组(或记录)。
表中没有设置备选键的特定查询或语法。它只是一个可以被选为主键的次优候选列。因此,它们也称为次要候选键。
如果数据库表只包含一个候选键,则该键被视为表的主键,则该表中没有备选键。
让我们通过一个例子来理解备选键的概念。假设我们有一个名为 CUSTOMERS 的表,其中包含 ID、NAME、AGE、AADHAAR_ID、MOBILE_NO 和 SALARY 等字段,如下所示。
客户的 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 | 姓名 | 年龄 | Aadhaar ID | 手机号码 | 薪水 |
---|---|---|---|---|---|
1 | Ramesh | 32 | 90123498456 | 9023456789 | 22000.00 |
2 | Khilan | 25 | 91123249545 | 9032456578 | 24500.34 |
3 | Kaushik | 23 | 91223242546 | 9012436789 | 20000.12 |
表中的键
作为总结,让我们重新回顾数据库表中的所有键:
候选键
候选键是超键的子集,用于唯一标识表中的记录。它可以是单个字段或多个字段。表中的主键、备选键、外键都是候选键的类型。
主键
主键是用于从表中检索记录的主要键。它是表中单个列或字段,用于唯一标识数据库表中的每个记录。
它可以使用 PRIMARY KEY 关键字在使用 CREATE TABLE 语句创建表时设置。以下是创建表中列的主键约束的基本语法:
CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY(column_name) );
外键
一个表的主键将成为另一个表中的外键。在向这些表插入值时,主键字段中的值必须与外键字段中的值匹配;否则,外键列将不接受INSERT 查询并抛出错误。
在 SQL Server 中,在表中设置外键字段的语法是:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... CONSTRAINT fk_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) );
备选键
备选键是可以作为主键但不是主键的候选键。与主键一样,它也唯一地标识表字段中的记录,以从所述表中检索行元组。表中可以存在一个或多个字段作为备选键。