SQL约束
在现实世界中,有时候我们想限制存储在数据库表中的数据类型。
为了实现对数据库的限制,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工作台上执行以上查询。
数据插入完成后,如果未提供任何值,则会将"旧金山"视为该值。