本章介绍数据库中的各种制约。
若要强制数据库的完整性,一组规则的定义,也就是所谓约束。约束即允许或禁止在所述列中的值。
在实时数据库活动,该数据应该有一定的限制被添加。例如,在一个销售数据库,销售-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 个群。