国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數據庫 > 文庫 > 正文

達夢數據庫6.0之數據類型使用體驗

2024-09-07 22:12:18
字體:
來源:轉載
供稿:網友

登陸達夢數據庫:
C:/dmdbms/bin>isql
isql V6.0.2.51-Build(2009.12.23)
SQL>login
server name:localhost
user name:test
password:
port:12345
dm_login time used:190.370(ms)

首先看一下字符類型CHAR和VARCHAR:

SQL>create table t_type
2   (id number, name varchar2(30));
create table t_type
(id number, name varchar2(30));
time used: 436.197(ms) clock tick:729306570.
SQL>create table t_char(col char(8000));
create table t_char(col char(8000));
列定義長度超長.error code = -1334
SQL>create table t_char(col char(4000));
create table t_char(col char(4000));
列定義長度超長.error code = -1334
SQL>create table t_char(col char(3000));
create table t_char(col char(3000));
time used: 20.943(ms) clock tick:35001630.

達夢為了兼容Oracle的字符類型,因此VARCHAR2這種Oracle特殊的類型也是支持的。和Oracle不同的是,CHAR類型和VARCHAR類型的最大長度都是8188,但是這個值并不是固定的,當數據庫頁面大小不同的時候,這個最大值也是不固定的,比如32K頁面大小,字符類型CHAR或VARCHAR的最大值是8188,而如果是16K頁面大小,則字符類型最大值是8000,對于當前8K頁面大小,字符類型最大值只有3900,而如果頁面大小為4K,則字符類型最大長度只要1900。

對于Oracle數據庫而言,CHAR類型最大值是2000而VARCHAR2是4000,雖然達夢數據庫絕大部分情況下,都比這個范圍要大,不過個人并不認為這是一個很好的設計。不同數據庫之前的遷移對于一個成熟系統而言是很常見的,而不同數據庫的頁面大小不同也是很平常的事情,達夢的這種設計雖然使得不同頁面的最大值盡量擴大,但是卻給不同頁面間數據庫的遷移埋下了問題。當數據庫向頁面更大的數據庫遷移不會存在問題,但是反之可能造成表無法創建、數據丟失或數據被截斷的情況。而且感覺達夢數據庫在實現VARCHAR類型的時候還有一定的問題:

SQL>insert into t_type values (1, 'a ');
insert into t_type values (1, 'a ')
1 rows affected
time used: 0.464(ms) clock tick:765250.
SQL>select id, name || 'a' from t_type;
select id, name || 'a' from t_type;
id
1       1       a a
1 rows got

至此沒有問題,VARCHAR類型中的空ge被保留,但是對VARCHAR類型進行查詢的時候:

SQL>select * from t_type where name = 'a ';
select * from t_type where name = 'a ';
id              name
1       1       a
1 rows got
time used: 29.588(ms) clock tick:49459510.
SQL>select * from t_type where name = 'a';
select * from t_type where name = 'a';
id              name
1       1       a
1 rows got
time used: 0.314(ms) clock tick:517060.
SQL>select * from t_type where name = 'a    ';
select * from t_type where name = 'a    ';
id              name
1       1       a
1 rows got
time used: 0.421(ms) clock tick:694830.

顯然在比較的時候,空ge是沒有被考慮在內的,這對于CHAR類型是沒有問題的,但是VARCHAR類型似乎并不應該具有這樣的特性:

SQL>insert into t_type values (2 ,'a');
insert into t_type values (2 ,'a')
1 rows affected
time used: 0.401(ms) clock tick:661320.
SQL>select * from t_type
2   where name = 'a';
select * from t_type
where name = 'a';
id              name
1       1       a
2       2       a
2 rows got
time used: 0.397(ms) clock tick:653730.
SQL>alter table t_type add primary key (name);
alter table t_type add primary key (name);
違反唯一性約束.error code = -3100

顯然在達夢中即使VARCHAR類型的字段也認為’a’和’a_’(這里用下劃線來標識空ge)是相等的,這種情況會引發歧義,我們認為已經相等的數據在經過相同的處理后就會變得又不相等了:

