DB2傻瓜1000问(六)6、DB2数据库对象部分

DB2傻瓜1000问(六)
总结:康标

email:kang_biao@hotmail.com

[@more@]

6、DB2数据库对象部分
206、 什么是模式?
模式(schema)是用于在数据库中创建的数据库对象的一个高级限定符。它是数据库对象,例如表、视图、索引或触发器的一个集合。它提供了数据库对象的一个逻辑分类。

207、 系统模式都有那些?
SYSIBM
基本系统编目。不建议直接访问它。
SYSCAT
这种模式上的 SELECT 权限被授给 PUBLIC。只读编目视图。建议通过它来获得编目信息。
SYSSTAT
可更新编目视图 —— 会影响优化器。
SYSFUN
用户定义函数

208、 系统模式存放在哪里?
对于每个数据库,都会创建一组系统模式,并将它们放在 SYSCATSPACE 表空间中。

209、 如何创建一个模式?
创建一个模式,可使用 create schema 命令。

210、 如何显性指定对象的模式?
显式地指定对象的模式:schema1.table1

211、 如何在脚本上使用模式?
set current schema 或 set current sqlid 命令指定对象的模式。

212、 如果没有显性指定模式的情况下,会怎么办?
如果没有显式地指定对象的模式,那么对象的模式将被设为当前的授权 ID。

213、 什么是缓冲池?
数据库缓冲池区域是一块内存,当从磁盘上读取一个表的索引和数据页,以便对它们进行扫描或修改时,可以用缓冲池缓存它们。缓冲池区域有助于提高数据库系统的性能,因为它允许从内存,而不是磁盘上访问数据。由于内存访问比磁盘访问要快得多,因此 DB2 对磁盘读写得越少,系统的性能就越好。

214、 系统在创建数据库时候会自动创建一个默认缓冲池叫什么名字?
这个缓冲池名为 IBMDEFAULTBP

215、 在WINDOWS下默认缓冲池的大小是多少?
对于 Windows,默认缓冲池大小为 250 页或 1 MB。

216、 在UNIX下默认缓冲池的大小是多少?
对于 UNIX,默认缓冲池大小为 1,000 页或 4 MB。

217、 如何创建缓冲池?
使用create bufferpool 命令创建。

218、 DB2数据库上表是如何分类的?
DB2数据库上表有永久表和临时表之分:
永久表包括:
系统目录表
用户表

临时表包括:
系统表
用户表

219、 系统目录表存放的内容是那些?
1) 所有数据库对象的定义
2) 表和视图列的数据类型
3) 约束定义
4) 对象权限
5) 对象的依赖

220、 如果在创建一个表时没有使用 in 子句,那么如何放置表数据?
如果在创建一个表时没有使用 in 子句,那么将按以下顺序放置表数据(及其索引和 LOB 数据):
1) 如果有 IBMDEFAULTGROUP 表空间,并且该表空间的页宽足够大,则放在这个表空间中。
2) 放在一个用户创建的表空间中,该表空间具有能满足表的最小页宽。
3) 如果有 USERSPACE1 表空间,并且该表空间的页宽足够大,则放在 USERSPACE1 中。
IN、INDEX IN 和 LONG IN 子句指定将在其中存储常规表数据、索引和大型对象的表空间。注意,这只适用于 DMS 表空间。

221、 如何列出当前用户的表?
list tables

222、 如何列出数据库中定义的所有表?
list tables for all

223、 如何列出指定模式中的表?
list tables for schema schemaname

224、 如何显示指定的表的结构?
describe table tablename

225、 什么是标识列?
标识列(identity column)是表中的一个数字列,它导致 DB2 为每个被插入表中的行生成一个惟一的数值。一个表最多只能有一个标识列。这个列的值可以通过 DB2 always 或 by default 两种方式生成:
1) 如果这些值按 always 方式生成,则总是由 DB2 数据库生成这些值,应用程序不能提供显式的值。
2) 如果这些值按 by default 方式生成,那么可以由应用程序显式地提供这些值;只有在应用程序没有提供值的情况下,才由 DB2 生成一个值。 因此,DB2 不能保证这些值是惟一的。该选项用于数据传播,或者装载和卸载一个表。
我们来看一个例子。假设用以下命令创建表:
create table inventory (partno INTEGER GENERATED ALWAYS AS IDENTITY
(START WITH 100 INCREMENT BY 1), description CHAR(20) )
并执行以下语句:
语句
insert into inventory VALUES (DEFAULT,'door')
insert into inventory (description) VALUES ('hinge')
insert into inventory VALUES (200,'windor')
insert into inventory (description) VALUES ('frame')
结果
inserts 100,door
inserts 101,hinge
error
inserts 102,frame
那么语句 SELECT * FROM inventory 将产生如下输出:
100 door
101 hinge
102 frame

226、 SYSIBM模式存放的内容是那些?
用于基础系统目录表

227、 SYSCAT模式存放的内容是那些?
用于系统目录表视图的定义

228、 SYSSTAT模式存放的内容是那些?
用于存放关于数据库统计信息的视图

229、 缺省情况下表存放的缺省表空间的选择是如何选择的?
按照以下的顺序来选择:
1) IBMDEFAULTGROUP表空间是否存在
2) 有没有用户添加的表空间
3) 表空间USERSPACE1是否存在
4) 如果上面的都没有的话,就会返回一个错误

230、 如何基于一个已经存在的表定义一个新表?
CREATE TABLE clone like tablename
或者
CREATE TABLE clone AS (SELECT * FROM tablename) DEFINITION ONLY

