新聞中心
Oracle數(shù)據(jù)庫是世界上使用最廣泛的關(guān)系型數(shù)據(jù)庫之一,它提供了許多功能和工具,用于管理和處理大量數(shù)據(jù)。在Oracle數(shù)據(jù)庫中,數(shù)據(jù)類型是指決定數(shù)據(jù)存儲方式和格式的一種屬性。在實際使用中,有時需要修改數(shù)據(jù)類型的長度,以適應(yīng)不同的需求。本文將介紹如何在Oracle數(shù)據(jù)庫中修改數(shù)據(jù)類型的長度。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出黃石免費做網(wǎng)站回饋大家。
1. 確定需要修改的數(shù)據(jù)類型和長度
在修改數(shù)據(jù)類型的長度之前,首先需要明確需要修改的數(shù)據(jù)類型和長度。在Oracle數(shù)據(jù)庫中,常見的數(shù)據(jù)類型包括字符型、數(shù)字型、日期型、布爾型等。不同的數(shù)據(jù)類型有不同的長度和存儲方式。例如,VARCHAR2數(shù)據(jù)類型用于存儲可變長度的字符串,其更大長度為4000個字符。如果需要將其擴展到8000個字符,就需要修改數(shù)據(jù)類型的長度。
2. 使用ALTER TABLE語句修改數(shù)據(jù)類型的長度
修改數(shù)據(jù)類型的長度最常用的方法是使用ALTER TABLE語句。ALTER TABLE語句用于修改數(shù)據(jù)庫表的結(jié)構(gòu),可以增加、刪除、重命名、修改字段等。在使用ALTER TABLE語句修改數(shù)據(jù)類型的長度時,需要注意以下幾點:
(1)要先備份原始數(shù)據(jù)
在執(zhí)行ALTER TABLE語句之前,更好先備份原始數(shù)據(jù)。這可以避免誤操作導(dǎo)致數(shù)據(jù)丟失,同時也便于回滾操作。
(2)要確保數(shù)據(jù)類型和長度的兼容性
在修改數(shù)據(jù)類型的長度時,要確保新的長度值與原有長度值兼容。如果數(shù)據(jù)類型的長度不兼容,就需要先將原有數(shù)據(jù)類型轉(zhuǎn)換為新的數(shù)據(jù)類型,然后再修改其長度。
(3)要考慮數(shù)據(jù)類型和長度的影響
修改數(shù)據(jù)類型和長度會對數(shù)據(jù)庫的性能和存儲空間產(chǎn)生影響。較大的數(shù)據(jù)類型和長度會占用更多的存儲空間,導(dǎo)致數(shù)據(jù)庫表變得更大、更復(fù)雜,查詢和插入數(shù)據(jù)的速度也會變慢。因此,在修改數(shù)據(jù)類型和長度時,要盡量避免對數(shù)據(jù)庫造成不必要的負(fù)擔(dān)。
3. 使用Oracle SQL Developer修改數(shù)據(jù)類型的長度
除了使用ALTER TABLE語句修改數(shù)據(jù)類型的長度,在Oracle SQL Developer中也可以通過圖形界面來修改數(shù)據(jù)類型的長度。Oracle SQL Developer是一種免費的數(shù)據(jù)庫開發(fā)工具,提供了一個方便的界面來管理和處理Oracle數(shù)據(jù)庫。
在Oracle SQL Developer中修改數(shù)據(jù)類型的長度,可以按照以下步驟進行:
(1)在Oracle SQL Developer中打開數(shù)據(jù)庫連接,并選擇要修改的表。
(2)在表中選擇要修改的列,并右鍵單擊該列,選擇“修改”選項。
(3)在彈出的“修改列”對話框中,找到“長度”屬性,將其修改為新的長度值。
(4)點擊“應(yīng)用”按鈕,提交修改操作。
:
以上就是關(guān)于如何在Oracle數(shù)據(jù)庫中修改數(shù)據(jù)類型的長度的詳細(xì)介紹。無論是使用ALTER TABLE語句還是Oracle SQL Developer界面,都需要謹(jǐn)慎操作,確保修改的數(shù)據(jù)類型和長度符合實際需求,不影響數(shù)據(jù)庫的性能和安全。同時,也要及時備份和恢復(fù)數(shù)據(jù)庫,以避免因誤操作導(dǎo)致數(shù)據(jù)丟失。
相關(guān)問題拓展閱讀:
- Oracle數(shù)據(jù)庫入門之函數(shù)/類型
- 數(shù)據(jù)庫建表年齡設(shè)置15到50
Oracle數(shù)據(jù)庫入門之函數(shù)/類型
Oracle主要數(shù)據(jù)類型
概述 各種數(shù)據(jù)庫所支持的數(shù)據(jù)類型大同小異 與標(biāo)準(zhǔn)SQL語言中的數(shù)據(jù)類型可能略有出入
類型 varchar 可以在聲明字段時設(shè)置它的長度上限 而且使用它之后 就不必再考慮空格的存在
若插入的字符串的長度低于長度上限 系統(tǒng)就會自動將其縮減為字符串的真實長度
number(m n) 既可以用來表示整型 也可以表示浮點型 但m不可以超過 如果n為 或者省略n 就代表它是整數(shù)
date 用來存放日期和時間
blob 通常是在應(yīng)用程序中使用到它 而不是在數(shù)據(jù)庫中利用SQL指令直接使用
比如通過JDBC技術(shù)頌清訪問數(shù)據(jù)庫 讀寫blob或clob類型的字段 即讀寫長的字符串信息等等
char 它是一種定長的字符類型 在Oracle數(shù)據(jù)庫不區(qū)分字符和字符串 它們被統(tǒng)稱為字符型或文本型
所謂定長的字符型是指 插入的字符串若沒有達到約定的字段長度 系統(tǒng)就會在字符串尾部自動補空格
同樣 讀取時的字段長度永遠是聲明時的字段長度 而且在比較字符串內(nèi)容的時候 也需要考慮到空格的過濾
nchar 它也是定長的字符串類型 它是SQL語言標(biāo)準(zhǔn)中規(guī)定的 通常采用Unicode編碼來保存不同國家或不同語言的字符
varchar SQL標(biāo)準(zhǔn)在定義varchar時并沒有保證能夠向前和向后兼容 即有可能隨著語言標(biāo)準(zhǔn)的修改而產(chǎn)生不兼容的問題
所以O(shè)racle定義了同varchar型類似的varchar 型 就是為了在Oracle以后的版本中 都永遠支持varchar 類型
Oracle這么做就是為了確保此類型向前后兼容 以達到能夠在Oracle系列數(shù)據(jù)庫中進行數(shù)據(jù)的導(dǎo)入和導(dǎo)出的目的
long 它和varchar 的差別在于 它不支持對字符串內(nèi)容進行檢索 即查詢時不可以對它的內(nèi)容進行條件查詢
而varchar 和char nchar型等等都可以在查詢的時候直接檢索字符串的內(nèi)容
補充 select * from v$nls_parameters;數(shù)據(jù)庫的配置信息以數(shù)據(jù)表的形式存在 通常稱其為關(guān)于數(shù)據(jù)的數(shù)據(jù)或數(shù)據(jù)字典
實際上它查詢的是數(shù)據(jù)字典中的一個視圖 其中NLS_CHARACTERSET對應(yīng)的是當(dāng)前的數(shù)據(jù)庫字符慎模集
缺省均為使用數(shù)據(jù)庫字符集 教程中使用的是安裝時默認(rèn)的ZHS GBK字符集 即漢字占 個字節(jié) 英文占 個字節(jié)
而NLS_NCHAR_CHARACTERSET對應(yīng)的是nchar或nvarchar 類型所采用的輔助字符集 即AL UTF 字符集
實際上AL UTF 是一種 位定長的Unicode編碼的字符集 而數(shù)據(jù)庫寬櫻緩字符集以及這種國家字符集都可以修改
但數(shù)據(jù)庫字符集修改后可能會面臨很嚴(yán)重的后果 除非是數(shù)據(jù)庫管理員 普通用戶不必對這方面進行深究
數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入導(dǎo)出的時候 如果源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫所采用的字符集不同 也很容易出問題
函數(shù)
概述 函數(shù)可以認(rèn)為是能夠完成相對獨立的功能的一段代碼的 Oracle函數(shù)相當(dāng)于其它語言中的方法或過程
Oracle函數(shù)可以分為單行函數(shù)和多行函數(shù)兩大類 Oracle函數(shù)都是有返回值的
所謂的單行函數(shù)是針對查詢結(jié)果中的每一行都起作用 都會返回一個結(jié)果
多行函數(shù)也就是所謂分組函數(shù) 是針對一組查詢的記錄 或者說多行 返回一個結(jié)果
單行 操作數(shù)據(jù)項 接受參數(shù)并返回處理結(jié)果 對每一返回行均起作用 可修改數(shù)據(jù)類型 可嵌套使用
單行函數(shù)分為字符函數(shù) 數(shù)值函數(shù) 日期函數(shù) 轉(zhuǎn)換函數(shù) 通用函數(shù)
多行 也稱分組函數(shù) 即對一組數(shù)據(jù)進行運算 針對一組數(shù)據(jù)(多行記錄)只能返回一個結(jié)果
多行函數(shù)包括avg() count() max() min() sum()等
比如select avg(sal) max(sal) min(sal) sum(sal) max(hiredate) min(hiredate) from emp;
續(xù)一 使用Oracle的系統(tǒng)函數(shù)中的單行函數(shù)可實現(xiàn)諸多功能 如對數(shù)據(jù)進行計算 控制數(shù)據(jù)的輸出格式
設(shè)置和改變?nèi)掌诘娘@示格式 進行數(shù)據(jù)類型轉(zhuǎn)換 使用NVL等函數(shù)處理空值 實現(xiàn)IF THEN ELSE多路分支邏輯等等
續(xù)二 轉(zhuǎn)換函數(shù)不會改變表中數(shù)據(jù)的字段類型和值 它就相當(dāng)于將數(shù)據(jù)復(fù)制了一份 所轉(zhuǎn)換的是復(fù)制之后的數(shù)據(jù)
數(shù)據(jù)類型轉(zhuǎn)換包括隱含轉(zhuǎn)換和顯式轉(zhuǎn)換兩種方式 建議使用顯式的數(shù)據(jù)類型轉(zhuǎn)換 確保SQL語句的可靠性
續(xù)三 通用函數(shù)適用于包括空值在內(nèi)的任何類型數(shù)據(jù) 通常用來實現(xiàn)空值的處理 空值的過濾或設(shè)置缺省值等
通用函數(shù)包括nvl() nvl () nullif() coalesce() case表達式 decode()等
嵌套 單行函數(shù)可以嵌套使用 嵌套層次無限制 分組函數(shù)最多可嵌套兩層 嵌套函數(shù)的執(zhí)行順序是由內(nèi)到外
單行比如select empno lpad(initcap(trim(ename)) ) 姓名 job sal from emp;
多行比如select max(avg(sal)) from emp group by deptno; 其實這里再使用分組函數(shù)就沒有意義了
說明 通常數(shù)據(jù)庫層面提供的函數(shù) 只是進行數(shù)據(jù)的簡單的處理 或者說是只能實現(xiàn)極為常規(guī)的功能
所以就不應(yīng)該 或者說是不要指望在數(shù)據(jù)庫查詢的層面來實現(xiàn)特別復(fù)雜的業(yè)務(wù)邏輯
如果應(yīng)用程序的邏輯跟數(shù)據(jù)庫混在一起的話 會不利于代碼的維護和更新
而且也不利于數(shù)據(jù)庫的管理 包括數(shù)據(jù)移植 數(shù)據(jù)庫導(dǎo)入導(dǎo)出等等
日期類型
概述 在計算機操作系統(tǒng)或者各種高級編程語言中 日期通常會被保存成一個長整數(shù) 通常記錄的是毫秒
Oracle內(nèi)部以數(shù)字格式存儲日期和時間信息 世紀(jì) 年 月 日 小時 分鐘 秒
缺省的日期格式是DD—MON—YY 可使用sysdata函數(shù)獲取當(dāng)前系統(tǒng)日期和時間
運算 日期型數(shù)據(jù)可以直接加或減一個數(shù)值 結(jié)果認(rèn)為日期 約定的該數(shù)值代表的是相加減的天數(shù)
兩個日期型數(shù)據(jù)可以相減 結(jié)果為二者相差多少天 二者不能 因為日期相加是沒有意義的
NVL()函數(shù)
概述 它用于將空值null替換為指定的缺省值 適用于字符 數(shù)字 日期等類型數(shù)據(jù)
格式 NVL(exp exp ) 如果表達式exp 值為null 則返回exp 值 否則返回exp 值
舉例 select empno ename sal m sal+nvl(m ) from emp;
select empno ename job nvl(job No job yet ) from emp;
NVL ()函數(shù)
概述 它用于實現(xiàn)條件表達式功能
格式 NVL (exp exp exp ) 如果表達式exp 值不為null 則返回exp 值 否則返回exp 值
舉例 select empno ename sal m nvl (m sal+m sal) 總收入 from emp;
NULLIF()函數(shù)
概述 它用于數(shù)據(jù)等價性比較并根據(jù)比較結(jié)果返回null或其中一個被比較的數(shù)值 實際開發(fā)中應(yīng)用并不是很多
格式 nullif(exp exp ) 如果表達式exp 與exp 的值相等 則返回null 否則返回exp 的值
舉例 select name 原名 nullif(pen_name name) 化名 from author;
COALESCE()函數(shù)
概述 它用于實現(xiàn)數(shù)據(jù)“接合”功能
格式 coalesec(exp exp ) 依次考察各參數(shù)表達式 遇到非null值即停止并返回該值
若表達式均為null值 則返回null 通常最后一個表達式都是能確保不是空值的字段
舉例 select empno ename sal m coalesec(sal+m sal ) 總收入 from emp;
CASE表達式
概述 它用于實現(xiàn)多路分支結(jié)構(gòu)
格式 case exp when parison_exp then return_exp
when parison_expn then return_expn
else else_exp>
end
舉例 select empno ename sal
case deptno when then 財務(wù)部
when then 研發(fā)部
when then 銷售部
else 未知部門
end 部門
from emp;
說明 CASE中的每一個表達式(如deptno 財務(wù)部等)都可以是復(fù)合而成的
這種對齊方式的書寫是為了增加可讀性 當(dāng)然也可以把代碼寫在同一行上
其中case到end之間的整體就相當(dāng)于普通查詢中的一個字段 end后面的“部門”是別名
DEDODE()函數(shù)
概述 和case表達式類似 它也用于實現(xiàn)多路分支結(jié)構(gòu)
格式 decode(col|expression search result
)
舉例 select empno ename sal
decode(deptno 財務(wù)部
研發(fā)部
銷售部
未知部門 )
部門
from emp;
COUNT()函數(shù)
格式 count(*)返回組中總記錄數(shù)目
count(exp)返回表達式exp值非空的記錄
count(distinct(exp))返回表達式exp值不重復(fù)的 非空的記錄數(shù)目
舉例 select count(*) from emp; 缺省的情況下 整個表就是一組
select count(m) from emp; 返回emp表中m字段不為空的記錄(行)數(shù)目
select count(distinct(deptno)) from emp; 查找deptno值為非空且不重復(fù)的記錄數(shù)目
分組函數(shù)與空值
概述 分組函數(shù)省略列中的空值 可使用NVL()函數(shù)強制分組函數(shù)處理空值
舉例 select avg(m) from emp; 等價于sum(m)/count(m)
select sum(m) from emp; 計算表中非空的m值的總和
select avg(nvl(m )) from emp; 等價于avg(nvl(m ))/count(*)
GROUP BY子句
概述 它用于將表中數(shù)據(jù)分成若干小組
格式 select column group_function(column)
from table
;
舉例 select deptno avg(sal) from emp group by deptno;
說明 出現(xiàn)在SELECT列表中的字段 如果不是包含在組函數(shù)中 那么該字段必須同時在GROUP BY子句中出現(xiàn)
包含在GROPY BY子句中的字段則不必須出現(xiàn)在SELECT列表中 子句執(zhí)行順序是where→group by→order by缺省按升序排列
補充 select deptno job avg(sal) from emp group by deptno job order by deptno desc; 基于多個字段的分組
select deptno avg(sal) from emp; 非法
注意 如果沒有GROUP BY子句 SELECT列表中不允許出現(xiàn)字段(單行函數(shù))與分組函數(shù)混用的情況
WHERE中不允許使用分組函數(shù) 如select deptno avg(sal) from emp where avg(sal)> group by deptno; 非法
這跟子句執(zhí)行的順序有關(guān) where子句更先執(zhí)行 在執(zhí)行where子句的時候還沒有執(zhí)行過group by子句
于是程序不知道這是在分組 也不曾計算過avg(sal)的組內(nèi)平均工資 所以在where子句中不允許使用分組函數(shù)
由于還沒有執(zhí)行過group by子句 所以此時就不確定如何怎么分組以及分多少個組
所以where子句中只能進行初級過濾 此時可以使用HAVING子句實現(xiàn)對平均工資的過濾
HAVING子句
概述 它用于過濾分組
格式 select column group_function(column)
from table
;
舉例 select deptno job avg(sal)
from emp
where hiredate >= to_date( yyyy mm dd )
group by by deptno job
having avg(sal) >
數(shù)據(jù)庫建表年齡設(shè)置15到50
在Oracle數(shù)據(jù)庫中,可以利用Create Table語句中嵌套子查詢來實現(xiàn)基于已有的表或者視圖來創(chuàng)建新表。這個功能可能對于大部分用戶來說,不會感到陌生。但是在使用這個語句的過程中,需要遵循哪些限制條件呢?對于這一點,可能不少數(shù)據(jù)庫管理員沒有一個清晰的認(rèn)識。
為此,筆者就在這里給大家總結(jié)一下,利用查詢來創(chuàng)建表時需要遵守的一些限制。
限制條件一:不能夠改變數(shù)據(jù)類型與長度。
在利用子查詢來創(chuàng)建新表的時候,數(shù)據(jù)庫管理員可以修改新表中列的名稱,但是不能夠修改列的數(shù)據(jù)類型和長度。新表中所有列的數(shù)據(jù)類型和毀老長度必須與查詢列一致。
如數(shù)據(jù)庫管理員從一個員工信息表中獲取員工姓名、員工出生日期等信息創(chuàng)建一個新表。如果在員工信息表中員工出生日期是一個日期型的字段,那么在新表中就必須也是日期型的數(shù)據(jù)類型。在創(chuàng)建新表的過程中,數(shù)據(jù)庫管理員不能夠修改數(shù)據(jù)類型。
那么如果系統(tǒng)管理員需要更改數(shù)據(jù)類型,如想把日期型的數(shù)據(jù)調(diào)整為字符型的數(shù)據(jù),難道就沒有其他辦法了嗎?其實,通過一些其他方法,這個需求仍然可以實現(xiàn)。
上面的限制條件說,新表中的數(shù)據(jù)類型必須與查詢列中的數(shù)據(jù)類型相同,而不是說跟基表中的數(shù)據(jù)類型相同。為此如果數(shù)據(jù)庫管理員想要把日期型的數(shù)據(jù)(基表中的數(shù)據(jù)類型)調(diào)整為字符型的數(shù)據(jù)類型(新表中的數(shù)據(jù)類型),那么只需要在查詢語句中,利用日期字符轉(zhuǎn)換函數(shù),將日期型的數(shù)據(jù)轉(zhuǎn)換為字符型的數(shù)據(jù)即可。
在創(chuàng)建新表時,數(shù)據(jù)類型是以查詢列為準(zhǔn),而不是以基表中列的數(shù)據(jù)類型為準(zhǔn)。所以通過在查詢語句中使用數(shù)據(jù)類型轉(zhuǎn)換函數(shù),就可以改變新表中的數(shù)據(jù)類型。
限制條件二:不能夠復(fù)制約束條件與列的默認(rèn)值。
在基表中,可能某些字段有約束條件,如唯一性約束等等。
某些字段也可能設(shè)置了默認(rèn)值,如系統(tǒng)的當(dāng)前時間等等。但是,如果利用子查詢來創(chuàng)建信標(biāo)的話,那么這些字段的約束條件、默認(rèn)值等等都不會在新表中體現(xiàn)出來。也就是說,這些內(nèi)容需要數(shù)據(jù)庫管理員在新表創(chuàng)建后手工重新建立。如果有需要的話,要對照基表的約束條件與默認(rèn)值,分別在新表的字段中進行定義。
這個沒有取巧的方法。至少到限制為止,筆者還沒有找到可以利用其他方法來突破這個限制。為此數(shù)據(jù)庫管理員在利用子查詢來創(chuàng)建這個新表的時候,要特別注意這個約束條件。特別是默認(rèn)值,不少管理員在利用這個方法創(chuàng)建新表后,會忘記重新設(shè)置相關(guān)列的默認(rèn)值。
限制條件三:不能夠為新表指定表空間。
在正常情況下冊御,利用Create創(chuàng)建表的時候,數(shù)據(jù)庫管理員可以為表指定其所屬的表空間。如果不指定的話,則其默認(rèn)情況下采用的是當(dāng)前用戶的默認(rèn)表空間。但是在使用查詢來創(chuàng)建新表的時候,在語句中不能夠為新表指定表空間。如使用TableSpace關(guān)鍵字為其指定表空間的話,則系統(tǒng)會提示錯誤信息:SQL命令未正確結(jié)束。
注意這并不是說這個SQL語句哪里有問題,而是指不能夠在這種方式下為新表指定表空間。從這里也可以看出,Oracle數(shù)據(jù)庫系統(tǒng)的錯誤提示還是有模棱兩可的地方,還需要改進,即錯誤信息要能夠反映出真實的問題所在。因為不能夠為新表指定表空間,此時其所屬的表空間就是執(zhí)行這條語句的用戶的默認(rèn)表空間。
那么數(shù)據(jù)庫管理員就可以通過采用不同的用戶來為新表指定所屬的表空間。如現(xiàn)在數(shù)據(jù)庫管理員要想把這個新表放置在sales表空間下。那么就可以新建一個用戶或者利用原有的用戶,先把這個用戶的默認(rèn)表空間設(shè)置為sales。然后再利用這個用戶來執(zhí)行這條語句(必要的時候可能需要調(diào)整這個用戶的權(quán)限)。
通過這種方式就可以控制這種形式創(chuàng)建新表所屬的表空間。俗話說,條條道路通羅馬。既然不能夠利用直接的方式來為這新表設(shè)定表空間,那么就只能夠采取這曲線救國的方法了。只要最終能夠達到預(yù)計的目的就好。
限制條件四:某些數(shù)據(jù)類型的數(shù)據(jù)不能夠?qū)搿?/p>
如果在查詢結(jié)果中,帶有大對象數(shù)據(jù)類型或者Long數(shù)據(jù)類型的數(shù)據(jù),則這個語句就會執(zhí)行不成功。
換句話說,州余巖如果采用子查詢來創(chuàng)建新表,則在Select語句中就不能夠包含大對象數(shù)據(jù)類型或者Long數(shù)據(jù)類型。這是Oracle數(shù)據(jù)庫的一種強制性規(guī)定。如果確實需要這些數(shù)據(jù)的話,則可以采用其它的方式來解決。如先不導(dǎo)入這些類型的數(shù)據(jù)。先利用子查詢把表建立起來。
等新表建立完成后。再利用Update關(guān)鍵字結(jié)合子查詢來更新這些列的數(shù)據(jù)即可。雖然這么操作比較麻煩一點,但是總比不能夠?qū)崿F(xiàn)要好。
在使用這種方法創(chuàng)建新表時,除了要注意上面這些限制條件之外,更好再掌握下面這些技巧。這有助于提高通過查詢來創(chuàng)建新表的利用價值。
技巧一:使用Nologging選項提高建表效率。
Nologging這個可選項相信大部分?jǐn)?shù)據(jù)庫管理員都知道其作用。但是到真的需要用到這個選項時,很多人就忘記了。這個選項主要是用來控制重做日志的。即在對數(shù)據(jù)庫進行相關(guān)的操作時,是否需要日志文件中寫入相關(guān)的記錄。
因為日志文件是一把雙刃劍。一方面王日志文件中記錄所有的操作,有利于數(shù)據(jù)庫的安全。當(dāng)出現(xiàn)一些錯誤的操作時,可以通過恢復(fù)事務(wù)日志挽回?fù)p失。另一方面,由于數(shù)據(jù)庫同時需要更新數(shù)據(jù)、更新事務(wù)日志信息,為此當(dāng)對數(shù)據(jù)庫進行大批量的操作時,就會降低這個操作的性能,延長時間。
通過查詢來創(chuàng)建新表是也遇到了類似的問題。因為在利用子查詢創(chuàng)建新表時,如果不采用這個選項的話,則在新表中每插入一條記錄都將會產(chǎn)生重做日志信息,這會占用額外的空間與時間。如果插入的記錄比較多的話,這會給數(shù)據(jù)庫的正常運行帶來很大的負(fù)面影響。在大部分情況下,筆者建議使用Nologging選項來節(jié)省創(chuàng)建新表的時間。
因為通過子查詢來創(chuàng)建新表,基本上不會對基表的內(nèi)容產(chǎn)生任何不利的影響。所以即使不用重做日志,也不會帶來多大的風(fēng)險。換句話話說,此時投入與產(chǎn)出不成正比。也就是說,此時犧牲性能,來換取所謂的安全,是不值得的。因為不影響其它表的數(shù)據(jù),所以風(fēng)險基本上就談不上。
在這種情況下,采用Nologging選項,讓數(shù)據(jù)庫在創(chuàng)建記錄的時候,不往事務(wù)日志中記錄信息,以縮短創(chuàng)建新表的時間。筆者認(rèn)為這是非常明智的做法。
技巧二:利用查詢來創(chuàng)建表結(jié)構(gòu),不導(dǎo)入數(shù)據(jù)。
有時候我們需要復(fù)制表的結(jié)構(gòu),而不需要復(fù)制數(shù)據(jù)。在PL Developer開發(fā)工具中,可以直接復(fù)制某張表。
但是這么操作的話,除了會復(fù)制表的結(jié)構(gòu)外,還會把相關(guān)的數(shù)據(jù)都復(fù)制過去。顯然,這不符合我們的要求。而表中的紀(jì)錄比較多的時候,這個復(fù)制作業(yè)就會占用比較長的時間與數(shù)據(jù)庫服務(wù)器的資源,會給數(shù)據(jù)庫的性能帶來不利的影響。那么是否有方法,可以只復(fù)制表的結(jié)構(gòu),而不導(dǎo)入任何數(shù)據(jù)呢?
在談這個解決方案之前,大家先來回顧一下Select語句。
在使用Select語句中,可以帶Where條件語句。如果要查詢的記錄沒有一條記錄符合Where條件中規(guī)定的限制條件時,則在顯示窗口,仍然會顯示要查詢的各個列的名稱。但是不會顯示任何一條記錄?,F(xiàn)在要復(fù)制表的結(jié)構(gòu),而不需要導(dǎo)入任何數(shù)據(jù),就可以參考這種實現(xiàn)機制來完成。
其實要實現(xiàn)這個需求的話,數(shù)據(jù)庫管理員就可以利用通過查詢來創(chuàng)建新表的方法。如先利用Select語句將相關(guān)的列等結(jié)構(gòu)查詢出來,然后再在Where查詢語句中,設(shè)置一些根本不存在的條件。如此的話,最終的新表中就只有表的結(jié)構(gòu),而沒有任何基礎(chǔ)表中的紀(jì)錄。
可見,雖然通過子查詢來創(chuàng)建新表是一項比較強大的功能,可以實現(xiàn)一些復(fù)雜的管理需求。但是在使用這個功能的時候,上面對這些限制條件數(shù)據(jù)庫管理員要銘記在心。否則的話,很可能在使用這項功能的時候,四處碰壁;或者最后竹籃子打水一場空。
oracle 修改數(shù)據(jù)庫類型長度的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于oracle 修改數(shù)據(jù)庫類型長度,如何在Oracle數(shù)據(jù)庫中修改數(shù)據(jù)類型的長度?,Oracle數(shù)據(jù)庫入門之函數(shù)/類型,數(shù)據(jù)庫建表年齡設(shè)置15到50的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計和制作領(lǐng)域具有豐富的經(jīng)驗。
網(wǎng)站標(biāo)題:如何在Oracle數(shù)據(jù)庫中修改數(shù)據(jù)類型的長度?(oracle修改數(shù)據(jù)庫類型長度)
網(wǎng)站路徑:http://www.dlmjj.cn/article/coeecps.html


咨詢
建站咨詢
