SQL 中的不同类型的键

发布:2024-10-01 16:50 阅读:707 点赞:0

今天,我们将学习 SQL 中的不同类型的键。基本上,SQL 中有以下几种类型的键:

1. 主键 (Primary Key)

主键是 SQL 表的基本键,用于标识表中的唯一行。定义主键时,必须包含唯一值,不能为 null。

CREATE TABLE Employees (
    EmployeeID   INT           PRIMARY KEY,
    Name         VARCHAR(100)  NOT NULL,
    EmployeeNo   VARCHAR(100)  NOT NULL,
    Email        VARCHAR(200)  NOT NULL,
    Active       BIT           NOT NULL,
    Phone        VARCHAR(20)   NULL,
    CreatedDate  DATETIME      NOT NULL
);

2. 外键 (Foreign Key)

外键与主键相关,是另一张表中的主键。它用于在表之间建立连接。

CREATE TABLE Employees (
    EmployeeID   INT          PRIMARY KEY,
    Name         VARCHAR(100NOT NULL,
    EmployeeNo   VARCHAR(100NOT NULL,
    Email        VARCHAR(200NOT NULL,
    Active       BIT          NOT NULL,
    Phone        VARCHAR(20)  NULL,
    CreatedDate  DATETIME     NOT NULL
);

CREATE TABLE EmployeeFiles (
    EmployeeFileID INT          PRIMARY KEY,
    EmployeeID     INT,
    CreatedDate    DATETIME     NOT NULL,
    FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);

3. 唯一键 (Unique Key)

唯一键确保表中每行的值是唯一的。与主键类似,但允许列中的 null 值。

CREATE TABLE Employees (
    EmployeeID   INT          PRIMARY KEY,
    Name         VARCHAR(100NOT NULL,
    EmployeeNo   VARCHAR(100NOT NULL,
    Email        VARCHAR(200NOT NULL UNIQUE,
    Active       BIT          NOT NULL,
    Phone        VARCHAR(20)  NULL,
    CreatedDate  DATETIME     NOT NULL
);

4. 复合键 (Composite Key)

复合键用于基于两个列的唯一性要求。它基本上是多个列上的主键。

CREATE TABLE Employees (
    EmployeeID   INT IDENTITY(1,1),
    Name         VARCHAR(100NOT NULL,
    EmployeeNo   VARCHAR(100NOT NULL,
    Email        VARCHAR(200NOT NULL,
    Active       BIT          NOT NULL,
    Phone        VARCHAR(20)  NULL,
    CreatedDate  DATETIME     NOT NULL,
    PRIMARY KEY (EmployeeNo, Email)
);

5. 替代键 (Alternate Key)

当多个键被添加到表中,除了主键之外,所有的键被称为替代键。

CREATE TABLE Employees (
    EmployeeID   INT          PRIMARY KEY,
    Name         VARCHAR(100NOT NULL,
    EmployeeNo   VARCHAR(100NOT NULL UNIQUE,
    Email        VARCHAR(200NOT NULL UNIQUE,
    Active       BIT          NOT NULL,
    Phone        VARCHAR(20)  NULL,
    CreatedDate  DATETIME     NOT NULL
);

6. 替代键 (Surrogate Key)

当表的主键作为唯一标识符时,称之为替代键。它可以是数据库生成的或由其他应用程序生成的。

CREATE TABLE Employees (
    EmployeeID   INT IDENTITY(1,1) PRIMARY KEY,
    Name         VARCHAR(100)      NOT NULL,
    EmployeeNo   VARCHAR(100)      NOT NULL UNIQUE,
    Email        VARCHAR(200)      NOT NULL UNIQUE,
    Active       BIT               NOT NULL,
    Phone        VARCHAR(20)       NULL,
    CreatedDate  DATETIME          NOT NULL
);