Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106437435
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437436
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437437
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437438
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437439
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437440
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437441
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437442
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437443
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437434
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437445
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437446
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437447
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437448
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437449
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437450
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437451
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437452
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437454
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437455
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437456
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437457
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437458
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437449
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437460
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437461
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437462
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437463
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437464
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437465
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437466
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437467
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437468
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437469
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437470
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437471
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437472
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437473
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437464
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437475
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437476
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437477
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437478
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437479
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437480
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437481
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437482
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437483
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437484
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437485
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437486
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks

DB2 9 基础(730 考试)认证指南,第 5 部分: 处理 DB2 对象(4)-sdccf-ChinaUnix博客
  • 博客访问: 106437487
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:10:24

developerWorks



约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124808) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124807) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124806) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124805) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124804) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124802) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124801) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124797) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124796) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124795) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124792) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124791) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124790) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124789) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124787) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124786) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124784) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124783) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124780) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124779) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124777) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124775) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124774) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124772) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124769) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124768) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124764) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124763) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124762) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124761) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124760) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些特性被称为约束(constraint)规则(rule),数据库管理程序强制一个数据列或一组列遵守这些约束。

DB2 提供了三种类型的约束:惟一性、参照完整性和表检查。

以下几节详细描述每种约束类型。

惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。惟一性约束中包括的每个列都必须定义为 NOT NULL

惟一性约束可以定义为 PRIMARY KEYUNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候应该定义 PRIMARY KEY,什么时候应该定义 UNIQUE 键?这取决于数据的性质。在前面的示例中,BOOKS 表有一个 BOOKID 列,它用于惟一地标识一本书。这个值还在包含与这本书相关的信息的其他表中使用。在这种情况下,应该把 BOOKID 定义为主键。DB2 在一个表中只允许定义一个主键。

ISBN 列必须是惟一的,但它不是一个在数据库中其他地方被引用的值。在这种情况下,ISBN 列应该定义为 UNIQUE

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE ) 

CONSTRAINT 关键字允许为约束指定一个名称。在这个示例中,惟一性约束的名称是 BOOKSISBN。如果想删除特定的约束,那么在 ALTER TABLE 语句中使用这个名称。

DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

每当为列定义一个 PRIMARY KEYUNIQUE 约束时,DB2 都会创建一个惟一的索引以强制列的惟一性。DB2 不允许在同样的列上创建多个惟一的索引。因此,不能在同样的列上同时定义 PRIMARY KEY 和 UNIQUE 约束。例如,以下针对 BOOKS 表的语句将失败,因为已经有了 PRIMARY KEY:

ALTER TABLE BOOKS ADD  CONSTRAINT UNIQUE (BOOKID)
CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID) 







参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。假设有一个表包含关于作者的信息,而另一个表列出这些作者已经写的书。在 BOOKS 表和 AUTHORS 表之间有这样一种关系 —— 每本书都有一个作者,该作者必须存在于 AUTHORS 表中。每个作者都有一个存储在 AUTHORID 列中的惟一的标识符。AUTHORID 在 BOOKS 表中用于识别每本书的作者。要定义这种关系,应该把 AUTHORS 表的 AUTHORID 列定义为主键,然后在 BOOKS 表上定义一个外键,从而与 AUTHORS 表中的 AUTHORID 列建立关系:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
                    BOOKNAME VARCHAR(100),
                    ISBN CHAR(10),
                    AUTHORID INTEGER REFERENCES AUTHORS) 

拥有与另一个表相关的主键的表(这里的 AUTHORS 表)被称为父表(parent table)。与父表相关的表(这里的 BOOKS 表)被称为从属表(dependent table)。可以为一个父表定义多个从属表。

还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了参照约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守参照完整性规则:

  • DB2 确保只向定义了参照完整性约束的列中插入有效数据。这意味着在父表中必须总是有这样一行,该行的键值等于正要插入到从属表中的行的外键值。例如,如果一本新书要插入到 BOOKS 表中,它的 AUTHORID 为 437,那么 AUTHORS 表中必须有 AUTHORID 为 437 的一行。
  • 当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制实施一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四个规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。
    • 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父行。必须首先删除从属表中的行才能删除父表中的行。这条规则是默认设置,所以当定义 AUTHORS 和 BOOKS 表时这个规则也适用于它们。
    • 如果指定了 CASCADE,那么从父表中删除行时还会自动地删除所有从属表中的从属行。
    • 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值被设置为空(如果可以为空的话)。
  • 在更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行,则 RESTRICT 不允许更新键值。如果在更新完成时在从属表中有从属行,而从属行在父表中没有父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。






表检查约束 用于确保列数据不违反为列定义的规则,并限制表的某一列中的值。DB2 确保在插入和更新时不违反这些约束。

假设向 BOOKS 表中添加一个表示书籍类型的列,该列允许的值为 ‘F’(小说)和 ‘N’(非小说)。可以添加一个列 BOOKTYPE,它带有以下的检查约束:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') ) 

可以在创建表时定义检查约束,也可以在以后使用 ALTER TABLE SQL 语句添加它们。可以通过删除检查约束,然后使用 ALTER TABLE SQL 语句重新创建它们来修改检查约束。

阅读(124758) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~