freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

oracle存儲(chǔ)過程-1(已修改)

2025-04-21 11:16 本頁面
 

【正文】 Oracle 數(shù)據(jù)類型及存儲(chǔ)方式 概述 通過實(shí)例,全面而深入的分析oralce的基本數(shù)據(jù)類型及它們的存儲(chǔ)方式。以O(shè)RACLE 10G為基礎(chǔ),介紹oralce 10g引入的新的數(shù)據(jù)類型。讓你對(duì)oracle數(shù)據(jù)類型有一個(gè)全新的認(rèn)識(shí)。揭示一些不為人知的秘密和被忽略的盲點(diǎn)。從實(shí)用和優(yōu)化的角度出發(fā),討論每種數(shù)據(jù)類型的特點(diǎn)。從這里開始o(jì)racle之旅! 第一部份 字符類型 167。 char 定長(zhǎng)字符串,會(huì)用空格來填充來達(dá)到其最大長(zhǎng)度,最長(zhǎng)2000個(gè)字節(jié)。 1. 新建一個(gè)測(cè)試表test_char.,只有一個(gè)char類型的列。長(zhǎng)度為10 SQL create table test_char(colA char(10))。 Table created 2. 向這個(gè)表中插入一些數(shù)據(jù)。 SQL insert into test_char values(39。a39。)。 1 row inserted SQL insert into test_char values(39。aa39。)。 1 row inserted SQL insert into test_char values(39。aaa39。)。 1 row inserted SQL insert into test_char values(39。aaaa39。)。 1 row inserted SQL insert into test_char values(39。aaaaaaaaaa39。)。 1 row inserted 注意:最多只能插入10個(gè)字節(jié)。否是就報(bào)錯(cuò)。 SQL insert into test_char values(39。aaaaaaaaaaa39。)。 insert into test_char values(39。aaaaaaaaaaa39。) ORA12899: value too large for column PUB_TEST.TEST_CHAR.COLA (actual: 11, maximum: 10) 3. 使用dump函數(shù)可以查看每一行的內(nèi)部存數(shù)結(jié)構(gòu)。 SQL select colA, dump(colA) from test_char。 COLA DUMP(COLA) a Typ=96 Len=10: 97,32,32,32,32,32,32,32,32,32 aa Typ=96 Len=10: 97,97,32,32,32,32,32,32,32,32 aaa Typ=96 Len=10: 97,97,97,32,32,32,32,32,32,32 aaaa Typ=96 Len=10: 97,97,97,97,32,32,32,32,32,32 aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97,97 注意:Typ=96 表示數(shù)據(jù)類型的ID。Oracle為每一種數(shù)據(jù)類型都進(jìn)行了編號(hào)。說明char類型的編號(hào)是96. Len =10 表示所在的內(nèi)部存儲(chǔ)的長(zhǎng)度(用字節(jié)表示)。雖然第一例只存了一個(gè)字符’a’,但是它還是占用了10個(gè)字節(jié)的空間。 97,32,32,32,32,32,32,32,32,32 表示內(nèi)部存儲(chǔ)方式??梢妎racle的內(nèi)部存儲(chǔ)是以數(shù)據(jù)庫字符集進(jìn)行存儲(chǔ)的。 97正好是字符a的ASCII碼。 可以使用chr函數(shù)把ASCII碼轉(zhuǎn)成字符。 SQL select chr(97) from dual。 CHR(97) a 要想知道一個(gè)字符的ASCII碼,可以使用函數(shù)ascii SQL select ascii(39。a39。) from dual。 ASCII(39。A39。) 97 32正好是空格的ascii碼值。 Char類型是定長(zhǎng)類型。它總會(huì)以空格來填充以達(dá)到一個(gè)固定寬度。 使用char類型會(huì)浪費(fèi)存儲(chǔ)空間。 Oracle的數(shù)據(jù)類型的長(zhǎng)度單位是字節(jié)。 SQL select dump(39。漢39。) from dual。 DUMP(39。漢39。) Typ=96 Len=2: 186,186 可見一個(gè)漢字在oracle中是占用了兩個(gè)字節(jié)的。 英文字母或符號(hào)只占用一個(gè)字節(jié)。 Char(10)最多可存放5個(gè)漢字。 167。 varchar2 是一種變長(zhǎng)的字符類型。最多可占用4000字節(jié)的存儲(chǔ)空間。 1. 創(chuàng)建一個(gè)表,只有一列,類型為varchar2,長(zhǎng)度為10 SQL create table test_varchar( col varchar2(10))。 Table created 2. 插入一些數(shù)據(jù) SQL insert into test_varchar values(39。a39。)。 1 row inserted SQL insert into test_varchar values(39。aa39。)。 1 row inserted SQL insert into test_varchar values(39。aaa39。)。 1 row inserted SQL insert into test_varchar values(39。aaaaaaaaaa39。)。 1 row inserted SQL insert into test_varchar values(39。aaaaaaaaaaa39。)。 2. 用dump函數(shù)查看每一行的內(nèi)部存儲(chǔ)結(jié)構(gòu)。 SQL select col, dump(col) from test_varchar。 COL DUMP(COL) a Typ=1 Len=1: 97 aa Typ=1 Len=2: 97,97 aaa Typ=1 Len=3: 97,97,97 aaaaaaaaaa Typ=1 Len=10: 97,97,97,97,97,97,97,97,97,97 Typ=1,說明varchar2類型在oracle中的類型編號(hào)為1 Len代表了每一行數(shù)據(jù)所占用的字節(jié)數(shù)。 后面是具體的存儲(chǔ)值。 由此可見,varchar2是存多少就占用多少空間。比較節(jié)省空間的。不會(huì)像char那樣用空格填充。 167。 byte 和char 在10g中,字符類型的寬度定義時(shí),可以指定單位。 Byte就是字節(jié)。 Char就是字符。 Varchar2(10 byte) 長(zhǎng)度為10個(gè)字節(jié)。 Varchar2(10 char) 長(zhǎng)度為10個(gè)字符所占的長(zhǎng)度。 Char(10 byte)長(zhǎng)度為10個(gè)字節(jié)。 Char(10 char) 長(zhǎng)度為10個(gè)字符所占的長(zhǎng)度。 一個(gè)字符占用多少個(gè)字節(jié),是由當(dāng)前系統(tǒng)采用的字符集來決定的。 如一個(gè)漢字占用兩個(gè)字節(jié)。 查看當(dāng)前系統(tǒng)采用的字符集 SQL select * from nls_database_parameters where parameter =39。NLS_CHARACTERSET39。 PARAMETER VALUE NLS_CHARACTERSET ZHS16GBK 如果在定義類型時(shí),不指定單位。默認(rèn)是按byte,即以字節(jié)為單位的。 采用char為單位的好處是,使用多字節(jié)的字符集。 比如,在ZHS16GBK字符集中,一個(gè)漢字占用兩個(gè)字節(jié)。 把數(shù)據(jù)表的某一列長(zhǎng)度定義為可存放10個(gè)漢字,通過下面的定義就可以了。 Create table test_varchar(col_char varchar2(10 char))。 這樣相對(duì)簡(jiǎn)單一些。在數(shù)據(jù)庫表設(shè)計(jì)時(shí)需要注意。 繼續(xù)實(shí)驗(yàn),新建一個(gè)表,包含兩列。一列采用byte為單位,一列采用char為單位 SQL create table test_varchar2 (col_char varchar2(10 char),col_byte varchar2(10 byte))。 Table created Col_char列,定義為可存放10個(gè)字符。 Col_byte 列,定義為可存放10個(gè)字節(jié)的字符。 。 試著在表中插入一些數(shù)據(jù) SQL insert into test_varchar2 values(39。a39。,39。a39。)。 1 row inserted SQL insert into test_varchar2 values(39。袁39。,39。a39。)。 1 row inserted SQL insert into test_varchar2 values(39。袁袁袁袁袁袁袁袁袁袁39。,39。aaaaaaaaaa39。)。 1 row inserted SQL insert into test_varchar2 values(39。袁袁袁袁袁袁袁袁袁袁39。,39。袁袁袁袁袁袁袁袁袁袁39。)。 insert into test_varchar2 values(39。袁袁袁袁袁袁袁袁袁袁39。,39。袁袁袁袁袁袁袁袁袁袁39。) ORA12899: value too large for column PUB_TEST.TEST_VARCHAR2.COL_BYTE (actual: 20, maximum: 10) 第一次, 在兩列中都插入字符a 第二次, 在col_char列插入字符’袁’,在col_byte插入字符a 第三次, 在col_char列中插入10個(gè)中文字符’袁’,在col_byte插入10個(gè)字符a 第四次, 在兩列中都插入中文字符’袁’時(shí),報(bào)錯(cuò)了。第二列長(zhǎng)度不夠。 再看看每一行的存儲(chǔ)結(jié)構(gòu) SQL select col_char, dump(col_char) from test_varchar2。 COL_CHAR DUMP(COL_CHAR) a Typ=1 Len=1: 97 袁 Typ=1 Len=2: 212,172 袁袁袁袁袁袁袁袁袁袁 Typ=1 Len=20: 212,172,212,172,212,172,212,172,212,172,212,172,212,172,212,172,21 當(dāng)我們?cè)赾ol_char列插入10個(gè)漢字時(shí),它的長(zhǎng)度為20. 盡管我們?cè)诙x的時(shí)候是采用varchar2(10,char). 由此可見,oracle是根據(jù)當(dāng)前數(shù)據(jù)庫采用的字符集,每個(gè)字符的所占字節(jié)數(shù) X 字段長(zhǎng)度來決定了該字段所占的字節(jié)數(shù)。 在本例中,varchar2(10,char)相當(dāng)于varchar2(20). 不信,我們可以試試看。 SQL desc test_varchar2。 Name Type Nullable Default Comments COL_CHAR VARCHAR2(20) Y COL_BYTE VARCHAR2(10) Y 當(dāng)采用多字節(jié)的字符集時(shí),定義字段長(zhǎng)度還是采用char為單位指定為佳。因?yàn)榭梢员苊庾侄伍L(zhǎng)度的問題。 當(dāng)不知道當(dāng)前數(shù)據(jù)庫采用的字符集,一個(gè)字符占用多少字節(jié)時(shí),可以使用lengthb函數(shù)。 SQL select lengthb(39。袁39。) from dual。 LENGTHB(39。袁39。) 2 167。 char還是varchar 1. 新建一個(gè)表,一列為char類型,一列為varchar2類型 SQL create table test_char_varchar(char_col char(20),varchar_col varchar2(20))。 Table created 2. 向該表中的兩列都插入相關(guān)的數(shù)據(jù) SQL insert into test_char_varchar values(39。Hello World39。,39。Hello World39。)。 1 row inserted SQL select * from test_char_varchar。 CHAR_COL VARCHAR_COL Hello World Hello World 3. 以char_col列為條件查詢 SQL select * from test_char_varchar where char_col =39。Hello World39。 CHAR_COL VARCHAR_COL
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1