SQL>select id, name || 'a' from t_type;
select id, name || 'a' from t_type;
id
1       1       a a
2       2       aa
2 rows got
time used: 36.391(ms) clock tick: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));
create table t_num
(c1 number,
c2 number(4, 1),
c4 number(2, 3));
無效的數據類型.error code = -2520
SQL>create table t_num
2   (c1 number,
3   c2 number(4, 1));
create table t_num
(c1 number,
c2 number(4, 1));
time used: 42.803(ms) clock tick:71554500.

雖然達夢支持數值類型NUMBER和Oracle的NUMBER類型十分相似,但是二者還是有區別的,顯然達夢不支持標度小于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> insert into t_num
  2  values (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,而在達夢中,默認是20。

SQL>insert into t_num values
2   (1234567890123456789012, 123.1);
insert into t_num values
(1234567890123456789012, 123.1)
數據溢出.error code = -2502
SQL>create table t_num2
2   (c1 number(*, 0));

第2行: '*'附近有語法錯誤,另外達夢中也不支持NUMBER(*, 0)的寫法。達夢和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);
time used: 15.516(ms) clock tick:25924810.
SQL>INSERT INTO T_INC (NAME)
2   VALUES ('A');
INSERT INTO T_INC (NAME)
VALUES ('A')
1 rows affected
time used: 36.438(ms) clock tick:60908390.
SQL>INSERT INTO T_INC (NAME)
2   VALUES ('B');
INSERT INTO T_INC (NAME)
VALUES ('B')
1 rows affected
time used: 0.655(ms) clock tick:1082480.
SQL>SELECT * FROM T_INC;
SELECT * FROM T_INC;
ID              NAME
1       1       A
2       3       B
2 rows got
time used: 1.769(ms) clock tick:2943530.

接著看看達夢數據庫的時間類型:

