SQLite进阶-10.约束

Posted haitao130v

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLite进阶-10.约束相关的知识,希望对你有一定的参考价值。

约束

约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。
约束可以是列级或表级,列级约束作用于单一的列,而表级约束作用于整张数据表。

SQLite中常见的约束:

  • NOT NULL 约束:确保某列不能有NULL值。
  • DEFAULT 约束:当某列没有插入值时,为该列提供默认值。
  • UNIQUE 约束:确保某列中的所有值是不同的。
  • PRIMARY KEY 约束:唯一标识数据库表中的数据。
  • FOREIGN KEY 约束:一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
  • CHECK 约束:确保某列中的所有值满足一定条件。

NOT NULL 约束

默认情况下,列可以保存 NULL 值。如果您不想某列有 NULL 值,那么需要在该列上定义此约束,指定在该列上不允许 NULL 值。

NULL 与没有数据是不一样的,它代表着未知的数据。

-- 实例
CREATE TABLE link_men (
    ID INT PRIMARY KEY      NOT NULL;
    NAME           TEXT     NOT NULL
)

DEFAULT 约束

DEFAULT 约束在 INSERT INTO 语句没有提供一个特定的值时,为列提供一个默认值。

-- 实例
CREATE TABLE link_men(
    ID INT PRIMARY KEY      NOT NULL;
    NAME           TEXT     NOT NULL;
    ADDRESS        TEXT     NOT NULL;
    SALARY         REAL     DEFAULT 8000.00
)

UNIQUE 约束

UNIQUE 约束防止在一个特定的列存在两个记录具有相同的值。

-- 实例
CREATE TABLE link_men(
    ID INT PRIMARY KEY      NOT NULL;
    NAME           TEXT     NOT NULL;
    AGE            INT      NOT NULL UNIQUE;
    ADDRESS        TEXT;
    SALARY        REAL DEFAULT 8000.00
)

PRIMAY KEY 约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。

-- 实例
CREATE TABLE link_men(
    ID INT PRIMARY KEY      NOT NULL;
    NAME           TEXT     NOT NULL;
    AGE            INT      NOT NULL UNIQUE;
    ADDRESS        TEXT;
    SALARY       , REAL DEFAULT 8000.00
)

FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

-- 实例
CREATE TABLE link_men (
    ID INT PRIMARY KEY     NOT NULL;
    NAME           TEXT    NOT NULL;
    AGE            INT     NOT NULL UNIQUE;
    ADDRESS        TEXT;
    SALARY         REAL DEFAULT 8000.00;
    FOREIGN KEY (P_ID) REFERENCES persons(P_ID);
)

CHECK 约束

CHECK 约束启用输入一条记录要检查值的条件。如果条件值为 false,则记录违反了约束,且不能输入到表。

CREATE TABLE link_men(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        TEXT,
   SALARY         REAL    CHECK(SALARY > 0)
);

以上是关于SQLite进阶-10.约束的主要内容,如果未能解决你的问题,请参考以下文章

SQLite EF Core - '外键约束失败'

C# Sqlite '约束失败'

SQLite3 笔记

SQLite 约束

SQLite 全面学习

在 SQLite 中启用外键约束