约束介绍

约束介绍
在给表中插入或者更新数据时,必须满足约束,否则,操作将失败。

约束可以在创建表时规定,或者创建表后规定(使用 Alter Table 语句创建约束)。

约束分为列级和表级。

常用的约束包含:not null、unique、primary key、foreign key、check

not null:指定列不能存储 null 值
unique:确保某列的值都是唯一的。
primary key:not null 和 unique 的结合。确保某列有唯一标识,且不能为 null。null 和没有数据不同,null 代表着未知数据。
foreign key:保证一个表中的数据匹配另一个表中的值的参照完整性。
check:保证列中的值符合一定条件。
下面列举一些示例更好的理解各个约束:

1、not null
创建表时,如果不指定约束,默认值为 NULL,意味着可以插入空值。如果不想存在 null 值,需要为该列定义 not null 约束

MogDB=# CREATE TABLE staff(
ID INT NOT NULL,
NAME char(8) NOT NULL,
AGE INT ,
ADDRESS CHAR(50),
SALARY REAL
);MogDB(# MogDB(# MogDB(# MogDB(# MogDB(# MogDB(#
CREATE TABLE
MogDB=#
2、unique
unique 约束表示表里的一个字段或多个字段的组合必须在全表范围内唯一,唯一约束认为 null 是互不相等的。意思是一列可以存在多个 null。

MogDB=# CREATE TABLE staff1(
ID INT NOT NULL,
NAME char(8) NOT NULL,
AGE INT NOT NULL UNIQUE ,
ADDRESS CHAR(50),
SALARY REAL
);MogDB(# MogDB(# MogDB(# MogDB(# MogDB(# MogDB(#
NOTICE: CREATE TABLE / UNIQUE will create implicit index "staff1_age_key" for table "staff1"
CREATE TABLE
MogDB=#
3、primary key
主键是数据表中每一条记录的唯一标识。

MogDB=# CREATE TABLE staff2(
ID INT PRIMARY KEY ,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);MogDB(# MogDB(# MogDB(# MogDB(# MogDB(# MogDB(#
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "staff2_pkey" for table "staff2"
CREATE TABLE
MogDB=#
4、foreign key
外键约束指一个表中的某个数据必须匹配另一个表中的某个数据。通过要给表的外键指向另一个表的唯一约束的键。

如下表所示,表 staff3 包含 5 个字段,表 DEPARTMENT 包含 3 个字段,其中 EMP_ID 为外键,参照 staff3 表的 ID 字段。

MogDB=# CREATE TABLE staff3(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);MogDB(# MogDB(# MogDB(# MogDB(# MogDB(# MogDB(#
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "staff3_pkey" for table "staff3"
CREATE TABLE
MogDB=# CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT references staff3(ID)
);MogDB(# MogDB(# MogDB(# MogDB(#
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "department_pkey" for table "department"
CREATE TABLE
MogDB=#
5、check
check 约束表示,每次插入的数据必须使表达式结果为真或未知,才能插入成功。

MogDB=# CREATE TABLE staff4(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL CHECK(SALARY > 0)
);MogDB(# MogDB(# MogDB(# MogDB(# MogDB(# MogDB(#
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "staff4_pkey" for table "staff4"
CREATE TABLE
MogDB=#

posted @   openGaussbaby  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示