SQL 数据库设计:设置主键、外键、约束和自动编号
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 数据库中设置主键、外键、唯一约束、默认值约束、检查约束和自动编号标识列。这些约束有助于确保数据完整性、一致性和有效性。
原文地址: https://www.cveoy.top/t/topic/fYr3 著作权归作者所有。请勿转载和采集!