Shanghai Tengke Education Damengデータトレーニングシリーズのデータタイプ:Dameng 6.0

数日前、ITPUBの編集長Xiong Jianguoから、国内データベースのダメンに適用される活動に参加して、その使用方法に関する記事をいくつか書いてほしいとの連絡がありました。最近は手作業が多く、断るつもりでしたが、編集者のXiongは、実際の体験を書き留める限り、ガンスリンガーの記事ではないことを繰り返し招待し、強調してきました。この場合、国内データベースをサポートするという原則に基づいて、いくつかのトライアル体験を書きます。


  私が精通しているデータベースはOracleだけなので、すべての比較はOracleデータベースで行われます。このプロセスでは、Oracleデータベースへの愛情を持ち込まないように最善を尽くし、公正な立場に立つよう努めます。評価を行います。

  この記事では、Damengデータベースによって提供されるデータタイプを簡単に紹介します。

  Damengデータベースにログインします。


C:\ dmdbms \ bin> isql
isql V6.0.2.51-Build(2009.12.23)
SQL>ログイン
サーバー名:localhost
ユーザー名:テスト
パスワード:
ポート:
12345dm_login使用時間:190.370(ms)


  まず、文字タイプCHARとVARCHARを見てください。


SQL> create table t_type
2(id number、name varchar2(30));
テーブルt_type
(id番号、名前varchar2(30));を作成します
使用時間:436.197(ms)クロックティック:729306570。
SQL> create table t_char(col char(8000));
create table t_char(col char(8000));
列定义NL度超TTL.error code = -1334
SQL> create table t_char(col char(4000));
create table t_char(col char(4000));
列定义NL度超TTL.error code = -1334
SQL> create table t_char(col char(3000));
テーブルt_char(col char(3000));を作成します。
使用時間:20.943(ms)クロックティック:35001630。


  Oracleの文字タイプと互換性を持たせるために、Damengは特殊なタイプのOracleであるVARCHAR2をサポートしています。Oracleとは異なり、CHARタイプとVARCHARタイプの最大長は8188ですが、この値は固定されていません。データベースのページサイズが異なる場合、32Kページサイズ、文字タイプCHARなどの最大値も固定されません。または、VARCHARの最大値は8188で、16Kページサイズの場合、最大文字タイプは8000です。現在の8Kページサイズの場合、最大文字タイプは3900のみであり、ページサイズが4Kの場合、最大文字タイプは1900のみです。 。


  Oracleデータベースの場合、CHARタイプの最大値は2000、VARCHAR2は4000です。ほとんどの場合、Damengデータベースはこの範囲よりも大きくなりますが、これは適切な設計ではないと思います。以前のさまざまなデータベースの移行は、成熟したシステムでは非常に一般的であり、さまざまなデータベースのページサイズも非常に一般的です。このDamengの​​設計では、さまざまなページの最大値を可能な限り大きくしますが、さまざまなページを提供します。データベース間の移行が問題を引き起こしました。データベースをより大きなページのデータベースに移行する場合、問題はありませんが、逆に、テーブルを作成できなかったり、データが失われたり、データが切り捨てられたりする可能性があります。そして、Dameng Databaseには、VARCHARタイプを実装するときにまだ特定の問題があると感じています。


SQL> t_type値に挿入(1、 'a');
t_type値(1、 'a')に挿入し
ます。影響を受ける1行
使用時間:0.464(ms)クロックティック:765250。
SQL> select id、name || t_typeからの「a」;
ID、名前を選択|| t_typeからの「a」;
id
1 1 aa1
行が取得されました


  これまでのところ問題はありません。VARCHARタイプのスペースは予約されていますが、VARCHARタイプを照会する場合は次のようになります。


SQL> select * from t_type where name = 'a';
select * from t_type where name = 'a';
id name
1 1 a
1行が
使用された時間:29.588(ms)クロックティック:49459510。
SQL> select * from t_type where name = 'a';
select * from t_type where name = 'a';
id name
1 1 a
1行の
使用時間:0.314(ms)クロックティック:517060。
SQL> select * from t_type where name = 'a';
select * from t_type where name = 'a';
id name
1 1 a
1行の
使用時間:0.421(ms)クロックティック:694830。


  明らかに、比較するとき、スペースは考慮されません。これはCHARタイプでは問題ありませんが、VARCHARタイプにはそのような特性がないようです。


