SQL – 约束

yizhihongxing

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取得datetime类型的数据,后面会跟个.0的实现方法

    获取datetime类型数据时,如果没有指定时间部分的值,即时分秒部分为0,MySQL在存储时会自动将其补足为.000000表示毫秒部分,也就是后面会跟个.0。 如果需要获取整个datetime类型的时间值,可以使用MySQL内置函数DATE_FORMAT来实现。该函数可以将日期值按指定的格式进行格式化输出。 下面是两个示例说明: 查询时间字段 update…

    database 2023年5月21日
    00
  • Android SQLite数据库彻底掌握数据存储

    Android SQLite数据库彻底掌握数据存储 前言 Android是个流行的移动操作系统,许多App需要获取、存储和处理数据。SQLiteDatabase是一个轻量级的数据库技术,它可被嵌入在你的应用程序中,能够提供访问和保存数据的方法。本文将为你介绍如何在Android应用程序中彻底掌握SQLite数据库,包括创建和管理数据库、增删改查操作、以及如何…

    database 2023年5月21日
    00
  • mybatis查询oracle long类型的踩坑记录

    这里介绍使用MyBatis查询Oracle long类型的记录时可能遇到的问题以及解决方法。 问题描述 问题是查询Oracle long类型的数据时,可能会出现以下问题: 查询结果返回null或空值,即使数据库中存在该记录; 查询结果返回错误的值或者超出预期的数据范围; 查询结果返回long类型变量,但是其实际类型为String。 这些问题可能是由于Orac…

    database 2023年5月21日
    00
  • 实例解析MySQL中的存储过程及存储过程的调用方法

    实例解析MySQL中的存储过程及存储过程的调用方法 什么是存储过程? 存储过程(Stored Procedure)是一种在MySQL数据库中存储可重用SQL语句和程序的方法。存储过程可以接受输入参数并返回输出参数,可以用来完成数据库操作、业务流程控制等。 在MySQL中,存储过程经常被用来提高系统的效率、优化业务流程、控制数据访问等。 存储过程的创建 要创建…

    database 2023年5月21日
    00
  • Ubuntu下安装redis的2种方法分享

    Ubuntu是一种基于Debian的GNU/Linux操作系统,其下载量已经超过4000万。在Ubuntu下安装Redis可以提升系统的性能,本文将分享两种方法,让您能够安装Redis。 方法1:使用Ubuntu官方软件库安装Redis Ubuntu官方软件库存储了各种免费的软件。使用以下命令来在Ubuntu上安装Redis: sudo apt update…

    database 2023年5月22日
    00
  • MySQL提升大量数据查询效率的优化神器

    我来为你详细讲解“MySQL提升大量数据查询效率的优化神器”的完整攻略。 什么是MySQL?为什么需要优化? MySQL是一种关系型数据库管理系统(RDBMS),广泛应用于各种规模的网络应用中。在日常使用中,MySQL的查询效率会受到很多因素的影响,例如数据量过大、查询语句复杂等。因此,为了提高MySQL的查询效率,需要进行一些优化处理。 如何优化MySQL…

    database 2023年5月19日
    00
  • 10个MySQL性能调优的方法

    下面是“10个MySQL性能调优的方法”的完整攻略: 1. 选择适当的数据类型 MySQL支持的数据类型很多,不同的数据类型对性能的影响也是不同的。因此,在设计数据表时,应该选择适当的数据类型。 例如,对于一列存储年龄的数据,使用TINYINT就足够了,而不必使用INT或BIGINT。这样可以减少存储空间,提高查询效率。 2. 添加合适的索引 索引可以提高查…

    database 2023年5月19日
    00
  • 快速解决PostgreSQL中的Permission denied问题

    下面是针对PostgreSQL中的权限问题的完整攻略。 问题概述 在使用PostgreSQL数据库时,可能会遇到Permission denied(权限被拒绝)的问题。这通常是由于当前用户没有足够的权限操作数据库或文件系统导致的。这篇攻略介绍了如何识别和解决这类问题。 识别问题 当你在PostgreSQL中尝试执行某些操作时,如果出现Permission d…

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