目录1.数据库的约束1.1 定义1.2 约束类型1.3 非空约束(not null)1.4 默认约束(default)1.5 唯一约束(unique)1.6 主键约束(primary key)1.6.1 自增主键(auto_increment)1.7 外键约束(foreign key)1.8 check约束2. 数据库设计2.1 范式2.2 第一范式2.3 第二范式2.4 第三范式2.5 数据库的设计过程3. 实体-关系图3.1 E-R图的组成部分3.2实体与实体的关系3.2.1 一对一关系3.2.2 一
数据库约束就像是给数据上了一道保险,通过设定明确的规则和条件,确保每一条数据都准确可靠。

not null约束相当于是给数据列设定了必填项。一旦某个字段被标记为not null,就意味着这个位置必须要有值,不能留空。
create table teacher(id bigint,name varchar(20) not null);
比如这个例子,name字段就被设定为必填项,确保每位老师都有姓名记录。
default约束就像是给数据准备了一个备用方案。当插入数据时没有明确指定某个字段的值,系统就会自动使用预设的默认值来填充。
create table teacher(id bigint,name varchar(20),age bigint default 18);
看到这里,age字段设置了默认值18。这意味着如果新增老师记录时没有填写年龄,系统会自动将其年龄记录为18岁。
unique约束确保的是数据的唯一性——就像每个人的身份证号,不允许出现重复。有意思的是,在数据库的世界里,空值和空值之间不算重复。
create table teacher(id bigint,name varchar(20),age bigint default 18,sno varchar(20) unique);
这里给sno(学号)字段加上了唯一约束,确保每个学号都是独一无二的。
primary key可以说是数据表的身份证,它同时具备了唯一性和非空性两个特点。每个表只能有一个主键,通常用来标识每条记录的唯一身份。
实际操作中,那些具有身份标识作用的字段最适合作为主键,比如老师的工号、学生的学号等。
create table teacher(id bigint primary key,name varchar(20),age bigint default 18,sno varchar(20) unique);
有时候,单一字段不足以唯一标识一条记录,这时候可以采用复合主键:
create table teacher(id bigint,name varchar(20),age bigint,sno varchar(20)primary key(id,name));
自增主键通过primary key auto_increment来定义,特别适合整数类型的列。它会自动在现有最大值的基础上加1,省去了手动编号的麻烦。
create table teacher( id bigint primary key auto_increment, name varchar(20));
不过,自增主键在分布式环境下会遇到挑战。想象一下,当学生表的数据量巨大需要分到多个服务器时,单纯的自增就可能产生重复ID。这时候就需要更复杂的方案来生成全局唯一主键。
常见的解决方案是构建一个字符串ID,通过组合时间戳、机器编号、随机因子等元素生成哈希值,从而确保在任何环境下都能保持唯一性。
外键约束使用foreign key关键字,它在两个表之间建立起约束关系,确保数据的引用完整性。
来看学生表和班级表的例子:

create table student(s_id int, s_name varchar(20), s_sex varchar(20), class_id int); insert into student values (1,'张三','男',1); insert into student values (2,'李四','女',2); insert into student values (3,'王五','男',3); create table class(class_id int, class_name varchar(20)); insert into class values (1,'一班'); insert into class values (2,'二班'); insert into class values (3,'三班');
在没有外键约束的情况下,这两张表可以随意插入数据。但一旦在学生表的class_id上添加外键约束,两个表就正式建立了关联:
create table student(s_id int, s_name varchar(20), s_sex varchar(20), class_id int, foreign key (class_id) references class (class_id));
外键约束的核心作用在于维护表间的数据一致性。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述