SQL – 约束

SQL约束是一组规则,用于保证数据库表中数据的正确性和一致性。在创建表时,可以通过使用约束规定数据的格式、类型、完整性以及一些限制条件。本文将详细讲解SQL-约束,包括其类型、如何使用约束以及一些实例。

类型

SQL约束主要可以分为以下五种类型:

NOT NULL

NOT NULL约束规定表中的字段值不能为空。如果尝试插入或更新时将NULL值插入此字段,将会抛出错误。

例如,以下是一个创建包含一个NOT NULL字段的表的示例:

CREATE TABLE student (
    id INT NOT NULL,
    name VARCHAR(50)
);

UNIQUE

UNIQUE约束用于确保表中的数据在某个列上具有唯一的值。在插入或更新数据时,如果违反了UNIQUE约束,则会抛出错误。

例如,以下是一个创建包含一个UNIQUE字段的表的示例:

CREATE TABLE fruit (
    id INT,
    name VARCHAR(50) UNIQUE
);

PRIMARY KEY

PRIMARY KEY约束标识表中的一个列(或一组列),这个列具有唯一性、非空性以及单一性。即,这个列不能重复,不能有NULL值,且只能有一个这样的列。

例如,以下是一个创建包含一个PRIMARY KEY的表的示例:

CREATE TABLE person (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

FOREIGN KEY

FOREIGN KEY约束用于与另一张表中的某个列建立联系。在这种情况下,该列将被称为“外键”,并参考另一张表中的“主键”。

例如,以下是一个创建包含一个FOREIGN KEY的表的示例:

CREATE TABLE order (
    id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);

这个例子中,order表中的customer_id列是customer表中的id列的外键。

CHECK

CHECK约束可以在数据库中创建一个检查条件。只有满足这个条件的数据才会被插入到表中。

例如,以下是一个创建包含一个CHECK约束的表的示例:

CREATE TABLE price (
    id INT PRIMARY KEY,
    amount INT CHECK(amount >= 0)
);

这个例子中,CHECK约束将确保在price表中创建的记录的amount列的值必须大于或等于0。

如何使用约束

使用SQL约束可以通过在创建表时添加约束来实现。以下是创建一个包含约束的表的基本语法:

CREATE TABLE table_name (
    column1 datatype constraint,
    column2 datatype constraint,
    column3 datatype constraint,
    ...
);

以上语法中,每一列都可以有一个或多个约束。约束必须在数据类型之后定义,而多个约束之间必须用逗号分隔。

实例

以下是两个SQL约束的实例:

实例一:创建包含NOT NULL和UNIQUE约束的表

CREATE TABLE person (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL UNIQUE
);

在这个例子中,id列必须是非空的,而name列必须是唯一的且非空的。

实例二:创建包含FOREIGN KEY约束的表

CREATE TABLE order (
    id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customer(id)
);

在这个例子中,order表中的customer_id列引用了customer表中的id列,构成了一个外键约束。这将确保order表中的每个customer_id都必须对应于customer表中的有效id。如果在插入或更新order表时,customer_id列的值不符合这个约束,则会抛出错误。

总结

SQL约束是用于保证数据库表中数据正确性和一致性的规则。约束主要有五种类型:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY和CHECK。我们可以在创建表时定义这些约束来确保由插入的数据满足一些限制条件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL – 约束 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • MySQL如何实现事务的ACID

    MySQL通过使用事务(Transaction)来保证数据的一致性和持久性。在MySQL中,一个事务可以由多条SQL语句所组成,而ACID是事务处理的重要属性,其中包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 下面是MySQL如何实现事务的ACID: 1. 原子性(Atom…

    database 2023年5月22日
    00
  • MySQL数据库的23个注意事项

    MySQL数据库的23个注意事项 MySQL数据库的使用需要注意多个方面,下面列举了23个需要注意的事项: 1. 数据库备份 在使用 MySQL 数据库时,一定要做好备份工作,以便在服务器发生故障时对数据进行恢复。最好根据业务情况设置自动备份或手动备份策略,将备份数据远程传输至另一台服务器,以确保即使本地服务器发生故障,备份依然可以得到保障。 2. 数据库优…

    database 2023年5月21日
    00
  • JAVA mongodb 聚合几种查询方式详解

    JAVA MongoDB 聚合几种查询方式详解 MongoDB是一个非常流行的NoSQL数据库,它支持强大的聚合查询功能,可以让我们对数据进行更加灵活的统计和分析。本文将详细讲解JAVA语言中如何使用MongoDB实现聚合查询。 什么是聚合查询 聚合查询是一种特殊的查询方式,它可以将多个文档合并成一个或多个文档,实现类似SQL中GROUP BY的功能。聚合查…

    database 2023年5月21日
    00
  • PHP mysql与mysqli事务使用说明 分享

    PHP MySQL与MySQLi事务使用说明分享 什么是事务 事务是一组数据库操作,它们被视为一个单独的工作单元,并且必须被实现为完全成功或完全失败。在事务中进行的所有操作必须被视为单个操作而不是一组单独的操作。如果在一个事务中有任何错误,则必须将整个事务回滚到旧状态。 为什么要使用事务 使用事务可以确保我们的数据库始终处于一致的状态。如果在事务中有任何错误…

    database 2023年5月22日
    00
  • MySQL 在触发器里中断记录的插入或更新?

    MySQL 触发器是一种特殊的存储过程,它能够在特定的事件发生时自动执行代码。在某些情况下,我们需要在触发器内中断记录的插入或更新操作,这可以通过抛出异常来实现。本文将提供一种完整的攻略来实现这一操作,具体步骤如下: 1. 定义触发器 首先,我们需要定义一个触发器,该触发器能够捕获插入或更新操作。假设我们有一个名为 orders 的表,我们需要在该表上定义一…

    database 2023年5月22日
    00
  • SQL SERVER 的SQL语句优化方式小结

    SQL Server 的 SQL 语句优化是提高数据库性能的重要策略之一。下面就来详细讲解 SQL Server 的 SQL 语句优化方式小结。 1. 确认性能瓶颈 首先需要确认数据库性能瓶颈所在,通常可以通过 SQL Server 的系统对象或 SQL Profiler 工具来分析瓶颈所在。一些典型的瓶颈常常出现在: 硬件: CPU、内存、磁盘等; 网络 …

    database 2023年5月19日
    00
  • [Redis] redis的hash类型底层结构哈希表

    redis hash的底层是压缩列表 和  哈希表两种形式 ,哈希表的形式是下面这样一层层嵌套的 , 转载自公众号 CodeSheep        源码中这几种类型的定义      这里面的哈希结点dictEntry使用链地址法解决哈希冲突问题      字典dict里存了两个哈希表dictht , 用于处理rehash过程 , 哈希表的扩展和收缩    …

    Redis 2023年4月11日
    00
  • 一次SQL查询优化原理分析(900W+数据从17s到300ms)

    我会用Markdown格式给您讲解“一次SQL查询优化原理分析(900W+数据从17s到300ms)”的完整攻略。 一次SQL查询优化原理分析 背景 文章作者需要优化一个复杂SQL查询,该查询需要从一个含有900W+数据的大型MySQL表中检索数据,为了提高查询效率,作者不断尝试调整查询方案,最终使用了多种优化手段,将查询时间从17秒降低到了300毫秒。 分…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部