symfoware入门

 

symfoware是日本富士通自行研发的一款RDB产品,symfoware名字来源于

   【Symphonied】的【Sym】

   【Information】的【fo】

   【Warehouse】的【ware】

直译过来就是一个”和谐的信息仓库“

 

同oracle与mysql一样,利用symfoware RDB同样可以“创建/管理/查询”DB。

可是由于DB底层的构造差异,导致学习symfoware的门槛高,许多概念晦涩难懂。

 

Symfoware RDB与其它关系数据库,最大的不同是创建一个Table时,需要同时创建DSODSI

DSO(Data Structure Organization)用来定义表和索引的存储数据类型。

         SEQUENTIAL   表中数据结构

          RANDOM  

          OBJECT          表中数据结构

          BTREE            索引结构

DSI(Data Structure Instance)用来指定表和索引的数据存储位置(dbspace)。

 

Symfoware RDB系统可以创建多个DB,DB中可以创建多个schema,每个schema管理一套数据对象

(表,INDEX,VIEW等)。每个数据对象都是由”逻辑构造“,”存储构造“,”物理构造“组成,这些脚本信息存放在

RDB字典中;数据对象的物理存放地点为dbspace,dbspace就是指具体的磁盘,文件等。

       逻辑构造(Table,Index)

       存储构造(表和索引的DSO和DSI)

       物理构造(DBSPACE)

 

举个例子如下:

-- データベース定義 データベース名は“RDBDB”
CREATE DATABASE RDBDB;
-- データベーススペース定義 データベーススペース名は“DBSPACE1”
CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev/rdsk/c0t1d0s1;
-- スキーマを定義 スキーマ名は“STOCKS”
CREATE SCHEMA STOCKS
	-- 在庫製品の管理表を定義
	CREATE TABLE 在庫表 ( 製品番号 SMALLINT NOT NULL,
		製品名 NATIONAL CHARACTER(10) NOT NULL,
		在庫数量 INTEGER,
		倉庫番号 SMALLINT,
		PRIMARY KEY (製品番号)
	)
;
-- 在庫表の格納構造定義
CREATE DSO 在庫表DSO -- 在庫表のDSO
	FROM STOCKS.在庫表
	TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));

CREATE DSI 在庫表DSI -- 在庫表のDSI
	DSO 在庫表DSO
	ALLOCATE DATA ON DBSPACE1 SIZE 280K;

-- 在庫表の製品番号にインデックスを作成
CREATE DSO 製品番号IXDSO -- インデックスのDSO
	INDEX ON STOCKS.在庫表 (製品番号)
	TYPE BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;

CREATE DSI 製品番号IXDSI -- インデックスのDSI
	INDEX
	DSO 製品番号IXDSO
	ALLOCATE BASE ON DBSPACE1 SIZE 200K,
	INDEX ON DBSPACE1 SIZE 40K;

 

 symfoware常用函数

 

   REPLICATE

     用于重复输出某个字符

         REPLICATE(' ‘,11)       --重复输出11个半角空格

   CNV_CHAR

      把日期转换为字符类型

          CNV_CHAR(CURRENT_DATE, 'YYYYMMDD’)    --将当前日期按照YYYYMMDD的格式输出

   LPAD

       项目位数不足时,从左边开始补指定字符,如果处理字符串为空,则返回NULL

       如果处理的字符串为日本语,需要按字节数进行处理(日语字符数*3)

       LPAD(CUSTOMER_CD, 6, '0‘)                     --CUSTOMER_CD不足6位时,从左边开始补0                    

   RPAD

        项目位数不足时,从右边开始补指定字符,如果处理字符串为空,则返回NULL

        如果处理的字符串为日本语,需要按字节数进行处理(日语字符数*3)

        RPAD(CUSTOMER_NM, 10, ' ')             --CUSTOMER_NM不足10位时,从右边开始补半角空格

  

   SUBSTRING

        按位截取字符串,如果处理的字符串为空,返回空

        SUBSTRING(CUSTOMER_NM FROM 3 FOR 6)     -- 从第3位开始往后截取6位

  

   CAST

       进行数据类型转换,支持symfoware中所有的数据类型

       CAST(数值项目 AS VARHAR(6))            --把数值项目转换为6位的可变字符串

 

  TRIM

      从前往后,或者从后往前,去除掉指定的字符

      TRIM(LEADING '0' FROM 处理字符串)    --去除掉字符串中前面的0

 

  ADD_DATE

      对日期类型按照年月日进行加减法运算

       ADD_DATE(CURRENT_DATE, -1, 'MONTH')          --取得上个月的日期

 

 

symfoware中的虚表: RDBII_SYSTEM.RDBII_ASSISTTABLE

 

参考资料

http://software.fujitsu.com/jp/manual/manualfiles/M100005/J2X17484/01Z200/index.html

 

你可能感兴趣的:(war)