在用于存储和检索数据的数据库中,密钥非常重要。 SQL和NOSQL数据库都具有密钥的概念。
在SQL中,键是表中用于识别特定行并在表之间找到或创建关系的表中的字段。
密钥被认为有用,因为以下
- 在两个表之间建立关系。
- 在数据库中保持数据一致和有效。
- 有助于快速检索数据。
- 保持表中的独特性
SQL支持各种类型的密钥:
- 主键
- 候选钥匙
- 唯一键
- 复合键
- 超钥匙
- 替代键
- 外键
注意:您应该安装 mysql 关系数据库管理系统(RDBMS)
首要的关键
创建一个主键是为了在表中唯一识别每个记录。标记为主键的列不允许具有零值。它在整列中保持独特的值。
一张表只有一个主键,尽管在某些情况下可以使用两个列来得出其主键。
提示:请参见下面 - 复合键。
创建表时可以使用创建语句定义主键。
将主键添加到一个表
CREATE TABLE Product(
product_id INT NOT NULL PRIMARY KEY,
product_name VARCHAR(200) NOT NULL
)
用主键创建表的另一种方法
CREATE TABLE Product(
product_id INT NOT NULL,
product_name VARCHAR(200) NOT NULL,
PRIMARY KEY (product_id)
)
假设您在第一次创建表时没有定义主键,您可以使用Alter Tabt命令以后定义它:
ALTER TABLE Product
ADD CONSTRAINT PK_Product PRIMARY KEY (product_id);
候选密钥
候选键是可以用作主键的表的键。表可以由多个候选密钥组成;其中,可以选择一个主要键。任何可以选择为主要键的列,该列或列是候选密钥。
CREATE TABLE Students(
id PRIMARY KEY NOT NULL,
first_name VARCHAR(100),
last_name VARCHAR(100),
email VARCHAR(255) NOT NULL,
registration_number NOT NULL,
ssn integer NOT NULL,
residence VARCHAR(200)
)
ID,注册_number和社会保险号(SSN)是候选密钥。我们已经确定了ID作为主要密钥。如果我们从表中删除/删除ID,则可以作为主要键。这是因为每个属性都是每个学生独有的。有两个具有相同注册号或社会保险号的学生是不对的。
独特的钥匙
唯一的键可以像主键一样唯一地识别表中的每一行。但是,与主键不同,唯一键只能具有一个空值,并且不允许在列中重复值。在学生表中,注册_nos被确定为唯一的键。我们不能有两个学生拥有相同的注册号。
CREATE TABLE Students(
id PRIMARY KEY NOT NULL,
first_name VARCHAR(100),
last_name VARCHAR(100),
email VARCHAR(100) NOT NULL,
registration_number VARCHAR(100) NOT NULL UNIQUE,
ssn INT NOT NULL,
residence VARCHAR(200)
)
复合键
创建表格时,可能会出现一个情况,而单列没有提供足够的独特信息来充当主要键。在这种情况下,表中的两列将被合并为主要键。
当表中的主要键由两个或多个列组成时,我们有一个复合键。
复合键也可以称为化合物或串联键。
CREATE TABLE sales_order(
customer_id VARCHAR(150) NOT NULL,
order_id INT NOT NULL,
product_code VARCHAR(150) NOT NULL,
PRIMARY KEY (customer_id, product_code)
)
customer_id order_id product_code
-------- -------- ------------
C01 O001 P007
C02 O123 P007
C02 O123 P230
C01 O001 P890
单独的这些列都无法作为主要键的角色。
customer_id不能成为关键,因为同一客户可以下达多个订单,因此相同的客户可以具有多个条目。
order_id本身不能是主要键,因为相同的顺序可以包含多个产品的顺序,因此可以多次出现相同的订单_id。
product_code不能成为主要键,因为一个以上的客户可以下订单相同的产品。
基于此,可以肯定地假设主键应从一个以上的列中得出:上表中的主键可以从:{customer_id,product_code}
中。超键
这是一组列,可以唯一地标识表中的每一行。它是两个或多个列的组合,可用于在表中唯一识别记录。
备用密钥
备用密钥是一个候选密钥,目前尚未选择为主键。它可以用作主要密钥,但目前不是主要键。备用键也可以称为辅助键。
SSN,上述学生表中的registration_number是替代键的示例。
外键
外键是表中的一列,该列被用作另一个表中的主要键。它可以接受多个零值和重复值。在学生表中,DEPT_ID列将其标识为外键,因为它是部门表中的主要钥匙,并且将每个学生与部门联系起来(每个学生都必须属于部门)。
CREATE TABLE Department (
dept_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
location VARCHAR(200) NOT NULL
)
CREATE TABLE Students (
id PRIMARY KEY NOT NULL,
first_name VARCHAR(100),
last_name VARCHAR(100),
email VARCHAR(255) not null,
registration_nos NOT NULL UNIQUE,
ssn INT NOT NULL,
residence VARCHAR(200),
dept_id INT FOREIGN KEY REFERENCES Department(dept_id)
)
结论
对关系数据库中密钥的知识以及如何定义和使用它们是任何SQL开发人员或管理员的重要概念。
在本文中,我们研究了不同类型的密钥,如何使用它们以及它们如何相互关系。
请留下您的评论和评论,这对我有帮助。
上与我联系