231、 如何添加一个表?
CREATE TABLE myemployees (
empID INT NOT NULL PRIMARY KEY,
empname VARCHAR(30) NOT NULL,
mngrID INT NOT NULL,
history CLOB)
IN datadms
INDEX IN indexdms
LONG IN largedms
最后三行是指定存放表空间的位置。

232、 修改表的内容是那些?
可以使用 ALTER TABLE SQL 语句更改表的某些特征。例如,可以添加或删除:
1) 列
2) 主键
3) 一个或多个惟一性或参照约束
4) 一个或多个检查约束

233、 如何添加一个新列?
ALTER TABLE myemployees ADD COLUMN address CHAR(45)

234、 如何删除表?
DROP TABLE myemployees

235、 什么是约束?
约束是用于来控制什么数据可以存储在列中。

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

237、 什么是惟一性约束?
惟一性约束 用于确保列中的值是惟一的。可以对一个或多个列定义惟一性约束。


238、 惟一性约束都是那些?
惟一性约束中包括的每个列都必须定义为 NOT NULL和PRIMARY KEY 或 UNIQUE 约束。

239、 PRIMARY KEY 或 UNIQUE 约束的区别?
DB2 在一个表中只允许定义一个主键;但可以定义多个惟一性约束。

240、 如何定义PRIMARY KEY 或 UNIQUE 约束?
可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,也可以在创建表后使用 ALTER TABLE 语句添加。

241、 什么是参照完整性约束?
参照完整性约束 用于定义表之间的关系并确保这些关系保持有效。

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

243、 如何在表上设置缺省值?
使用DEFAULT字句
CREATE TABLE company (
companyID INTEGER,
companyName VARCHAR(30),
city VARCHAR(20) DEFAULT 'TORONTO'
)

244、 如何如何使用缺省值插入表?
有两种方式,可以得到同样的结果:
(1)INSERT INTO company (companyID, companyName, city)
VALUES ( 111 , 'cityOne' , DEFAULT)
(2)INSERT INTO company (companyID, companyName)
VALUES ( 111, 'cityOne' )

245、 如何在表上自动生成连续的数字?
使用CREATE TABLE语句中的GENERATED子句:
CREATE TABLE product (
productno INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 200 INCREMENT BY 1),
description VARCHAR(50) )
这时不能插入其他的值。因为使用了ALWAYS
如果使用GENERATED BY DEFAULT就可以自己主动插入值。
同时还可以这样使用:
CREATE TABLE income (
empno INTEGER,
salary INTEGER,
taxRate DECIMAL(5,2),
netSalary DECIMAL(7,2) GENERATED ALWAYS AS (salary * (1 - taxRate))
)

INSERT INTO income (empno, salary, taxRate) VALUES (111, 50000, 0.3)

EMPNO SALARY TAXRATE NETSALARY
----------- ----------- ------- ---------
111 50000 0.30 35000.00

246、 如何使用唯一约束?
使用UNIQUE 或者 PRIMARY KEY
CREATE TABLE employ (
empID INT NOT NULL PRIMARY KEY,
name CHAR(30) ,
deptID INT NOT NULL UNIQUE
)

247、 如何添加检查约束?
CREATE TABLE student (
student_ID INT NOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
sex CHAR(1) NOT NULL
CONSTRAINT sex_check_const CHECK (sex in ('M ', 'F '))
)
或者
ALTER TABLE student
ADD CONSTRAINT sex_check_const CHECK (sex in ('M ', 'F '))

248、 表的系统编目表?
SYSIBM.SYSTABLES和SYSIBM.SYSCOLUMNS

249、 什么是表的压缩?
行压缩的方法是查看整个表,找到重复的字节字符串,将那些字符串存储在一个字典中,然后用一个表示存储在字典中的实际数据的符号代替出现在表中的那些符号。

250、 表的压缩的优点是什么?
其主要优点是,DB2 看到的是表中的所有数据以及完整的数据行 —— 而不只是重复的列值。

251、 使用表压缩的步骤是什么?
对一个新表进行表压缩的步骤,如果从一个新的系统开始,那么可能需要:
1) 用 compression yes 创建表。
2) 将示例数据装载到表中。
3) 用 resetdictionary 重组表,以创建一个新的字典。
4) 将剩下的数据装载到表中(这次的装载将遵从上述字典,并在装载的同时进行压缩)。

252、 如何使用表压缩?
create table table_name ... compress yes

alter table tablename compress yes

253、 如何创建压缩字典?
reorg table table_name resetdictionary

254、 如何估计表压缩节约的空间?
db2 inspect rowcompestimate table name table_name results keep file_name

255、 视图的系统编目表?
SYSIBM.SYSVIEWS
SYSCAT.VIEWS
SYSCAT.VIEWDEP

256、 如何关闭数据一致性?
SET INTEGRITY FOR student OFF

257、 使用索引的主要原因是什么?
1、 提高查询速度。
2、 在定义为唯一的时候,保证唯一性。

258、 视图的分类?
可删除视图
可更新视图
可插入视图
只读视图

259、 如何添加数据库分区组?
CREATE DATABASE PARTITION DROUP name ON DBPARTITIONNUMS( )

260、 如何修改数据库分区组?
ALTER DATABASE PARTITION GROUP name ADD DBPARTITIONNUM ()

261、 如何列出数据库分区组?
LIST DATABASE PARTITION GROUPS
LIST DATABASE PARTITION GROUPS SHOW DETAIL

262、 如何删除数据库分区组?
DROP DATABASE PARTITION GROUP name

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-918240/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/222350/viewspace-918240/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值