db2中constraint_DB2约束

本文详细介绍了数据库中的四种主要约束:NOT NULL、唯一、主键和外键。NOT NULL 约束用于确保列中不允许为空值;唯一约束确保列中的值都是唯一的;主键约束用于标识表中的唯一记录,常与其他表的外键关联;外键约束则用于建立表间的关系,引用另一表的主键。通过示例展示了如何在 SQL 中创建和应用这些约束,以及违反约束时的错误处理。
摘要由CSDN通过智能技术生成

本章介绍数据库中的各种制约。

若要强制数据库的完整性,一组规则的定义,也就是所谓约束。约束即允许或禁止在所述列中的值。

在实时数据库活动,该数据应该有一定的限制被添加。例如,在一个销售数据库,销售-ID或事务id应该是唯一的。约束类型是:

NOT NULL

唯一

主键

外键

检查

信息化

约束只能与表关联。它们被施加到唯一特定的表。它们被定义和应用于表在创建表时。

每个约束的说明:

NOT NULL

它是一个规则来从表内的一个或多个列禁止空值。

语法:

db2 create table(col_name col_typenotnull,..)

示例:[在此加入“not null”约束所有列,以避免形成表中的任何空单元格创建销售表,四列(id, itemname, qty, price)]

db2 create table shopper.sales(id bigintnotnull,itemname

varchar(40)notnull,qtyintnotnull,pricedoublenotnull)

将NOT NULL值插入表

如下图所示,可以插入表中的值:

例如:[错误查询]

db2 insertintoshopper.sales(id,itemname,qty)values(1,'raagi',12)

输出:[正确的查询]

DB21034EThecommand was processedasan SQL statement because

it wasnota

validCommandLineProcessorcommand.DuringSQL processing

it returned:SQL0407NAssignmentof a NULL value to a NOT NULL column"TBSPACEID=5,

TABLEID=4, COLNO=3"isnotallowed.SQLSTATE=23502

示例:[正确的查询]

db2 insertintoshopper.sales(id,itemname,qty,price)values(1,'raagi',12,120.00)db2 insertintoshopper.sales(id,itemname,qty,price)values(1,'raagi',12,120.00)

输出:

DB20000ITheSQL command completed successfully.

唯一约束

使用这些限制,可以设置唯一的列值。对于这一点,唯一约束使用“not null”约束在创建表时声明。

语法:

db2 create table(notnullunique,...)

例如:

db2 create table shopper.sales1(id bigintnotnullunique,itemname varchar(40)notnull,qtyintnotnull,pricedoublenotnull)

插入值到表

示例:要插入四个不同的行的唯一ID为1,2,3和4。

db2 insertintoshopper.sales1(id,itemname,qty,price)values(1,'sweet',100,89)db2 insertintoshopper.sales1(id,itemname,qty,price)values(2,'choco',50,60)db2 insertintoshopper.sales1(id,itemname,qty,price)values(3,'butter',30,40)db2 insertintoshopper.sales1(id,itemname,qty,price)values(4,'milk',1000,12)

示例:[要插入新行“ID”值为3]

db2 insertintoshopper.sales1(id,itemname,qty,price)values(3,'cheese',60,80)

输出:当尝试插入与现有id值相同的一个新的行会显示这样的结果:

DB21034EThecommand was processedasan SQL statement

because it wasnota

validCommandLineProcessorcommand.DuringSQL processing it returned:SQL0803NOneormore valuesinthe INSERT statement,UPDATE statement,orforeign key update causedbya

DELETE statement arenotvalid because the primary key,unique constraintorunique index identifiedby"1"constrains

table"SHOPPER.SALES1"fromhaving duplicate valuesforthe

index key.SQLSTATE=23505

主键

类似唯一约束,可以使用“主键”和“外键”约束声明多个表之间的关系。

语法:

db2 create table(,..,primary

key())

示例:[创建“salesboys”表将“sid”作为主键

db2 create table shopper.salesboys(sidintnotnull,name

varchar(40)notnull,salarydoublenotnull,constraint

pk_boy_id primary key(sid))

外键

外键是在需要匹配另一个表中至少有一个主一排键的表一组列。它是参照约束或参照完整性约束。它是一个关于在一个或多个表中的多个列中的值的逻辑规则。它使得表之间有所需的关系。

此前,创建了一个名为“shopper.salesboys”表。对于表中,主键是“SID”。现在,要创建一个新表,已销售男孩的个人信息使用名为“employee”和表“salesboys”在不同的模式。在这种情况下,“sid”是外键。

语法:

db2 create table(,constraintforeign key()reference()

示例:[创建一个表名为“salesboys'具有外键列'sid']

db2 create table employee.salesboys(sidint,name varchar(30)notnull,phoneintnotnull,constraint fk_boy_id

foreign key(sid)references shopper.salesboys(sid)ondeleterestrict)

示例:[将值插入主键表“shopper.salesboys”]

db2 insertintoshopper.salesboys values(100,'raju',20000.00),(101,'kiran',15000.00),(102,'radha',10000.00),(103,'wali',20000.00),(104,'rayan',15000.00)

示例:[将值插入外键表“employee.salesboys”[无误]

db2 insertintoemployee.salesboys values(100,'raju',98998976),(101,'kiran',98911176),(102,'radha',943245176),(103,'wali',89857330),(104,'rayan',89851130)

如果输入一个未知的数字,这不存储在“shopper.salesboys”表,它会显示SQL错误。

例如:[错误执行]

db2 insertintoemployee.salesboys values(105,'rayan',89851130)

输出:

DB21034EThecommand was processedasan SQL statement because it

wasnota validCommandLineProcessorcommand.DuringSQL

processing it returned:SQL0530NTheinsertorupdate value of

the FOREIGN KEY"EMPLOYEE.SALESBOYS.FK_BOY_ID"isnotequal to any

value of the parent key of the parent table.SQLSTATE=23503

检查约束

需要使用此约束来添加条件限制,在一个表中的特定列。

语法

db2 create table(primary key(),constraintcheck(conditionorcondition))

示例:[创建表emp1具有约束值]

db2 create table empl(id smallintnotnull,name varchar(9),dept smallint check(dept between10and100),jobchar(5)check(jobin('sales','mgr','clerk')),hiredate date,salarydecimal(7,2),commdecimal(7,2),primary key(id),constraint yearsal check(year(hiredate)>1986orsalary>40500))

插入值

可以将值插入表中,如下图所示:

db2 insertintoempl values(1,'lee',15,'mgr','1985-01-01',40000.00,1000.00)

删除约束

让我们看看各种删除约束的语法。

删除UNIQUE约束

语法:

db2 alter tabledrop unique

删除主键

语法:

db2 alter tabledrop primary key

删除检查约束

语法:

db2 alter tabledrop check

删除外键

语法:

db2 alter tabledrop foreigh key

¥ 我要打赏

纠错/补充

收藏

上一篇:

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值