当前位置: 首页 > article >正文

数据库的约束

数据库约束

数据库对数据的合法性进行校验检查,避免数据库中被插入,修改一些非法的数据。

数据库约束类型

not null - 指示某列不能存储 null值

下图就是具体展示,未进行约束时可以进行填入null,约束之后就不能进行填入,会自动进行报错,此外就算对已有数据进行修改成null也是不行的,同样会报错。注意一点,不能再原表上就行更改约束,要重建一个表并进行约束。

 不能进行修改为约束规定的情况

unique - 保证某列的每行必须有唯一的值

下图案列就可以看出unique就是和它的英文意思一样唯一的,意思是不能频繁插入下同的元素。unique 的使用会拖慢数据库的执行效率,因为每次执行unique都会先执行一次检查,检查是否出现相同。这样就会降低执行的效率。

default默认值用法

default 在插入时没有显式调用时,规定的默认值机会自动进行填补。下面的例子是,运用列插入,只进行了id列的插入,name列并未进行插入这个时候默认值就进行了自动填写。

primary key唯一标识符用法

primary key 确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。注意的是一个表中只能有一个primary key,有多个时无法判断以谁为准。虽然主键只有一个但是不意味着只有一个列有主键,可以通过联合主键(多个列公用一个主键)。

 primary key==unique与not null的结合?

下图实现的是primary的功能,可以出id的列的null显示是not意思是不能为空,key是PRI这里是唯一的意思,因此说primary key是unique与not null的结合。带有主键也是先查询后执行,效率低,但是数据库会对unique和primary自动生成索引进而调高效率。

 如何使用数据库为主键自动赋值

使用 auto_increment可以为主键自动赋值,这里插入时写入的null并不是写进去null,而是表示为输入自动调用数据库服务器的使其自动赋值。

foreign key外键

foreign key (字段名) references 主表(列)

foreign key外键用于描述两个表之间的关联关系。用外键进行约束,内建在不满足外键的情况下就会显示错误。补充:使用外键约束的时候,只对使用的进行约束,意味着可以改变一个表中未使用的列,也是不会报错的。

未用主键进行约束

外键约束是通过主键或者unique,当父表或者子表有一个没进行设置主键就会显示添加外键约束,其次就是当子表和父表的约束一定是基于主键,不是相同的主键也是会显示这种错误的。

外键约束中如何进行删除父表 

父表和子表是相互密切联系,子表是参考父表的,因此要先删除子表再删除父表,另外再子表为null时删除父表也会显示错误的。


http://www.kler.cn/news/308222.html

相关文章:

  • Java4----String
  • 【新片场-注册安全分析报告-无验证方式导致安全隐患】
  • c++元编程tookit类
  • 前端 + 接口请求实现 vue 动态路由
  • 惬意享受阅读,优雅的微信公众号订阅方式,极空间部署『WeWe RSS』
  • Golang | Leetcode Golang题解之第402题移掉K位数字
  • 无人机之防风性能篇
  • deepinlinux-v23用deepinunioncode初始c例子
  • 小程序开发设计-第一个小程序:注册小程序开发账号②
  • godot——tween_method插值,如何处理多参数?参数位置怎么调?
  • oracle 使用 PL/SQL Developer创建表并插入单条、多条数据
  • 【程序人生】《把时间当做朋友》李笑来思维导图
  • Vue 3有哪些新特性
  • 区块链BCS配置选择注意事项
  • 【OJ刷题】双指针问题6
  • react 基础语法
  • OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用
  • 5分钟配置Nginx?(二)
  • 用Facebook广告提升本地业务的影响力
  • redis中的5中数据结构
  • 建筑工程资料保护策略:打造安全的建筑文档管理方案
  • 【SpringBoot3】面向切面 AspectJ AOP 使用详解
  • 2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码
  • 这个时代唯一“不变“的又是{变}
  • Unity for Android使用蓝牙低功耗Bluetooth LE
  • 十.在vue中,发送axios请求应该放在created里还是mounted里?详解
  • 书生大模型全链路开源体系,学习
  • 5G Multicast/Broadcast Services(MBS) (二) Multicast
  • Spring Boot-Session管理问题
  • CentOS7更换阿里云yum更新源