SQL>create table t_date
2   (day date, tim time, o_date datetime);
create table t_date
(day date, tim time, o_date datetime);
time used: 60.083(ms) clock tick:100448590.
SQL>insert into t_date
2   values ('2010-04-01', '16:22:57', to_date('2010-4-1 16:22:57', 'yyyy-mm-dd h
h24:mi:ss'));
insert into t_date
values ('2010-04-01', '16:22:57', to_date('2010-4-1 16:22:57', 'yyyy-mm-dd hh24:
mi:ss'))
1 rows affected
time used: 56.728(ms) clock tick: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:57.000000
1 rows got
time used: 0.501(ms) clock tick:828690.

達夢數據庫中的DATE和Oracle中的DATE有本質的區別,這一點似乎和SQLSERVER中的DATE類型比較相似。它把日期和時間分成了兩個部分,對應兩種不同的類型DATE和TIME,DATE的精度只到天,而TIME的精度到毫秒。達夢中也有即包括年月日也包括時分秒的數據類型DATETIME,也就是TIMESTAMP類型。不過這個類型和Oracle的DATE不同,它包含毫秒信息,相比較和Oracle的TIMESTAMP類型更相似一些,不過Oracle的TIMESTAMP不但支持到微秒,而且還可以包含時區的信息。還有一點也是達夢的時間類型所不支持的,公元前的日期:

SQL>insert into t_date
2   (day) values ('-235-4-1');
insert into t_date
(day) values ('-235-4-1')
非法的時間日期類型數據.error code = -2519
SQL>insert into t_date
2   (o_date) values (to_date('-235-4-1', 'syyyy-mm-dd'));
insert into t_date
(o_date) values (to_date('-235-4-1', 'syyyy-mm-dd'))
無效的時間格式掩碼.error code = -2528

達夢支持多種INTERVAL類型的時間,雖然提供的類型比Oracle提供的要多很多,但是本質上并沒有增加什么額外的新類型。有一點需要注意,兩個Oracle日期類型相減后得到的是一個NUMBER類型的數值,表示的是兩個日期相差的天數,而達夢中得到的是INTERVAL類型。下面簡單介紹一下大字段類型,在達夢數據庫中被稱為多媒體類型:

SQL>create table t_text
2   (c1 text, c2 blob, c3 clob);
create table t_text
(c1 text, c2 blob, c3 clob);
time used: 139.863(ms) clock tick:233839160.

TEXT類型類似Oracle中的LONG,不過沒有LONG那么多的限制。TEXT、BLOB和CLOB的最大長度都是2G-1,相當于Oracle LONG字段的長度,比8i中的BLOB和CLOB長度小了一半。在達夢數據庫中沒有BFILE對應的數據類型。達夢還提供了Oracle在SQL類型中沒有支持的BOOLEAN類型:

SQL>create table t_bool
2   (col boolean);
create table t_bool
(col boolean);
time used: 66.991(ms) clock tick:111995500.
SQL>insert into t_bool values (true);
insert into t_bool values (true)
1 rows affected
time used: 0.538(ms) clock tick:889960.
SQL>insert into t_bool values (0);
insert into t_bool values (0)
1 rows affected
time used: 0.393(ms) clock tick:647120.
SQL>insert into t_bool values (null);
insert into t_bool values (null)
1 rows affected
time used: 0.337(ms) clock tick:555060.
SQL>select * from t_bool;
select * from t_bool;
col
1       1
2       0
3       NULL
3 rows got
time used: 37.112(ms) clock tick:62038100.
SQL>select * from t_bool where col & 0 = 0;
select * from t_bool where col & 0 = 0;
col
1       1
2       0
2 rows got
time used: 22.225(ms) clock tick:37149920.
SQL>select * from t_bool where col | 1 = 1;
select * from t_bool where col | 1 = 1;
col
1       1
2       0
2 rows got
time used: 14.423(ms) clock tick:24106790.

可以看到,達夢數據庫對于NULL的布爾邏輯判斷和Oracle中是不同的,在Oracle中,NULL & 0結果是FALSE,而NULL | 1結果是TRUE。在達夢中,NULL進行任何布爾運算的結果都仍然是NULL。此外達夢數據庫對于位操作提供了很多方便的函數,比如按位與、按位或、異或等,在位操作方面確實比Oracle提供的函數要全面得多。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
91在线高清| 久久久久久77777| 国产精品㊣新片速递bt| www.狠狠色.com| h网址在线观看| 成年网站免费入口在线观看| 国产精品一区二三区| 国产激情视频在线| 国产区视频在线| 天天草天天干| 国产美女福利在线| 2019年中文字幕| 欧美色第一页| 国产精品美女一区二区视频| 天天激情综合| 国产精品免费视频一区一| 在线视频xx| 天堂在线中文资源| 精品电影在线| 国产麻豆精品视频一区二区| 在线一区二区三区精品| 国产麻豆视频网站| 亚洲成人av在线影院| 国产乱视频在线观看播放| 亚洲精品天堂在线| 国产深夜福利| 国产毛片视频| 麻豆国产视频| 日本一二三区视频免费高清| 国产精品18久久久久网站| 成在在线免费视频| 交换国产精品视频一区| 亚洲成人av高清| 伊人春色在线| 国产精品扒开做爽爽爽的视频| 91超碰国产在线| 福利视频网站导航| 狠狠插狠狠操| 欧美高清视频| 青青草原国产在线观看| 69视频在线| 99爱在线观看| 影音av资源站| 日本一级理论片在线大全| 亚洲成人在线播放| 在线观看av网站永久| 国产福利在线看| 91久久精品国产性色| 在线午夜影院| 伊人中文在线| 四虎精品视频| 欧洲亚洲精品视频| 免费男女羞羞的视频网站中文字幕| 精精国产xxxx视频在线动漫| 国产黄色在线| 香蕉视频网站在线观看| 男人天堂v视频| 中文字幕视频在线| 中文在线观看视频| 日韩a视频在线观看| 免费在线看v| 尤物网址在线观看| 国产视频三区| av人人综合网| 国产免费永久在线观看| 国产高清免费在线播放| 亚洲一区二区三区在线观看网站| jizz亚洲大全| 国产在线高潮| 亚洲精品自拍区在线观看| 久热中文字幕在线观看| 国产一级免费| 免费一区二区三区视频狠狠| 91av资源在线| 亚洲国产精品区| 国产鲁鲁视频在线观看免费| 国产超碰97| 久久国产综合视频| 中文岛国精品亚洲一区| 丁香花高清视频完整版在线观看| 91极品在线| 中文字幕国产在线| 精品久久亚洲一级α| 欧洲一区av| 国产叼嘿网站免费观看不用充会员| 日本啊v在线| 精品国产美女福利到在线不卡| 国产在线观看色| a级在线观看| 在线观看午夜av| 91青青在线视频| 国产精品yjizz视频网一二区| 丁香视频五月| 成人精品福利| 久草网在线视频| 热99re久久精品这里都是免费| 99久久99热久久精品免费看| 国产激情视频在线观看| 最新中文字幕av专区| 国产女人在线视频| 最好看更新中文字幕| 免费精品国产自产拍观看| 亚洲天堂久久久| 天天激情综合| 人人在线视频| 免费观看v片在线观看| 阿v免费在线观看| 女人色在线免费视频| 超碰人人在线| 国产亚洲精品拍拍拍拍拍| 天堂资源最新版在线视频观看免费网| 另类综合图区| 国产免费黄网站| 91xxx在线观看| 国产精品9区| 中文资源在线网| а√最新版地址在线天堂| 欧美婷婷久久五月精品三区| 黄色av电影在线播放| 1区2区3区在线| 91麻豆精品国产91久久| 精品176二区| 久久久久久久美女| 国产亚洲依依| wwwww亚洲| 国产成人精品男人的天堂538| baoyu777.永久免费视频| 国产在线看片| 国产精品久久久久白浆| 亚洲综合在线不卡| 国产视频一二| 久久国产精品久久久久久小说| 2018av男人天堂| 亚洲www色| 国产福利图片| 国产在线更新| 四虎久久影院| 精品欧美日韩一区二区| 久久精品国产亚洲a∨麻豆| 国产三级做爰在线观看| 玖玖在线视频| 午夜影院在线| 国产激情视频一区二区| 亚洲wwwwww| 91中文在线| 国产一级片网站| 欧美韩日国产| 亚洲日本一区二区三区在线观看| 最近最好的中文字幕2019免费| a级片国产精品自在拍在线播放| 国产激情在线| 国产激情视频一区二区| 国产乱在线观看视频| 久久五月精品| 狠狠插狠狠操| 久久精品视频观看| 免费在线观看a| 黄色av免费看| 久热久精久品这里在线观看| 一级黄色av| 日本调教视频在线观看| 一级黄色av| 日本亚洲精品| av在线首页| av在线播放av| 亚洲社区在线| 欧美日韩在线资源| 国产真实伦在线观看| 高清av在线| 国产三级视频| 精品乱码一区二区三四区视频| 国产精品黄页网站在线播放免费| 国产女主播在线| 在线视频中文字幕久| 精品欧美色视频网站在线观看| 国产对白国语对白| 中文字幕av免费| www.国产精| 1区2区3区在线| 99久久国产视频| 欧美啪啪精品| 国产天堂av| 波多野结衣久久高清免费| 国产精品亚洲第五区在线| 9999在线视频| 国产精品一区二区婷婷| 精品国语对白精品自拍视| 日本成人网址| 777电影在线观看| 性国产高清在线观看| 国产在线高潮| 在线观看视频污| 中文字幕第一页在线| 日本啊v在线| 精品国产一区二区三区四区阿崩 | 国产精品秘入口| 不卡av免费观看| 精品无人区乱码1区2区3区免费| 免费在线播放av| 中文在线有码|