首页 > 数据库 >【面试准备】【SQL】数据库有哪些约束?

【面试准备】【SQL】数据库有哪些约束?

时间:2024-04-19 11:15:08浏览次数:24  
标签:数据库 SQL 外键 约束 面试 表中 NULL 主键

数据库中的约束(constraints)是用来确保数据库中数据的准确性和可靠性的一种规则。以下是一些常见的数据库约束:

  1. PRIMARY KEY(主键):确保列的值是唯一的,并且不能为NULL。

  2. FOREIGN KEY(外键):用于在两个表之间建立链接,并确保引用的数据的完整性。

  3. UNIQUE(唯一):确保所有列的组合在表中是唯一的,但可以为NULL。

  4. NOT NULL(非空):确保列中的值不能为NULL。

  5. CHECK(检查):确保列中的值满足特定的条件。

  6. DEFAULT(默认):当没有为列提供值时,指定一个默认值。

  7. CASCADE(级联):通常与外键约束一起使用,定义当主键表中的数据被删除或更新时,外键表中相应数据的行为。

  8. SET NULL(设置为NULL):与CASCADE类似,但当主键表中的数据被删除时,外键表中的相关数据将被设置为NULL。

  9. RESTRICT(限制):防止在主键表中删除或更新数据,如果外键表中存在依赖的数据。

  10. EXCLUDE(排除):用于排除某些特定的值组合,确保数据的唯一性。

  11. ENABLE/DISABLE(启用/禁用):用于启用或禁用约束的检查。

  12. DEFERRABLE(可延迟):允许在某些情况下延迟外键约束的检查。

这些约束可以单独使用,也可以组合使用,以确保数据的完整性和一致性。在设计数据库时,合理地应用这些约束是至关重要的。

标签:数据库,SQL,外键,约束,面试,表中,NULL,主键
From: https://www.cnblogs.com/jin-wen-xin/p/18145352

相关文章

  • NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落
    NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法......
  • NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)
    SQL实践系列(2):更多模型使用以及工业级案例NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理NL2SQL进阶系列(1):DB-GPT-H......
  • 数据库设计的必备小技巧
    前言对于后端开发人员来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要不断的建库和建表,来满足业务需求。这里就跟大家分享一下数据库设计的一些小技巧!见名知意在数据库设......
  • GreatSQL 死锁案例分析
    1.背景概述客户业务发生死锁的报错,根据业务程序日志及业务流程,发现造成死锁的原因是:事务1delete+insert,事务2delete+insert2个事务交替执行导致的死锁;由于GAP锁阻塞了插入意向锁,并且当delete的数据存在时死锁不会发生,当delete的数据不存在时,会发生死锁。2.问题复现本......
  • DbMigrator迁移数据库报错:The ConnectionString property has not been initialized.
    问题执行.DbMigrator时报错:TheConnectionStringpropertyhasnotbeeninitialized.原因情况一DbContext中没有指定连接字符串解决方案情况二appsettings.json配置文件的属性没有设置为始终复制解决方案右键appsettings.json选择属性>复制到输出目录选择始终复制或......
  • mysql
    sql语法单行或多行书写,分号结尾sql语句不区分大小写DDL数据定义语言数据库操作CREATEDATABASE[IFNOTEXISTS]name[DEFAULTCHARSET=name]DROPDATABASEnameUSEnameSHOWDATABASESSELECTDATABASE()表操作SHOWTABLESDESCname//显示表结构SHOWCRE......
  • 如何实现数据库数据到Abp vnext实体对象的同步?以及代码生成工具
    在采用了EFCore的CodeFirst方式下,如果你在数据库中直接添加了新表或存储过程,你需要在项目代码中手动反向工程这些数据库的更改,以保持CodeFirst的代码与数据库同步。这种情况可以通过如下两个步骤来实现:从现有数据库创建模型:使用EntityFrameworkCore的Scaffold-DbContext......
  • Mysql 工作笔记
    一、运维相关1、删除binlog日志二、索引相关2.1、索引创建在区分度高的字段上创建索引;索引区分度=count(distint记录)/count(记录)。巧用组合索引实现**IndexConditionPushdown(ICP)索引下推**,避免回表。--先对name匹配索引找到主键,在回表根据主键找......
  • 面试题:如何理解闭包
    之前看的闭包讲解,都是一些示例,不太好作为面试题作答内部函数如果引用了外部函数的变量,会形成闭包。如果这个内部函数作为外部函数的返回值,就会形成词法环境的引用闭环(循环应用),对应的变量就会常驻在内存中,形成大家所说的“闭包内存泄漏”。虽然闭包有内存上的问题,但是却突破了......
  • JDBC数据库汇总Attack研究
    前言针对除Mysql的其它数据库的jdbcattack分析H2RCE介绍H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,即只有一个jar文件,可以直接嵌入到应用项目中。H2主要有如下三个用途:第一个用途,也是最常使用的用途就在于可以同应用程序打包在一起发布,这样可以非常方便地......