SQL 数据库设计:设置主键、外键、约束和自动编号

本文将演示如何使用 SQL 语句为数据库表设置主键、外键、唯一约束、默认值约束、检查约束和自动编号标识列。

数据表结构:

CREATE TABLE personal_info (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  gender VARCHAR(10),
  birthdate DATE,
  id_number VARCHAR(20),
  phone VARCHAR(20),
  email VARCHAR(50)
);

CREATE TABLE education (
  id INT PRIMARY KEY,
  degree VARCHAR(50),
  major VARCHAR(50),
  school VARCHAR(50),
  start_date DATE,
  end_date DATE
);

CREATE TABLE work_experience (
  id INT PRIMARY KEY,
  company VARCHAR(50),
  position VARCHAR(50),
  start_date DATE,
  end_date DATE,
  job_description VARCHAR(500)
);

CREATE TABLE skills (
  id INT PRIMARY KEY,
  skill_name VARCHAR(50),
  proficiency VARCHAR(20)
);

CREATE TABLE languages (
  id INT PRIMARY KEY,
  language_name VARCHAR(50),
  proficiency VARCHAR(20)
);

设置主键、外键和约束:

-- 设置 personal_info 表的主键和自动编号的标识列
ALTER TABLE personal_info ADD CONSTRAINT pk_personal_info PRIMARY KEY (id);
ALTER TABLE personal_info ALTER COLUMN id INT IDENTITY(1,1);

-- 设置 education 表的主键和外键
ALTER TABLE education ADD CONSTRAINT pk_education PRIMARY KEY (id);
ALTER TABLE education ADD CONSTRAINT fk_education_personal_info FOREIGN KEY (id) REFERENCES personal_info(id);

-- 设置 work_experience 表的主键和外键
ALTER TABLE work_experience ADD CONSTRAINT pk_work_experience PRIMARY KEY (id);
ALTER TABLE work_experience ADD CONSTRAINT fk_work_experience_personal_info FOREIGN KEY (id) REFERENCES personal_info(id);

-- 设置 skills 表的主键和外键
ALTER TABLE skills ADD CONSTRAINT pk_skills PRIMARY KEY (id);
ALTER TABLE skills ADD CONSTRAINT fk_skills_personal_info FOREIGN KEY (id) REFERENCES personal_info(id);

-- 设置 languages 表的主键和外键
ALTER TABLE languages ADD CONSTRAINT pk_languages PRIMARY KEY (id);
ALTER TABLE languages ADD CONSTRAINT fk_languages_personal_info FOREIGN KEY (id) REFERENCES personal_info(id);

-- 设置 personal_info 表的唯一约束和默认值约束
ALTER TABLE personal_info ADD CONSTRAINT uc_personal_info_id_number UNIQUE (id_number);
ALTER TABLE personal_info ALTER COLUMN gender VARCHAR(10) DEFAULT 'unknown';

-- 设置 education 表的检查约束
ALTER TABLE education ADD CONSTRAINT chk_education_dates CHECK (end_date >= start_date);

说明:

  • ALTER TABLE ... ADD CONSTRAINT ... PRIMARY KEY ...: 添加主键约束。
  • ALTER TABLE ... ALTER COLUMN ... IDENTITY(1,1): 为列设置自动编号标识列,从 1 开始,每次递增 1。
  • ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEY ...: 添加外键约束,指定关联的表和列。
  • ALTER TABLE ... ADD CONSTRAINT ... UNIQUE ...: 添加唯一约束,确保列中没有重复值。
  • ALTER TABLE ... ALTER COLUMN ... DEFAULT ...: 设置默认值约束,在插入数据时,如果未提供值,则使用默认值。
  • ALTER TABLE ... ADD CONSTRAINT ... CHECK ...: 添加检查约束,用于限制列的值范围或满足特定条件。

注意:

  • 外键约束需要确保目标表中存在相关数据。
  • 检查约束的条件必须始终为 true,否则插入或更新操作将失败。

本教程演示了如何在 SQL 数据库中设置主键、外键、唯一约束、默认值约束、检查约束和自动编号标识列。这些约束有助于确保数据完整性、一致性和有效性。

SQL 数据库设计:设置主键、外键、约束和自动编号

原文地址: https://www.cveoy.top/t/topic/fYr3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录