SQL> t_type値に挿入(2、 'a');
t_type値(2、 'a')に挿入し
ます。影響を受ける1行の
使用時間:0.401(ms)クロックティック:661320。
SQL> select * from t_type
2 where name = 'a';
select * from t_type
where name = 'a';
ID名
11 a
2 2 a
2行の
使用時間:0.397(ms)クロックティック:653730。
SQL> alter table t_type add primary key(name);
alter table t_type add primary key(name);
违反堅性約エラーコード= -3100


  明らかに、ダメンでは、VARCHARタイプのフィールドでさえ、「a」と「a _」(ここではスペースを識別するためにアンダースコアを使用)が等しいと見なします。この状況はあいまいさをもたらします。同じ処理の後ですでに等しいデータは、再び不平等になります:


SQL> select id、name || t_typeからの「a」;
ID、名前を選択|| t_typeからの「a」;
id
1 1 aa
2 2 aa
2行が
使用された時間:36.391(ms)クロックティック:60834180。


  数値タイプを見てみましょう。


SQL> create table t_num
2(c1 number、
3 c2 number(4、1 )、
4 c3 number(4、-1)、
5 c4 number(2、3));
第4行: '-'付属近有语法错误
SQL> create table t_num
2(c1 number、
3 c2 number(4、1 )、
4 c4 number(2、3));
テーブルt_num
(c1番号、
c2番号(4、1 )、
c4番号(2、3));を作成します。エラー
コード= -2520SQL
>テーブルt_num2
(c1番号、
3 c2番号(4、 1));
テーブルt_num
(c1番号、
c2番号(4、1 ));を作成します
使用時間:42.803(ms)クロックティック:71554500。


  Damengは数値タイプNUMBERをサポートし、OracleのNUMBERタイプは非常に似ていますが、両者にはまだ違いがあります。明らかに、Damengは、スケールが0未満の場合をサポートせず、精度がスケール未満の場合をサポートしていません。これらの状況はOracleにあります。両方ともサポートされています。Oracleの状況は次のとおりです。


SQL> create table t_num
  2(c1 number、
  3 c2 number(4、1 )、
  4 c3 number(4、-1)、
  5 c4 number(2、3));
テーブルが作成されました。
SQL> t_numに挿入
  2つの値(1、234.4、3225、0.023 );
1つの行が作成されました。
SQL> select * from t_num;
       C1 C2 C3 C4
---------- ---------- ---------- --------- -
        1 234.4 3230.023


  NUMBERタイプとOracleのNUMBERタイプは完全に同じではありませんが、精度とスケールの説明は一貫しています。ただし、OracleがNUMBERの精度を指定しない場合、デフォルトは38であり、Damengではデフォルトは20です。


SQL> t_num値に挿入
2(1234567890123456789012、123.1);
t_num値に挿入
(1234567890123456789012、123.1)データダウンロード出.errorcode
= -2502
SQL> create table t_num2
2(c1 number(*、0));


  2行目:「*」の近くに文法エラーがあります。さらに、DamengはNUMBER(*、0)をサポートしていません。Damengは、SQLSERVER、SYBASE、およびその他のデータベースと同様に、整数を表すデータ型の自動インクリメント列を実装しています。


SQL> CREATE TABLE T_INC
2(ID NUMBER(5、0)IDENTITY(1、2)、
3 NAME VARCHAR);
CREATE TABLE T_INC
(ID NUMBER(5、0)IDENTITY(1、2)、
NAME VARCHAR);
使用時間:15.516(ms)クロックティック:25924810。
SQL> INSERT INTO T_INC(NAME)
2 VALUES( 'A');
INSERT INTO T_INC(NAME)
VALUES( 'A')
1行の影響を受ける
時間:36.438(ms)クロックティック:60908390。
SQL> INSERT INTO T_INC(NAME)
2 VALUES( 'B');
INSERT INTO T_INC(NAME)
VALUES( 'B')
1行の影響を受ける
時間:0.655(ms)クロックティック:1082480。
SQL> SELECT * FROM T_INC;
SELECT * FROM T_INC;


2 3 B
2行の
使用時間:1.769(ms)クロックティック:2943530。


  次に、Damengデータベースの時間タイプを確認します。


