SQL – 约束

SQL 约束

约束是我们可以应用于表中数据类型的规则。也就是说,我们可以使用约束来指定存储在表中特定列中的数据类型的限制。

SQL中可用的约束有:

NOT NULL :这个约束告诉我们不能在列中存储空值。也就是说,如果一个列被指定为NOT NULL,那么我们将不能在这个特定的列中存储NULL。

UNIQUE :当在列中指定此约束时,表示列中的所有值必须是唯一的。也就是说,列的任何一行中的值都不能重复。

PRIMARY KEY :主键是一个字段,它可以唯一地标识表中的每一行。这个约束用于指定表中的一个字段为主键。

FOREIGN KEY :外键是一个字段,它可以唯一地标识另一个表中的每一行。此约束用于将字段指定为外键。

CHECK :该约束有助于验证列的值以满足特定条件。也就是说,它有助于确保存储在列中的值满足特定条件。

DEFAULT :当用户没有指定值时,该约束为该列指定一个默认值。

如何指定约束

我们可以使用CREATE表语句在创建表时指定约束。我们还可以在创建表后使用ALTER table语句指定约束。

语法 :

下面是在创建表时使用CREATE表语句创建约束的语法。

CREATE TABLE sample_table

(

column1 data_type(size) constraint_name,

column2 data_type(size) constraint_name,

column3 data_type(size) constraint_name,

....

);

sample_table : 要创建的表的名称.

data_type : 可以存储在字段中的数据类型.

constraint_name : 约束的名称。例如- NOT NULL, UNIQUE,主键等.

让我们详细地看看每个约束。

NOT NULL

如果我们指定表中的一个字段为NOT NULL。那么该字段将永远不会接受空值。也就是说,不允许您在没有向该字段指定任何值的情况下在表中插入新行。

例如,下面的查询创建了一个表Student,其字段ID和NAME为NOT NULL。也就是说,每次希望插入新行时,我们都必须为这两个字段指定值。

CREATE TABLE Student

(

ID int(6) NOT NULL,

NAME varchar(10) NOT NULL,

ADDRESS varchar(20)

);

UNIQUE

这个约束有助于惟一地标识表中的每一行。例如,对于一个特定的列,所有行的值应该是唯一的。在一个表中可以有多个UNIQUE列。

例如,下面的查询创建了一个表Student,其中字段ID被指定为UNIQUE。也就是说,两个学生不能有相同的ID。详细唯一约束。

CREATE TABLE Student

(

ID int(6) NOT NULL UNIQUE,

NAME varchar(10),

ADDRESS varchar(20)

);

PRIMARY KEY

主键是唯一标识表中每一行的字段。如果表中的一个字段作为主键,那么该字段将不能包含NULL值,并且该字段的所有行都应该有唯一的值。换句话说,我们可以说这是NOT NULL和UNIQUE约束的组合。

一个表只能有一个字段作为主键。下面的查询将创建一个名为Student的表,并指定字段ID作为主键。

CREATE TABLE Student

(

ID int(6) NOT NULL UNIQUE,

NAME varchar(10),

ADDRESS varchar(20),

PRIMARY KEY(ID)

);

FOREIGN KEY

外键是表中的一个字段,它唯一地标识另一个表的每一行。也就是说,该字段指向另一个表的主键。这通常会在表之间创建一种链接。

考虑如下两个表:

Orders

O_ID

ORDER_NO

C_ID

1

2253

3

2

3325

3

3

4521

2

4

8532

1

Customers

C_ID

NAME

ADDRESS

1

RAMESH

DELHI

2

SURESH

NOIDA

3

DHARMESH

GURGAON

我们可以清楚地看到,Orders表中的C_ID字段是Customers表中的主键,也就是说,它唯一地标识了Customers表中的每一行。因此,它是Orders表中的外键。

语法:

CREATE TABLE Orders

(

O_ID int NOT NULL,

ORDER_NO int NOT NULL,

C_ID int,

PRIMARY KEY (O_ID),

FOREIGN KEY (C_ID) REFERENCES Customers(C_ID)

)

(i) CHECK –

使用CHECK约束,我们可以为字段指定一个条件,该条件应该在为该字段输入值时得到满足。

例如,下面的查询创建了一个表Student,并指定字段AGE的条件为(AGE >= 18)。也就是说,不允许用户在AGE < 18的表中输入任何记录。详细检查约束

CREATE TABLE Student

(

ID int(6) NOT NULL,

NAME varchar(10) NOT NULL,

AGE int NOT NULL CHECK (AGE >= 18)

);

(ii) DEFAULT –

此约束用于为字段提供默认值。也就是说,如果在表中输入新记录时,如果用户没有为这些字段指定任何值,那么将为它们分配默认值。

例如,下面的查询将创建一个名为Student的表,并将字段AGE的默认值指定为18。

CREATE TABLE Student

(

ID int(6) NOT NULL,

NAME varchar(10) NOT NULL,

AGE int DEFAULT 18

);