DB2第一步 — 创建表

页面导航:首页 > 数据库 > DB2 > DB2第一步 — 创建表

DB2第一步 — 创建表

来源: 作者: 时间:2016-01-23 11:15 【

DB2第一步 创建表为即将创建的表建立表空间,先建立一个缓冲池,名字:BUFPOL01CREATEBUFFERPOOL BUFPOL01 IMMEDIATE ndash;立即创建此缓冲池SIZE250 --大小为25...
DB2第一步 — 创建表
 
为即将创建的表建立表空间,先建立一个缓冲池,名字:BUFPOL01
CREATEBUFFERPOOL BUFPOL01 IMMEDIATE  –立即创建此缓冲池
SIZE250                                     --大小为250(个4K)
AUTOMATIC                                --自动管理
PAGESIZE4 K ;                               --页大小为4K
缓冲池是内存中的一段空间,用于存放管理器从磁盘上读取的数据或修改即将写入磁盘的数据,一个临时的用于存放表或者索引缓存的内存段。
缓冲池能够提高数据库的性能,较少磁盘IO;如果应用程序需要的数据存放于内存中,而不是去读取磁盘,那么性能其性能将会得到很大的改观;
当然,缓冲池也会将最近很少使用的数据写回磁盘,腾出更多的空间。
在 V9.7 for LUW中,创建一个库的时候,默认会创建一个IBMDEFAULTBP的缓冲池,大小为250个4KB。
查看数据库版本的方法:
1.      连接数据库的时候,显示:
db2 =>connect to sample
   数据库连接信息
 数据库服务器         = DB2/NT 9.7.5
 SQL 授权标识         = ADMINIST...
 本地数据库别名       = SAMPLE
2.      命令查看
db2 =>select * from sysibm.sysversions
 
VERSIONNUMBER    VERSION_TIMESTAMP          AUTHID              VERSIONBUILDLEVEL
--------------------------   -------------------------------        ---------------------        ------------------------------
      9070500     2013-03-17-21.18.32.187000      SYSTEM             special_27924
修改一下缓冲池的大小,改为2M,还是自动存储:
ALTERBUFFERPOOL BUFPOL01 IMMEDIATE SIZE 500 AUTOMATIC;
创建表空间TBSPC01:
CREATE REGULAR  TABLESPACE TBSPC01 –-常规表空间,名称为TBSPC01
PAGESIZE 4 K                         --页大小为4K
MANAGED BY AUTOMATIC STORAGE      --自动存储管理
EXTENTSIZE 8                         --扩展数据块为8(个4K)
OVERHEAD 10.5                       --开销
PREFETCHSIZE 8                       --预取大小为8(个4K)
TRANSFERRATE 0.14
BUFFERPOOL BUFPOL01              --指定缓冲池
DROPPED TABLE RECOVERY ON;          --打开的话,可以恢复已经删除的表,常规表空间可以使用
COMMENT ON TABLESPACE TBSPC01 IS '表空间01';  -- 注释
表空间是一个逻辑的概念,逻辑上表是存放在表空间中,实质上,表是存放在物理磁盘上;一个表空间可以存放多个表,但是一个表只能位于一个表空间中。在安装创建SAMPLE数据库实例的时候,默认创建了4个表空间:
IBMDB2SAMPLEREL:常规表空间,
IBMDB2SAMPLEXML:用于存放XML数据类型的表空间
SYSCATSPACE:编目表空间,也就是数据字典存放的表空间
SYSTOOLSPACE:
接下来就创建表了:
CREATE TABLE ADMINISTRATOR.TEST1 (
CID CHARACTER (10)  NOT NULL ,
CNAME VARCHAR (20)  WITH DEFAULT 'unknow' ,
SEX CHARACTER (1)  NOT NULL WITH DEFAULT 'M' ,
AGE INTEGER ,
CONSTRAINT IDX_TEST_CID PRIMARY KEY ( CID),
CONSTRAINT CHK_SEX  CHECK (check sex in ('F','M')) 
ENFORCED                    --强制执行此约束
ENABLE  QUERY  OPTIMIZATION  --查询优化期间考虑此约束
) IN TBSPC01 ;
COMMENT ON TABLE ADMINISTRATOR.TEST1 IS '测试表1';
COMMENT ON ADMINISTRATOR.TEST1 ( SEX IS '性别', CNAME IS'客户姓名', CID IS '客户ID', AGE IS '年龄' ) ;
COMMENTON CONSTRAINT ADMINISTRATOR.TEST1.CHK_SEX IS '性别只能为F或者M';
查看创建的表结构及其他信息:
db2 => describe table test1
                                数据类型                      列
列名                             模式       数据类型名称      长     小数位      NULL
-------------------------------             -------------    -------------------     ----------     -----      ------
CID                             SYSIBM    CHARACTER             10    0        否
CNAME                           SYSIBM    VARCHAR              20    0        是
SEX                             SYSIBM    CHARACTER              1    0        否
AGE                             SYSIBM    INTEGER                4      0       是
 
  4 条记录已选择。
向表中添加数据:
1.      添加一行
db2 =>insert into test1(cid , cname , sex , age) values ('12082119','chenlb','M',24)
DB20000I  SQL 命令成功完成。
db2 =>select * from test1
 
CID        CNAME                SEX AGE
------------------------------ --- -----------
12082119   chenlb              M            24
 
  1 条记录已选择。
2.      添加多行:在insert into tablename values之后指定多个值。
    db2=> insert into test1(cid , cname , sex , age) values('12082111','albert','M',15),('12082011','ellen','F',10)
DB20000I SQL 命令成功完成。
db2 => select * from test1
 
CID       CNAME                SEX AGE
---------- -------------------- --------------
12082011  ellen                F            10
12082111  albert               M            15
12082119  chenlb               M            24
 
  3 条记录已选择。
3.      从其他表中获取数据
db2 =>insert into test1(cid , cname , sex , age) select empno,firstnme,sex,20 fromemployee where salary > 90000
DB20000I  SQL 命令成功完成。
db2 =>select * from test1
 
CID        CNAME                SEX AGE
------------------------------ --- -----------
12082119   chenlb               M            24
12082111   albert               M            15
12082011   ellen                F            10
000010     CHRISTINE            F            20
000020     MICHAEL              M            20
000030     SALLY                F            20
000070     EVA                 F            20
 
  7 条记录已选择。
4.      删除数据
1.      删除符合条件的数据:db2 => delete from test1 where length(trim(cid))=6
2.      清空表数据,我们常用的是delete  from tablename,
还有另外一种方法,如下
Alter table tablename activate not logged initially withempty table:
db2 =>alter table test1 activate not logged initially with empty table
DB20000I  SQL 命令成功完成。
db2 =>select count(*) from test1
 
1
-----------
          0
 
  1 条记录已选择。
5.      删除表
Drop table tablename
--the end--
 
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<