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日

相关文章

  • MongoDB DBRefs(文档参考类型)详解

    什么是DBRefs? DBRefs是MongoDB中的一种参考文档类型,它可以用来连接不同集合的文档。DBRefs由两部分组成:一个是参考的集合的名字,另一个是参考的文档的_id。 DBRefs与Embedded documents有何不同? Embedded documents是内嵌在另一个文档中的文档,它们使用嵌套的JSON结构来组织数据。相比之下,DB…

    MongoDB 2023年3月14日
    00
  • 如何保障mysql和redis之间的数据一致性

    在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。Redis缓存数据的加载可以分为懒加载和主动加载两种模式,下面分别介绍在这两种模式下的数据一致性如何处理。 懒加载 读取缓存步骤一般没有什么问题,但是一旦涉及到…

    Redis 2023年4月11日
    00
  • 一篇文章看懂MySQL主从复制与读写分离

    1. 什么是MySQL主从复制和读写分离? 在MySQL中,主从复制(Master-Slave Replication)和读写分离(Read-Write Separation)都是常见的数据库解决方案。主从复制是指将数据库的主库数据同步到从库中,从而实现主从数据库的数据一致性和备份,它可以提高数据库的可靠性和可用性;而读写分离则是将读请求和写请求分别分配到不…

    database 2023年5月22日
    00
  • 如何使用Python实现数据库的事务管理?

    以下是使用Python实现数据库事务管理的完整攻略。 事务管理简介 事务是指一组数据库操作,这些操作要么全部执行成功要么全部执行失败。在Python中,可以使用pymysql库实现数据库事务管理。事务管理可以确保数据库操作的原子性、一致性、隔离性和持久性。 步骤1:连接到数据库 在Python中,可以使用pymysql库连接到MySQL数据库。以下是连接到M…

    python 2023年5月12日
    00
  • CMD命令操作MSSQL2005数据库(命令整理)

    CMD命令操作MSSQL2005数据库主要用于完成对MSSQL2005数据库的各种管理任务,以下是完整攻略的步骤: 1. 确认数据库可连接 在CMD中执行以下命令,确保数据库能够正常连接: osql -S <server_name> -E 其中<server_name>替换为你的数据库服务器名称,使用Windows身份验证(-E表示W…

    database 2023年5月21日
    00
  • MySQL之常用的MySQL优化工具解读

    MySQL之常用的MySQL优化工具解读 MySQL的优化是开发中非常重要的一部分,它的优化可以大大提升MySQL的性能。而MySQL优化的工具也非常重要,在此,我将带领大家了解常用的MySQL优化工具。 1. MySQLTuner MySQLTuner是一款用于MySQL优化的Perl脚本。MySQLTuner是基于你当前MySQL的配置统计信息,通过对M…

    database 2023年5月19日
    00
  • Apache POI操作批量导入MySQL数据库

    Apache POI操作批量导入MySQL数据库 本教程将详细介绍如何使用Apache POI库来操作Excel文件,将Excel数据批量导入MySQL数据库中。通过本教程,您将学到以下内容: 导入Apache POI库 使用Apache POI读取Excel文件中的数据 连接MySQL数据库并进行数据插入 导入Apache POI库 首先,需要在项目中添加…

    database 2023年5月22日
    00
  • Redis Stream Commands 命令学习-1 XADD XRANGE XREVRANGE

    Redis Stream Commands 命令学习-1 XADD XRANGE XREVRANGE 概况 A Redis stream is a data structure that acts like an append-only log. You can use streams to record and simultaneously syndica…

    Redis 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部