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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks

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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-31 19:09:40

developerWorks



所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122801) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122799) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122798) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122797) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122796) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122795) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122792) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122791) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122790) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122789) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122787) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122786) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122784) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122783) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122780) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122779) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122777) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122775) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122774) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122772) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122771) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122770) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122769) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122768) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122764) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122763) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122762) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122761) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122760) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122758) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122757) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122756) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122755) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122753) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122752) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122751) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~


所有数据都存储在数据库的表中。 由不同数据类型的一列或多列组成。数据存储在行(或称为记录)中。

表是使用 CREATE TABLE SQL 语句定义的。DB2 还提供了一个用来创建表的 GUI 工具 DB2 Control Center,这个工具可以根据指定的信息创建一个表。它还生成 CREATE TABLE SQL 语句,以后可以在脚本或应用程序中使用这个语句。

每个数据库都有一组表,称为系统编目表(system catalog tables),它们保存关于数据库中所有对象的信息。DB2 为基系统编目表提供了视图。数据库中定义的每个表在编目视图 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。可以用 SELECT 语句像查看数据库中的任何其他表一样查看编目视图;但是,不能使用 INSERTUPDATEDELETE 语句。在执行数据定义语言(DDL)语句(比如 CREATE)和其他操作(比如 RUNSTATS)时,这些表会自动更新。

使用 CREATE TABLE SQL 语句在数据库中定义一个表。下面的语句创建一个简单的名为 BOOKS 的表,该表包含三列:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) )

还可以使用 CREATE TABLE SQL 语句创建与数据库中另一个表或视图相似的表:

CREATE TABLE MYBOOKS LIKE BOOKS

这个语句创建一个与原始表或视图具有相同列的表。新表的列具有与原始表或视图中的列相同的名称、数据类型和可空属性。还可以指定复制其他属性(比如列默认值和标识属性)的子句。

有许多选项可用于 CREATE TABLE 语句(将在下面介绍新概念时讨论它们)。CREATE TABLE SQL 语句的详细信息可以在 SQL Reference 中找到(请参阅 参考资料)。

创建了表之后,有几种方法可以在其中填充数据。INSERT 语句允许向表中插入一行或几行数据。DB2 还提供了一些实用程序插入来自文件的大量数据。IMPORT 实用程序使用 INSERT 语句插入行。它是为向数据库中加载少量数据而设计的。LOAD 实用程序用于加载大量数据,它将行直接插入到数据库中的数据页,因此比 IMPORT 实用程序要快得多。







表存储在数据库的表空间 中。表空间拥有分配给它们的物理空间。在创建表之前必须先创建表空间。

在创建表时,可以让 DB2 把表放在默认的表空间内,也可以指定表应该驻留在哪个表空间内。下面的 CREATE TABLE 语句将 BOOKS 表放在 BOOKINFO 表空间内:

CREATE TABLE BOOKS ( BOOKID INTEGER, 
                     BOOKNAME VARCHAR(100), 
                     ISBN CHAR(10) ) 
             IN BOOKINFO

虽然我们不在这里详细讨论表空间,但正确地定义表空间将会影响数据库的性能和可维护性,理解这一点很重要。关于表空间的更多信息,请参考 本系列的第二篇教程







可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:

  • 主键
  • 一个或多个惟一性或参照约束
  • 一个或多个检查约束

下面的语句向 BOOKS 表中添加一个列 BOOKTYPE:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

还可以修改表中特定列的特征:

  • 列的标识属性
  • 字符串列的长度
  • 列的数据类型
  • 列的可空性
  • 列的约束

对于修改列有一些限制:

  • 在修改字符串列的长度时,只能增加长度。
  • 在修改列的数据类型时,新的数据类型必须与现有的数据类型兼容。例如,可以将 CHAR 列转换为 VARCHAR 列,但是不能将它们转换为 GRAPHIC 或数字列。数字列可以转换为任何其他数字数据类型,只要新数据类型的长度足以容纳其中的值。例如,可以将 INTEGER 列转换为 BIGINT,但是 DECIMAL(10,2) 列不能转换为 SMALLINT。
  • 固定长度的字符串可以转换为可变长度的字符串,可变长度的字符串也可以转换为固定长度的字符串。例如,CHAR(100) 可以转换为 VARCHAR(150)。对于可变长度的图形字符串也有类似的限制。

以下语句将 BOOKNAME 列的 DATATYPE 从 VARCHAR(100) 改为 VARCHAR(200),并将 ISBN 列的可空性改为 NOT NULL:

ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE VARCHAR(200) ALTER ISBN SET NOT NULL

表的某些特征不可以更改。例如,不可以修改某些列的数据类型、表驻留的表空间或列的次序。要更改这样的特征,必须保存表数据,删除表,然后重新创建表。







DROP TABLE 语句将表从数据库中删除,数据和表定义都被删除。如果为表定义了索引或者约束,它们也同时被删除。

下面的 DROP TABLE 语句从数据库中删除 BOOKS 表:

DROP TABLE BOOKS
          







表的列在 CREATE TABLE 语句中由列名和数据类型指定。还可以指定一些额外的子句来限制列中的数据。

在默认情况下,列允许空值。如果不想允许空值,可以为列指定 NOT NULL 子句。还可以使用 WITH DEFAULT 子句和一个默认值来指定默认值。下面的 CREATE TABLE 语句创建一个表 BOOKS,在这个表中 BOOKID 列不允许空值,BOOKNAME 的默认值为 TBD:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL, 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

在 BOOKS 表中,BOOKID 是为每本书指定的惟一的编号。可以使用 GENERATED ALWAYS AS IDENTITY 子句指定由 DB2 生成 BOOKID,而不必让应用程序生成标识符:

CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY
                                             (START WITH 1, INCREMENT BY 1), 
                     BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD', 
                     ISBN CHAR(10) ) 

GENERATED ALWAYS AS IDENTITY 导致为每个记录生成一个 BOOKID。生成的第一个值是 1,通过在前面的值上加 1 生成后续的值。

还可以使用 GENERATED ALWAYS 选项让 DB2 自动计算列的值。下面的示例定义一个名为 AUTHORS 的表,其中有分别保存小说和非小说书籍数量的 FICTIONBOOKS 和 NONFICTIONBOOKS 列。通过把 FICTIONBOOKS 和 NONFICTIONBOOKS 列相加来计算 TOTALBOOKS 列:

CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY KEY,
                      LNAME VARCHAR(100),
                      FNAME VARCHAR(100),
                      FICTIONBOOKS INTEGER,
                      NONFICTIONBOOKS INTEGER,
                      TOTALBOOKS INTEGER GENERATED ALWAYS 
                                 AS (FICTIONBOOKS + NONFICTIONBOOKS) )
          
阅读(122750) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~