首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数据库造神计划第十天---数据库约束(1)

数据库造神计划第十天---数据库约束(1)

作者头像
寻星探路
发布2025-12-17 19:11:23
发布2025-12-17 19:11:23
1380
举报
文章被收录于专栏:CSDN博客CSDN博客

一、什么是数据库约束

数据库约束是指对数据库表中的数据所施加的规则或条件,用于确保数据的准确性和可靠性。这些约束可以是基于数据类型、值范围、唯⼀性、非空等规则,以确保数据的正确性和相容性。

二、约束类型

1、not null空约束

定义表时某列不允许为null时,可以为列添加非空约束。(相当于注册账号时的必填项)

1.1创建⼀个学生表

学生名为null时,这条记录是不完整的

代码语言:javascript
复制
drop table if exists student;
create table student(
    id bigint,
    name varchar(20)
);

# 插⼊数据
insert into student values (1, null);

# 查询
select * from student;
1.2此时需要约束学生名的列不能为null
代码语言:javascript
复制
drop table if exists student;

# 为所有列添加⾮空约束
create table student (
    id bigint,
    name varchar(20) NOT NULL
);

# 由于name列有⾮空约束,插⼊NULL值时报错
insert into student values (1, null);
代码语言:javascript
复制
# 正常值可以成功插⼊
insert into student values (1, '张三');

select * from student;
1.3查看表结构

NULL列为NO表示值不允许为NULL,YES表示值可以为NULL

代码语言:javascript
复制
desc student;

2、default默认值约束

default约束用于向列中插⼊默认值,如果没有为列设置值,那么会将默认值设置到该列

2.1重构学生表

新增年龄列

代码语言:javascript
复制
drop table student;

# 创建学⽣表,加⼊年龄列
create table student (
    id bigint,
    name varchar(20) not null,
    age int
);

插入⼀条记录,没有设置默认约束时,不指定年龄的值时列为NULL

代码语言:javascript
复制
insert into student(id, name) values (1, '张三');

select * from student;
2.2重构学生表

为年龄的列加入默认约束

代码语言:javascript
复制
drop table student;

# 为年龄列加⼊默认约束
create table student (
    id bigint,
    name varchar(20) not null,
    age int default 18
);

插入⼀条记录,不指定年龄的值时列使用了默认值

代码语言:javascript
复制
insert into student(id, name) values (1, '张三');

select * from student;
2.3查看表结构

年龄列的默认值为18

代码语言:javascript
复制
desc student;

当手动明确指年龄列为NULL时列值为NULL

代码语言:javascript
复制
insert into student(id, name, age) values (2, '李四', NULL);

3、unique唯一约束

指定了唯⼀约束的列,该列的值在所有记录中不能重复,如⼀个⼈的身份证号,学生的学号等

3.1重构学生表

新增学号列

代码语言:javascript
复制
drop table student;

# 学号列设置唯⼀约束
create table student (
    id bigint,
    name varchar(20) not null,
    age int DEFAULT 18,
    sno varchar(10)
);

不设置唯⼀约束时,学号可以重复

代码语言:javascript
复制
insert into student(id, name, sno) values (1, '张三', '100001');

insert into student(id, name, sno) values (2, '李四', '100001');

select * from student;
3.2重构学生表

为学号列设置唯⼀约束

代码语言:javascript
复制
drop table student;

create table student (
    id bigint,
    name varchar(20) not null,
    age int DEFAULT 18,
    sno varchar(10) UNIQUE# 唯⼀约束
);

插入重复的学号时报错,唯⼀约束生效

代码语言:javascript
复制
insert into student(id, name, sno) values (1, '张三', '100001');
代码语言:javascript
复制
insert into student(id, name, sno) values (2, ' 李四 ', '100001');
代码语言:javascript
复制
select * from student;
3.3查看表结构

Key列显示UNI表示唯⼀约束

代码语言:javascript
复制
 desc student;

#注:

distinct本来数据库服务器存储的内容中,已经有重复的了。展示给用户的时候,展示的是去重的结果

unique 是存的数据就不能重复(重复的数据存不下去),查询的结果自然也是不重复的

由于内容较多,会分为多篇讲解,预知后续内容,请看后续博客!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是数据库约束
  • 二、约束类型
    • 1、not null空约束
      • 1.1创建⼀个学生表
      • 1.2此时需要约束学生名的列不能为null
      • 1.3查看表结构
    • 2、default默认值约束
      • 2.1重构学生表
      • 2.2重构学生表
      • 2.3查看表结构
    • 3、unique唯一约束
      • 3.1重构学生表
      • 3.2重构学生表
      • 3.3查看表结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档