SQL 约束

SQL 约束

SQL约束

SQL约束是应用于数据列或整个表的规则,用于限制可以插入表中的数据类型。当尝试在表上执行任何INSERT、UPDATE或DELETE操作时,关系数据库管理系统将检查该数据是否违反任何现有约束,如果定义的约束与数据操作之间存在冲突,则会中止该操作并返回错误信息。

我们可以定义列级约束或表级约束。列级约束只应用于单个列,而表级约束应用于整个表。

创建SQL约束

我们可以在创建表时使用CREATE TABLE语句创建表上的约束,或者在表创建后,可以使用ALTER TABLE语句来创建或删除表约束。

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

不同的RDBMS允许定义不同的约束。本教程将讨论MySQL中最重要的7个约束。

NOT NULL约束

应用于列时,NOT NULL约束确保列不能具有NULL值。以下是创建NOT NULL约束的示例:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

查看更多详细信息请点击 NOT NULL约束

UNIQUE键约束

当应用于一列时,UNIQUE键约束确保该列只接受唯一的值。下面是在ID列上创建UNIQUE键约束的示例。一旦创建了该约束,ID列不能为null,并且只接受唯一的值。

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL UNIQUE,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

详细信息请查看 唯一键约束

DEFAULT约束

应用于列时,DEFAULT值约束为列提供一个默认值,当未指定时。以下是在列NAME上创建DEFAULT约束的示例。一旦创建了此约束,如果NAME列没有被设置为一个值,将把NAME列设置为“不可用”值。

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL UNIQUE,
   NAME VARCHAR (20) DEFAULT 'Not Available',
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

查看 唯一键约束 的更多详细信息

主键约束

当应用于列时,主键约束确保列只接受唯一的值,并且表中可以有一个主键,但可以由多列组成。以下是在列ID上创建主键约束的示例。创建此约束后,列ID不能为空,并且它只接受唯一值。

CREATE TABLE CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

查看更多细节关于 主键约束

外键约束

外键约束与另一个表中的列进行映射,并唯一标识该表中的一行/记录。以下是一个示例,显示了在CUSTOMERS表中为列ID创建外键约束的语句。

CREATE TABLE ORDERS (
   ID INT NOT NULL,
   DATE DATETIME,
   CUSTOMER_ID INT FOREIGN KEY REFERENCES CUSTOMERS(ID),
   AMOUNT DECIMAL,
   PRIMARY KEY (ID)
);

进一步详细了解 外键约束

CHECK值约束

应用于列时,CHECK值约束的作用类似于验证,用于检查输入到表的特定列中的数据的有效性。表并且唯一标识该表中的一行/记录。以下是在年龄列上创建CHECK验证的示例,如果其值低于18,则不接受。

CREATE TABLE CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL CHECK(AGE>=18),
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

请查看 CHECK值约束 的详细信息

索引约束

索引约束是为了加快从数据库中检索数据而创建的。索引可以通过在表中使用单个或一组列来创建。一个表只能有一个主键,但可以有多个索引。根据要求,索引可以是唯一的或非唯一的。以下是在CUSTOMERS表的Age列上创建索引的示例。

CREATE INDEX idx_age ON CUSTOMERS ( AGE );

查看更多详细信息,请点击 INDEX约束

删除SQL约束

您可以使用 ALTER TABLE 命令和DROP CONSTRAINT选项来删除任何已定义的约束。例如,要从CUSTOMERS表中删除主键约束,可以使用以下命令。

ALTER TABLE CUSTOMERS DROP CONSTRAINT PRIMARY KEY;

一些RDBMS允许您禁用约束而不是永久从数据库中删除它们,您可能希望暂时禁用约束,然后稍后再启用它们。

数据完整性约束

数据完整性约束用于确保数据的整体准确性、完整性和一致性。现在,数据完整性也涉及与监管合规性(例如GDPR合规等)相关的数据安全性。

在关系数据库中,数据完整性通过参照完整性的概念来处理。有许多类型的完整性约束在参照完整性(RI)中起作用。这些约束包括主键、外键、唯一约束和其他上面提到的约束。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程