SQL约束

时间:2020-02-23 14:32:24  来源:igfitidea点击:

在现实世界中,有时候我们想限制存储在数据库表中的数据类型。
为了实现对数据库的限制,SQL提供了一组约束。

介绍

SQL约束是一组规则,用于限制将要插入数据库表中的数据。
有两种类型的约束。

  • 表级约束。

  • 列级约束。

基于列的约束仅适用于一列,而表级约束则适用于整个表。

请在约束列表下方找到。

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT

让我们详细讨论所有上述约束。

1. NOT NULL约束

SQL NOT NULL约束指定该列不能包含该列的任何空值。
可以在表创建或者更改期间指定约束。

语法:

CREATE TABLE <table_name>(<column_name> <data_type> NOT NULL);

在上面的语法中,NOT NULL关键字用于指定列不能接受空值。

让我们创建一个客户表来更好地理解这一点。

CREATE TABLE customer
(cust_id varchar(8) NOT NULL UNIQUE, 
cust_name varchar(50) NOT NULL, 
state varchar(25), 
country varchar(25) );

在MySQL工作台上执行以上查询。
将出现以下屏幕。

非空示例

进行桌子检查时,将出现以下屏幕。

非空列

突出显示的值表明"否"值表示该列将不接受空值。

2.唯一约束

UNIQUE指定该列不能重复该列的值。
可以在表创建或者更改期间指定约束。

语法:

CREATE TABLE <table_name>(<column_name> <data_type> UNIQUE);

在上面的语法中,UNIQUE关键字用于指定该列不能接受重复值。

让我们创建一个客户表来更好地理解这一点。

CREATE TABLE customer
(cust_id varchar(8) NOT NULL UNIQUE, 
cust_name varchar(50) NOT NULL, 
state varchar(25), 
country varchar(25) );

在MySQL工作台上执行以上查询。
将出现以下屏幕。

进行桌子检查时,将出现以下屏幕。

唯一列

"唯一"列的值为" YES",表示该列将接受唯一值。

3.主键约束

为了唯一地标识表中的行,在表创建期间,我们指定一列或者列的组合作为主键。
主键应始终不为null。
一张表只能指定一个主键。

语法:

CREATE TABLE <table_name>(<column_name1> <data_type> NOT NULL,
<column_name2> <data_type> NOT NULL,
<column_name3> <data_type> NOT NULL,
PRIMARY KEY (column_name1));

在上面的语法中,PRIMARY KEY关键字用于指定该列将用作表的主键。

让我们创建一个客户表来更好地理解这一点。

CREATE TABLE customer
(cust_id varchar(8) NOT NULL UNIQUE, 
cust_name varchar(50) NOT NULL, 
state varchar(25), 
country varchar(25),
PRIMARY KEY (cust_id) );

在MySQL工作台上执行以上查询。
将出现以下屏幕。

进行桌子检查时,将出现以下屏幕。

主键列

"唯一"列的值为" YES",表示该列将接受唯一值。
另外,键列的行值为" PRIMARY",而列的行值指定为主键的列。

4.外键约束

为了使一个表中的行与另一个表具有连接,在表创建期间,我们指定一个列或者列的组合作为外键。
外键应始终不为null。

语法:

FOREIGN KEY [column list] REFERENCES [primary key table] ([column list]);

在上面的语法中,FOREIGN KEY关键字用于指定需要在其上设置外键的列列表。
主键表是将使用外键的表。

让我们创建一个客户表来更好地理解这一点。

CREATE TABLE customer
(cust_id varchar(8) NOT NULL UNIQUE, 
cust_name varchar(50) NOT NULL, 
state varchar(25), 
country varchar(25),PRIMARY KEY (cust_id) );

CREATE TABLE new_customer
(cust_id varchar(8) NOT NULL UNIQUE,
old_id varchar(8),
cust_name varchar(50) NOT NULL, 
state varchar(25), 
country varchar(25),FOREIGN KEY (old_id) references customer(cust_id));

在MySQL工作台上执行以上查询。
将出现以下屏幕。

进行桌子检查时,将出现以下屏幕。

外键列

外键选项卡提供了外键的详细信息。

5.检查约束

在某些情况下,您想限制将存储在列中的值。

语法:

CREATE TABLE <table_name>(<column_name> <data_type> CHECK (range for check));

在上面的语法中,关键字CHECK用于指定范围。

让我们创建一个表格客户来更好地理解这一点。

CREATE TABLE customer
(cust_id varchar(8) NOT NULL UNIQUE, 
cust_name varchar(50) NOT NULL, 
phone decimal (10) check (phone=10),
state varchar(25), 
country varchar(25),PRIMARY KEY (cust_id) );

在MySQL工作台上执行以上查询。
数据插入完成后,将检查电话列的约束。

6.默认约束

使用DEFAULT关键字,我们可以为列指定默认值。

语法:

CREATE TABLE <table_name>(<column_name> <data_type> DEFAULT 'value');

在以上语法中,关键字DEFAULT用于提供默认值。

让我们创建一个表格客户来更好地理解这一点。

CREATE TABLE customer
(cust_id varchar(8) NOT NULL UNIQUE, 
cust_name varchar(50) NOT NULL, 
phone decimal (10) check (phone=10),
state varchar(25), 
country varchar(25) DEFAULT 'San Franceco',PRIMARY KEY (cust_id) );

在MySQL工作台上执行以上查询。
数据插入完成后,如果未提供任何值,则会将"旧金山"视为该值。