news 2026/6/17 18:06:13

数据库3.0

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库3.0

1.数据库约束

是关系型数据库的一个重要功能

主要作用是保证数据的完整性,也可以理解为数据的正确性(数据本身是否正确,关联关系是否正确)人工检查数据完整性的工作量非常大,在数据表中定义一些约束,在数据库写入数据的时候数据库会帮我们做校验工作约束一般是指定在列上的

1.1约束类型

1.2 NULL约束

创建表时,可以指定某列不为空:

NOT NULL - 指示某列不能存储 NULL 值。

没有指定非空约束时,当前的列是可以写入一个NULL值的

如果要把某一列定义为一个必填项,那么就可以使用not null(非空)约束

创建表时在相对的字段加入约束类型

当插入id字段为null时

提示不能写入NULL值数据库帮我们做了一次校验

非空列有值才能正常写入

1.3 UNIQUE:唯一约束

保证某列的每行必须有唯一的、不重复的值:

例如:身份证号 银行卡号 电话号........

可以发现不加唯一约束的时候,可能出现编号相同,但是人名不同的情况不符合逻辑

创建一个在ID字段加唯一约束的表

在表中插入相同的id

可以发现由于id设定了唯一约束 当出现相同的时候就会报错

NULL可以重复插入

1.4 DEFAULT:默认值约束

规定没有给列赋值时的默认值

插入时只指定了ld,这时name列使用默认值填充
当为某列设置了默认约束的时候,如果不给这个列指定值才会使用默认约束

虽然指定的默认约束,但是当我们手动指定这一列的值为NULL时插入的值依然是NULL,因为这个NULL 是我们自己手动指定的,也可以理解为我们想要的值用户指定的优先级要高于默认约束

1.5 PRIMARY KEY:主键约束

NOT NULL 和 UNIQUE 的结合(主键约束的列既是非空的又是唯一的)。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。

把表中的某一列设置成非空且唯一 (强烈建议为每张表定义一个主键

写入数据时两个约束同时生效

PRIMARY KEY:主键约束

在写入数据时,不具体指定主键列的值,而是用NULL代替

指定列插入

写入数据错误

再次写入新数据

当insert 操作时,都会先生成一个主键值不论记录写入成功与否,这个主键值都会视为已使用

重新定义新的主键可以吗?

只要主键值不重复就能写入

再次指定列新增数据就会在最大值的基本上加1,那么主键值在数据表有可能是不连续的

多主键?

一个主键同时可以包含多个列(复合主键)

主键包含的列值都相同

编号相同 姓名不同

1.6 FOREIGN KEY:外键约束

外键用于关联其他表的主键或唯一键

建立学生表和班级表

写入一条不存在的班级

删除学生表 建立新的并加入外键

建表插入数据 再次尝试插入不存在的班级学生信息

删除主表数据

当子表中存在对主表的依赖的时候,那么能不能删除主表中相应的记录?

依然会报一个主外键关系的错误

如果要删除主表中的记录,子表中不能有对该条记录的依赖也就意味要先删除子表中的记录,再去删除主表中的记录

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 1:05:17

如何快速掌握PHP数据库连接:phpClickHouse完整入门指南

如何快速掌握PHP数据库连接:phpClickHouse完整入门指南 【免费下载链接】phpClickHouse php ClickHouse wrapper 项目地址: https://gitcode.com/gh_mirrors/ph/phpClickHouse phpClickHouse是一个专为ClickHouse列式数据库设计的PHP客户端库,提供…

作者头像 李华
网站建设 2026/6/17 3:25:48

shadPS4模拟器实用排障指南:让PS4游戏在PC上畅玩

还在为shadPS4模拟器运行不畅而烦恼吗?作为一款正在积极开发中的PS4模拟器,shadPS4让玩家能够在Windows、Linux和macOS系统上体验PS4游戏。但作为早期版本,遇到各种技术问题在所难免。本指南将用全新的视角,带你快速定位并解决最常…

作者头像 李华
网站建设 2026/6/14 17:35:10

7个技巧掌握Blender程序化飞船生成核心技术

7个技巧掌握Blender程序化飞船生成核心技术 【免费下载链接】SpaceshipGenerator A Blender script to procedurally generate 3D spaceships 项目地址: https://gitcode.com/gh_mirrors/sp/SpaceshipGenerator 传统3D建模需要数小时的手工雕琢,而程序化生成…

作者头像 李华
网站建设 2026/6/12 6:27:21

Python基础四:注释、标识符、字面量VS变量

一、注释 Python注释是代码中不会被Python解释器执行的文本,用于对代码进行说明、注解或暂时禁用代码。它的核心作用是给人看的,以提高代码的可读性和可维护性。 Python注释有两种主要写法: (一)单行注释 使用井号#,# 之后直到行尾的所有内容都会被忽略。行内注释属于…

作者头像 李华
网站建设 2026/6/16 22:33:41

Java,集合框架体系

Java集合框架体系概要 java.util包下 java.util.Collection:存储一个一个数据 子接口:List:存储有序的、可重复的数据(“动态”数组) ArrayList(主要实现类)、LinkedList、Vector 子接口&…

作者头像 李华
网站建设 2026/6/16 18:02:21

JVC DSP功放调音终极指南:多型号版本V1.09快速上手

JVC DSP功放调音终极指南:多型号版本V1.09快速上手 【免费下载链接】JVCDSP功放调音软件多型号版本V1.09 JVC DSP功放调音软件多型号版本V1.09专为JVC用户设计,提供便捷高效的调音体验。支持KS-DR420P、KS-DR480P、KS-AX810P、KS-AX1220P及KS-AX1012HP等…

作者头像 李华