SQL> create table t_date
2(day date、tim time、o_date datetime);
テーブルt_date
(day date、tim time、o_date datetime);を作成します
使用時間:60.083(ms)クロックティック:100448590。
SQL> t_date
2の値に挿入( '2010-04-01'、'16:22:57 '、to_date(' 2010-4-1 16:22:57 '、' yyyy-mm-dd h
h24:mi: ss '));
t_date
値に挿入します( '2010-04-01'、'16:22:57 '、to_date(' 2010-4-1 16:22:57 '、' yyyy-mm-dd hh24:
mi:ss '))
影響を受ける1行の
使用時間:56.728(ms)クロックティック:94839380。
SQL> select * from t_date;
select * from t_date;
day tim o_date
1 2010-04-01 16:22:57.000000 2010-04-01 16:22:

使用時間:0.501(ms)クロックティック:828690。


  DamengデータベースのDATEは、OracleのDATEとは本質的に異なります。これは、SQLSERVERのDATEタイプに類似しているようです。日付と時刻を2つの部分に分割し、2つの異なるタイプのDATEとTIMEに対応します。DATEの精度は日のみで、TIMEの精度はミリ秒です。Damengには、年、月、日と時間、分と秒を含むデータタイプDATETIME、つまりTIMESTAMPタイプもあります。ただし、このタイプはOracleのDATEとは異なり、ミリ秒の情報が含まれ、OracleのTIMESTAMPタイプに似ています。ただし、OracleのTIMESTAMPはマイクロ秒をサポートするだけでなく、タイムゾーン情報も含みます。ダメンの時間タイプでサポートされていない別のポイント、日付BCがあります。


SQL> t_date
2(日)値に
挿入( '-235-4-1'); t_date
(日)値に挿入( '-235-4-1')
日付と時刻のタイプデータが無効です。エラーコード= -2519
SQL> t_date
2(o_date)値に挿入(to_date( '-235-4-1'、 'syyyy-mm-dd'));
t_date
(o_date)値に挿入(to_date( '-235-4-1' 、 'syyyy-mm-dd'))
無効な時間形式マスク。エラーコード= -2528


  Damengは、さまざまなINTERVALタイプの時間をサポートしていますが、提供されるタイプはOracleが提供するタイプよりもはるかに多いですが、基本的に新しいタイプは追加されません。注意すべき点の1つは、2つのOracle日付タイプを差し引いた後、取得される値は、2つの日付間の日数を表すNUMBERタイプの値と、Damengによって取得されるINTERVALタイプであるということです。以下では、Damengデータベースでマルチメディアタイプと呼ばれるラージフィールドタイプを簡単に紹介します。


SQL> create table t_text
2(c1 text、c2 blob、c3 clob);
テーブルt_text
(c1 text、c2 blob、c3 clob);を作成します
使用時間:139.863(ms)クロックティック:233839160。


  TEXTタイプはOracleのLONGに似ていますが、LONGほど多くの制限はありません。TEXT、BLOB、およびCLOBの最大長は2G-1です。これは、Oracle LONGフィールドの長さに相当し、8iのBLOBおよびCLOBの長さの半分です。DamengデータベースにはBFILEに対応するデータタイプはありません。Damengは、OracleがSQLタイプでサポートしていないBOOLEANタイプも提供します。


SQL> create table t_bool
2(col boolean);
テーブルt_bool
(col boolean);を作成します
使用時間:66.991(ms)クロックティック:111995500。
SQL> t_bool値に挿入(true);
t_bool値に挿入(true)
1行の影響を受ける
時間:0.538(ms)クロックティック:889960。
SQL> t_bool値に挿入(0);
t_bool値に挿入(0)
1行の影響を受ける
時間:0.393(ms)クロックティック:647120。
SQL> t_bool値に挿入(null);
t_bool値に挿入(null)
1行の影響を受ける
時間:0.337(ms)クロックティック:555060。
SQL> select * from t_bool;
select * from t_bool;
col
1 1
2 0
3 NULL
3行が
使用された時間:37.112(ms)クロックティック:62038100。
SQL> select * from t_bool where col&0 = 0;
select * from t_bool where col&0 = 0;
col
1 1
2 0
2行が
使用された時間:22.225(ms)クロックティック:37149920。
SQL> select * from t_bool where col | 1 = 1;
select * from t_bool where col | 1 = 1;
col
1 1
2 0
2行が
使用された時間:14.423(ms)クロックティック:24106790。


  ダメンデータベースのNULLに対するブール論理判定はOracleの判定とは異なることがわかります。Oracleでは、NULLと0はFALSEになり、NULL | 1はTRUEになります。ダメンでは、NULLに対するブール演算の結果は依然としてNULLです。さらに、Damengデータベースは、ビット単位のAND、ビット単位のOR、XORなど、ビット演算に便利な多くの関数を提供します。ビット単位の演算は、Oracleが提供する関数よりもはるかに包括的です。

おすすめ

転載: blog.csdn.net/qq_42726883/article/details/108629454