您好,登錄后才能下訂單哦!
本篇文章為大家展示了數(shù)據(jù)庫(kù)原理疑難問(wèn)題解答的示例分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
1、Interbase怎么與Access聯(lián)接?
答:首先在ACCESS中建立數(shù)據(jù)庫(kù),并為這個(gè)數(shù)據(jù)庫(kù)指定訪問(wèn)的別名以及用戶名和口令,然后在Interbase中建立一個(gè)外部數(shù)據(jù)庫(kù)聯(lián)接(注意是使用當(dāng)初指定的數(shù)據(jù)庫(kù)別名),在用戶名和口令處指定為先前設(shè)置的用戶名和口令,在程序設(shè)計(jì)語(yǔ)言中使用一個(gè)數(shù)據(jù)庫(kù)對(duì)象,設(shè)置好這個(gè)對(duì)象的相關(guān)屬性(包括數(shù)據(jù)庫(kù)別名、用戶名及口令等),這樣就可以通過(guò)這個(gè)對(duì)象訪問(wèn)Access數(shù)據(jù)庫(kù)了。
2、Access是否可以用來(lái)建立網(wǎng)站留言板?
答:應(yīng)當(dāng)是可以的,但一般來(lái)說(shuō)不使用它作留言板的后臺(tái)數(shù)據(jù)庫(kù),因?yàn)锳ccess適用的對(duì)象是中小型企業(yè)的數(shù)據(jù)庫(kù)管理,一般網(wǎng)站留言板都應(yīng)使用較大型的數(shù)據(jù)庫(kù)作平臺(tái),所以建議使用SQL或Oracle等。
3、MYSQL與SQL誰(shuí)更適合在UNIX中使用。
答:當(dāng)然應(yīng)當(dāng)是MYSQL,因?yàn)镸YSQL對(duì)于UNIX來(lái)說(shuō)兼容性更好。
4、請(qǐng)問(wèn)Interdev和Ultradev哪個(gè)和SQL2000兼容性好。
答:我想應(yīng)是Interdev更好一些,因?yàn)樵赟QL2000和Interdev中有許多地方是相容的,而且他們可以聯(lián)合起來(lái)開(kāi)發(fā)應(yīng)用程序,對(duì)于Ultradev來(lái)說(shuō)只是使用上更方便一些。
5、請(qǐng)問(wèn)怎樣將數(shù)據(jù)庫(kù)中的數(shù)據(jù)放入到EXECL中
答:在WIN9X操作系統(tǒng)中首先要有相在數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,若沒(méi)有就先安裝,然后就可以在EXECL中直接打開(kāi)相關(guān)的數(shù)據(jù)庫(kù)文件。在有些數(shù)據(jù)庫(kù)中還可以只指通過(guò)兩個(gè)程序進(jìn)行數(shù)據(jù)拖放來(lái)實(shí)現(xiàn),如ACCESS等。
6、如何進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)?
答:數(shù)據(jù)庫(kù)設(shè)計(jì)包括兩個(gè)組成部分:邏輯設(shè)計(jì)和物理設(shè)計(jì)。邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)包括使用數(shù)據(jù)庫(kù)組件(如表和約束)為業(yè)務(wù)需求和數(shù)據(jù)建模,而無(wú)須考慮如何或在哪里物理存儲(chǔ)這些數(shù)據(jù)。物理數(shù)據(jù)庫(kù)設(shè)計(jì)包括將邏輯設(shè)計(jì)映射到物理媒體上、利用可用的硬件和軟件功能使得盡可能快地對(duì)數(shù)據(jù)進(jìn)行物理訪問(wèn)和維護(hù),還包括生成索引。
要在設(shè)計(jì)后更改這些組件很困難,因此在數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)的早期階段正確設(shè)計(jì)數(shù)據(jù)庫(kù)、使其為業(yè)務(wù)需求建模,并利用硬件和軟件功能很重要。
7、我們的計(jì)算機(jī)在進(jìn)行數(shù)據(jù)查詢時(shí)速度很慢,可能由哪些因素引起?
答:
A、網(wǎng)絡(luò)通訊速度慢。
B、服務(wù)器計(jì)算機(jī)的內(nèi)存不足或 Microsoft SQL Server 2000 可用的內(nèi)存不足。
C、缺少有用的統(tǒng)計(jì)數(shù)據(jù)。
D、統(tǒng)計(jì)數(shù)據(jù)過(guò)期。
E、缺少有用的索引。
F、缺少有用的數(shù)據(jù)條帶化。
8、在VFP中怎樣實(shí)現(xiàn)用遞歸的方法求數(shù)的階乘?
答:程序如下:
遞歸子程序:
func abc(n)
if n>=1 then s=n*abc(n-1)
else
retu
endfunc
調(diào)用主程序
set talk off
@13,13 say " " get n
read
abc(n)
9、學(xué)習(xí)SQL需要什么基礎(chǔ)?
答:學(xué)習(xí)SQL需要一些基本的數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí),比如,可以學(xué)習(xí)FOXBASE、VFP及ACCESS。
10、SQL Server的事務(wù)處理日志如何處理?
答:可以通過(guò)SQL Server的企業(yè)管理器來(lái)處理相關(guān)的日志,或者通過(guò)SQL的日志查看器來(lái)處理。
11、如何將SQL 7的數(shù)據(jù)轉(zhuǎn)換成SQL 2000的數(shù)據(jù)?
答:使用復(fù)制數(shù)據(jù)庫(kù)向?qū)Э梢詮?Microsoft SQL Server 7.0 向 Microsoft SQL Server 2000 實(shí)例移動(dòng)或復(fù)制數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)復(fù)制向?qū)Щ诜蛛x和附加功能,該功能允許將用戶數(shù)據(jù)庫(kù)從源服務(wù)器移動(dòng)或復(fù)制到目的服務(wù)器。數(shù)據(jù)轉(zhuǎn)換服務(wù) (DTS) 包執(zhí)行實(shí)際的移動(dòng)或復(fù)制操作??梢哉{(diào)度該包在指定的時(shí)間運(yùn)行或必要時(shí)重新運(yùn)行。
數(shù)據(jù)庫(kù)管理員可以將一個(gè)或多個(gè)數(shù)據(jù)庫(kù)從 SQL Server 7.0 實(shí)例移動(dòng)或復(fù)制到您的本地計(jì)算機(jī)上的 SQL Server 2000 默認(rèn)實(shí)例,或者到遠(yuǎn)程計(jì)算機(jī)上的默認(rèn)或命名實(shí)例。該升級(jí)功能不支持 SQL Server 6.5 數(shù)據(jù)庫(kù)。
12、如何配置日志傳送?
答:使用數(shù)據(jù)庫(kù)維護(hù)計(jì)劃向?qū)渲萌罩緜魉汀?
在配置日志傳送之前,必須在主數(shù)據(jù)庫(kù)上創(chuàng)建一個(gè)共享以使事務(wù)日志可用。這是從事務(wù)日志轉(zhuǎn)儲(chǔ)目錄創(chuàng)建的共享。例如,如果將日志轉(zhuǎn)儲(chǔ)到目錄 e:\data\tlogs\,則可以從該目錄創(chuàng)建 \\logshipping\tlogs 共享。
⑴.在"選擇數(shù)據(jù)庫(kù)"屏幕上,選擇"如下數(shù)據(jù)庫(kù)"復(fù)選框,然后選擇要進(jìn)行日志傳送的數(shù)據(jù)庫(kù)。如果選擇了多個(gè)數(shù)據(jù)庫(kù),則不會(huì)執(zhí)行日志傳送,日志傳送選項(xiàng)也不可用。不允許選擇已配置了日志傳送的數(shù)據(jù)庫(kù)。
⑵.選擇"將事務(wù)日志傳送到其它的 SQL Server(日志傳送)"復(fù)選框。
⑶.繼續(xù)執(zhí)行向?qū)В付ㄆ溆嗟臄?shù)據(jù)庫(kù)維護(hù)選項(xiàng),直到到達(dá)"指定日志傳送目的"屏幕。
⑷.單擊"添加"按鈕添加目的數(shù)據(jù)庫(kù)。要使該選項(xiàng)可用,必須已經(jīng)在向?qū)У那懊娌襟E中選擇了使用日志傳送。
⑸.在"添加目的數(shù)據(jù)庫(kù)"屏幕中,選擇一個(gè)服務(wù)器名。
該服務(wù)器必須已經(jīng)注冊(cè),而且正在運(yùn)行 Microsoft SQL Server 2000 企業(yè)版,這樣才能顯示在下拉列表中。如果要使該目的成為可用的源目的,必須選擇"允許數(shù)據(jù)庫(kù)采用主角色"復(fù)選框。如果該復(fù)選框未被選中,則該目的數(shù)據(jù)庫(kù)將來(lái)就無(wú)法采用源目的角色。如果已選定"允許數(shù)據(jù)庫(kù)采用主角色"復(fù)選框,還必須在日志將要備份到的目的數(shù)據(jù)庫(kù)中指定"事務(wù)日志備份目錄"。
⑹.若要從默認(rèn)位置更改事務(wù)日志目的數(shù)據(jù)庫(kù),請(qǐng)?jiān)?quot;目錄"框中輸入一個(gè)位置。
⑺.如果源數(shù)據(jù)庫(kù)不在目的數(shù)據(jù)庫(kù)上,則選擇"創(chuàng)建新數(shù)據(jù)庫(kù)"復(fù)選框。"數(shù)據(jù)庫(kù)名稱"框?qū)⒛J(rèn)為源數(shù)據(jù)庫(kù)名。如果想要在目的服務(wù)器上用另一個(gè)數(shù)據(jù)庫(kù)名,則指定一個(gè)新名稱。如果已經(jīng)選擇了允許該目的數(shù)據(jù)庫(kù)承擔(dān)源角色,就無(wú)法從默認(rèn)值改變?cè)摂?shù)據(jù)庫(kù)的名稱。
⑻.如果已經(jīng)選擇了"創(chuàng)建新數(shù)據(jù)庫(kù)"復(fù)選框,則還必須在"用于數(shù)據(jù)"和"用于日志"框中指定目的數(shù)據(jù)庫(kù)上數(shù)據(jù)和日志的文件目錄。
⑼.如果源數(shù)據(jù)庫(kù)已經(jīng)存在于目的數(shù)據(jù)庫(kù)上,則選擇"使用現(xiàn)有數(shù)據(jù)庫(kù)"復(fù)選框。如果目的服務(wù)器上的數(shù)據(jù)庫(kù)名不同,則在"數(shù)據(jù)庫(kù)名稱"框中輸入該名。該數(shù)據(jù)庫(kù)必須是使用 WITH STANDBY 選項(xiàng)還原過(guò)的,以便正確接受日志。
⑽.在"初始化目的數(shù)據(jù)庫(kù)"屏幕上,執(zhí)行下列操作之一:
單擊"立即提取完全數(shù)據(jù)庫(kù)備份"。
-或-單擊"使用最新備份文件"以初始化目的數(shù)據(jù)庫(kù)。
⑾.在"日志傳送調(diào)度"屏幕上,查看默認(rèn)的日志傳送調(diào)度。如果要改變調(diào)度,請(qǐng)單擊"更改"。
⑿.在"復(fù)制/裝載的頻率"框中,設(shè)置希望目的服務(wù)器從源服務(wù)器備份和還原事務(wù)日志的頻率(以分鐘計(jì))。
⒀.在"裝載延遲"框中,設(shè)置希望目的數(shù)據(jù)庫(kù)從源服務(wù)器還原事務(wù)日志之前要等待的延遲(以分鐘計(jì))。該框的默認(rèn)值為 0 分鐘,表示目的數(shù)據(jù)庫(kù)應(yīng)立即還原所有事務(wù)日志備份。
⒁.在"文件保持期"框中指定事務(wù)日志在刪除之前應(yīng)該存留的時(shí)間長(zhǎng)度。
⒂.從"日志傳送閾值"對(duì)話框中,設(shè)置"備份警報(bào)閾值"。
這是距離源服務(wù)器上一次事務(wù)日志備份時(shí)間的最長(zhǎng)期限。一旦時(shí)間超過(guò)此指定閾值,監(jiān)視服務(wù)器將生成警報(bào)。
⒃.在"不同步警報(bào)閾值"框中,指定源服務(wù)器上最近一次事務(wù)日志備份與目的服務(wù)器最近一次事務(wù)日志還原之間的時(shí)間。一旦時(shí)間超過(guò)此指定閾值,監(jiān)視服務(wù)器將生成警報(bào)。
⒄.在"指定日志傳送監(jiān)視器信息"屏幕中,鍵入將監(jiān)視日志傳送的服務(wù)器名稱。
單擊"使用 Windows 身份驗(yàn)證"或"使用 SQL Server 身份驗(yàn)證"連接到監(jiān)視服務(wù)器。log_shipping_monitor_probe 登錄名是固定的,必須使用它連接到監(jiān)視服務(wù)器。如果這是一個(gè)新帳戶,則選擇一個(gè)新密碼。如果該帳戶已經(jīng)存在于監(jiān)視服務(wù)器上,則必須指定現(xiàn)有的密碼。
說(shuō)明 使用數(shù)據(jù)庫(kù)維護(hù)向?qū)гO(shè)置日志傳送,只可以向磁盤(pán)傳送日志,而不能使用"備份到磁帶"選項(xiàng)。
13、如何管理或查看 SQL Server 消息(企業(yè)管理器)?
答:管理或查看 SQL Server 消息
⑴、展開(kāi)一個(gè)服務(wù)器組,然后右擊一個(gè)服務(wù)器。
⑵、指向"所有任務(wù)",然后單擊"管理 SQL Server 消息"命令。
⑶、若要指定搜索選項(xiàng),請(qǐng)執(zhí)行以下一個(gè)或多個(gè)操作:
在"消息正文包含"框中,鍵入要搜索的文本。
在"錯(cuò)誤號(hào)"框中,鍵入要搜索的錯(cuò)誤號(hào)。
在"嚴(yán)重度"下,選擇要搜索的嚴(yán)重級(jí)別。
⑷、若要指定要包含的消息,請(qǐng)執(zhí)行下列操作之一:
選擇"僅包含已日志記錄的消息"復(fù)選框。
-或-選擇"僅包含用戶定義的消息"復(fù)選框。
⑸、單擊"查找"以查找所有滿足搜索條件的消息
14、要學(xué)習(xí)SQL2000應(yīng)先掌握哪些知識(shí)?
答:若要學(xué)習(xí)SQL2000可以先學(xué)習(xí)一些數(shù)據(jù)庫(kù)基礎(chǔ)方面的知識(shí),如:FOX、ACCESS等,然后學(xué)習(xí)SQL2000的操作方面知識(shí),再學(xué)習(xí)SQL2000 SERVER。
15、對(duì)于學(xué)生管理軟件應(yīng)考慮哪些方面的問(wèn)題?
答:首先:應(yīng)進(jìn)行需求分析,因?yàn)槲覀冮_(kāi)發(fā)的軟件都是為用戶服務(wù)的,若脫離客戶而開(kāi)發(fā),那么開(kāi)發(fā)出來(lái)的東西是沒(méi)有用的。
其次:考慮程序開(kāi)發(fā)的模塊和算法,對(duì)于開(kāi)發(fā)的軟件應(yīng)將它細(xì)化,分成若干多個(gè)模塊,每一個(gè)實(shí)現(xiàn)一部分功能,這樣開(kāi)發(fā)的程序結(jié)構(gòu)清楚。另外就是算法,算法是解決問(wèn)題的關(guān)鍵,沒(méi)有好的算法,我們編出的程序效率也是不高的。
第三:就是數(shù)據(jù)庫(kù)的確立,好的數(shù)據(jù)集合對(duì)我們開(kāi)發(fā)者來(lái)說(shuō)是事半功倍,反之就會(huì)徒勞,另外的方面就是數(shù)據(jù)平臺(tái),平臺(tái)的好壞對(duì)程序的移植和通用性是非常關(guān)鍵的。
16、為什么我建的數(shù)據(jù)庫(kù)在有的機(jī)器上能打開(kāi),在有的機(jī)器上不能打開(kāi)?
答:可能的原因有:
⑴、所使用的數(shù)據(jù)庫(kù)平臺(tái)不一樣,如SQL的數(shù)據(jù)庫(kù)在ACCESS上是不能打開(kāi)的,反之也一樣。
⑵、所使用軟件版本不一樣,一般來(lái)說(shuō),同一數(shù)據(jù)庫(kù)平臺(tái)高版本可以打開(kāi)低版本的,但低版本不能打開(kāi)高版本的。
⑶、在移置的過(guò)程中數(shù)據(jù)庫(kù)損壞。
17、學(xué)習(xí)SQL Server多久才能精通?
答:這個(gè)問(wèn)題不能肯定的回答,因?yàn)樽陨硪蛩睾苤匾?,若認(rèn)真學(xué),時(shí)間能保證,那最多一個(gè)月一定能入門(mén)的,要說(shuō)精通就不一定了,不過(guò)多的實(shí)驗(yàn)對(duì)熟悉的幫助是很大的,對(duì)這個(gè)問(wèn)題再熟悉的人可能都不敢說(shuō)精通。
18、SQL的作用是什么?
答:能常意義上講的SQL是指數(shù)據(jù)庫(kù)查詢語(yǔ)言,主要用于數(shù)據(jù)庫(kù)的操作、管理和查詢。對(duì)于SQL來(lái)說(shuō)它又分了兩方面,即SERVER和CLIENT,SERVER主要提供數(shù)據(jù)庫(kù)平臺(tái),用于數(shù)據(jù)庫(kù)的建立、管理等,而CLIENT主要是提供數(shù)據(jù)庫(kù)連接和操作。
19、如何書(shū)寫(xiě)數(shù)據(jù)庫(kù)報(bào)告?
答:書(shū)寫(xiě)數(shù)據(jù)庫(kù)報(bào)告可從以下方面進(jìn)行考慮:
⑴、數(shù)據(jù)庫(kù)建立的環(huán)境和必要性
⑵、數(shù)據(jù)庫(kù)建立的平臺(tái)
⑶、數(shù)據(jù)庫(kù)建立的具體細(xì)節(jié)
⑷、操作的方法和技巧
⑸、安全性和穩(wěn)定性
⑹、可移植性和兼容性
⑺、其他
20、為什么按照書(shū)上書(shū)寫(xiě)的SQL語(yǔ)句在Visual Foxpro中不能執(zhí)行?
答:Visual Foxpro中的SQL語(yǔ)句與書(shū)上書(shū)寫(xiě)的標(biāo)準(zhǔn)SQL語(yǔ)句有一些微小的差別,要依據(jù)Visual Foxpro中SQL語(yǔ)句的語(yǔ)法規(guī)定。同樣SQL Server中書(shū)寫(xiě)的SQL語(yǔ)句要符合SQL Server中SQL語(yǔ)句的語(yǔ)法規(guī)定。
21、在什么情況下使用CLUSTERED INDEX 在什么情況下使用nonclustered index呢?
答:聚集 聚集索引基于數(shù)據(jù)行的鍵值在表內(nèi)排序和存儲(chǔ)這些數(shù)據(jù)行。由于數(shù)據(jù)行按基于聚集索引鍵的排序次序存儲(chǔ),因此聚集索引對(duì)查找行很有效。每個(gè)表只能有一個(gè)聚集索引,因?yàn)閿?shù)據(jù)行本身只能按一個(gè)順序存儲(chǔ)。數(shù)據(jù)行本身構(gòu)成聚集索引的最低級(jí)別。
包含聚集索引時(shí),表內(nèi)的數(shù)據(jù)行才按排序次序存儲(chǔ)。如果表沒(méi)有聚集索引,則其數(shù)據(jù)行按堆集方式存儲(chǔ)。
非聚集索引具有完全獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引的最低行包含非聚集索引的鍵值,并且每個(gè)鍵值項(xiàng)都有指針指向包含該鍵值的數(shù)據(jù)行。數(shù)據(jù)行不按基于非聚集鍵的次序存儲(chǔ)。
索引內(nèi),從索引行指向數(shù)據(jù)行的指針?lè)Q為行定位器。行定位器的結(jié)構(gòu)取決于數(shù)據(jù)頁(yè)的存儲(chǔ)方式是堆集還是聚集。對(duì)于堆集,行定位器是指向行的指針。對(duì)于有聚集索引的表,行定位器是聚集索引鍵。
創(chuàng)建了聚集索引時(shí),表內(nèi)的行才按特定的順序存儲(chǔ)。這些行就基于聚集索引鍵按順序存儲(chǔ)。如果一個(gè)表只有非聚集索引,它的數(shù)據(jù)行將按無(wú)序的堆集方式存儲(chǔ)。
另外如果大多數(shù)引用 emp_sample 的查詢?cè)谒鼈兊?WHERE 子句中有關(guān)于 emp_id 的等式或范圍比較,聚集索引將發(fā)揮很好的作用。如果大多數(shù)查詢的 WHERE 子句引用的是 emp_name 而非 emp_id,則通過(guò)將 emp_name 上的索引置為聚集索引可提高性能。
22、在VFP中如何像VB一樣能顯示所有控件代碼?
答:使用VFP中的類設(shè)計(jì)器即可。
23、在多CPU的機(jī)器中,網(wǎng)卡是否總是使用高序號(hào)的CPU呢?
答:不一定,在網(wǎng)絡(luò)操作系統(tǒng)中,可以使用多個(gè)CPU,CPU之間是協(xié)作式工作,而不是分工,所以網(wǎng)卡不一定總使用高序號(hào)的CPU。
24、你覺(jué)得SQL2000 SERVER是管理難學(xué)還是編程難呢?
答:針對(duì)MCDBA而言相對(duì)來(lái)說(shuō)應(yīng)當(dāng)是管理比編程難,因?yàn)榫幊讨灰煜ち薙QL的相關(guān)東西和編程的算法要領(lǐng),問(wèn)題就不大了。而管理并不是熟悉SQL SERVER就行,而要對(duì)出現(xiàn)的各種情況都要能應(yīng)對(duì),不然即便出現(xiàn)一個(gè)很小的問(wèn)題都會(huì)讓你束手無(wú)策。
25、現(xiàn)在學(xué)那種數(shù)據(jù)庫(kù)最好?
答:這個(gè)問(wèn)題已經(jīng)很多同學(xué)問(wèn)了,其實(shí)每一種數(shù)據(jù)庫(kù)都有它存的價(jià)值,不然已經(jīng)被淘汰了。所以這之中沒(méi)有最好,只有最適合,應(yīng)當(dāng)說(shuō)最適合學(xué)或用哪種數(shù)據(jù)庫(kù)。其實(shí)幾種數(shù)據(jù)庫(kù)都很好,ACCESS主要針對(duì)中小型企業(yè)管理而作為他們數(shù)據(jù)庫(kù)平臺(tái),VFP則多用于開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序,MCDBA主要針對(duì)MC認(rèn)證,它之中涉及到SQL2000的管理和應(yīng)用程序設(shè)計(jì),這主要是當(dāng)前大多大中型企業(yè)和網(wǎng)站使用的數(shù)據(jù)庫(kù)平臺(tái)和開(kāi)發(fā)工具。所以致于哪種最好,應(yīng)當(dāng)說(shuō)適合自己的就是最好的。
26、問(wèn):ACCESS、VFP、SQL有什么區(qū)別?適應(yīng)的環(huán)境有什么不同?
答:ACCESS、VFP、SQL都是針對(duì)數(shù)據(jù)庫(kù)管理而開(kāi)發(fā)的三個(gè)軟件,只是在使用的時(shí)候,ACCESS主要用于中小型企業(yè)的數(shù)據(jù)庫(kù)管理系統(tǒng),VFP主要適用于開(kāi)發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)的應(yīng)有型開(kāi)發(fā)軟件,SQL主要針對(duì)于大中型企業(yè)的數(shù)據(jù)庫(kù)平臺(tái)。
27.ODBC數(shù)據(jù)源的具體含意及與其相關(guān)的操作有那些?
答:ODBC是一種編程接口,它能使應(yīng)用程序訪問(wèn)以結(jié)構(gòu)化查詢語(yǔ)言(SQL)作為數(shù)據(jù)訪問(wèn)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)管理系統(tǒng)。相關(guān)的操作有配置數(shù)DNS和數(shù)據(jù)庫(kù)訪問(wèn)引擎。在應(yīng)用程序中我們首先要配置ODBC數(shù)據(jù)源使它能指定到一個(gè)具體的數(shù)據(jù)庫(kù),并為這個(gè)數(shù)據(jù)庫(kù)命名一個(gè)應(yīng)用程序訪問(wèn)的別名,這樣在應(yīng)用程序中我們就可以通過(guò)訪問(wèn)這個(gè)別名來(lái)訪問(wèn)相關(guān)數(shù)據(jù)庫(kù)。
28.網(wǎng)頁(yè)中,需要將“記錄表”格式化,然后甲方填表后,由乙方檢查補(bǔ)充,再打印保存為數(shù)據(jù)庫(kù)并自動(dòng)編號(hào)。還可按格式化自動(dòng)查詢“記錄表”,要實(shí)現(xiàn)此類功能,應(yīng)用什么技術(shù)可實(shí)現(xiàn),我應(yīng)該學(xué)習(xí)哪些網(wǎng)頁(yè)編輯軟件或技術(shù)才能實(shí)現(xiàn)。
答:要實(shí)現(xiàn)此類功能,使用可以先學(xué)習(xí)一些數(shù)據(jù)庫(kù)方面的知識(shí),在其中就講到了相關(guān)的技術(shù),如:SQL、Oracle等,另外就是要了解一些有關(guān)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的配置技術(shù),如SQL Server 、ODBE 、Inerbase等。作為網(wǎng)頁(yè)編輯軟件來(lái)說(shuō),現(xiàn)在很多軟件都是可行的,我認(rèn)為要好用一點(diǎn)的就是DREAMWEAVER等。
29.請(qǐng)問(wèn)SQL2000中的“實(shí)例”是什么意思,因怎樣理解呢?
答:SQL實(shí)例簡(jiǎn)單的說(shuō)就是一個(gè)SQL的進(jìn)程,類似于操作系統(tǒng)中的進(jìn)程,它有兩種,即:
SQL Server 的默認(rèn)實(shí)例。
此實(shí)例由運(yùn)行它的計(jì)算機(jī)的網(wǎng)絡(luò)名稱標(biāo)識(shí)。使用以前版本 SQL Server 客戶端軟件的應(yīng)用程序可以連接到默認(rèn)實(shí)例。SQL Server 6.5 版或 SQL Server 7.0 版服務(wù)器可作為默認(rèn)實(shí)例操作。但是,一臺(tái)計(jì)算機(jī)上每次只能有一個(gè)版本作為默認(rèn)實(shí)例運(yùn)行。
SQL Server 的命名實(shí)例。
該實(shí)例通過(guò)計(jì)算機(jī)的網(wǎng)絡(luò)名稱加上實(shí)例名稱以<計(jì)算機(jī)名稱>\<實(shí)例名稱>格式進(jìn)行標(biāo)識(shí)。應(yīng)用程序必須使用 SQL Server 2000 客戶端組件連接到命名實(shí)例。計(jì)算機(jī)可以同時(shí)運(yùn)行任意數(shù)目的 SQL Server 命名實(shí)例。同時(shí),命名實(shí)例還可作為現(xiàn)有的 SQL Server 6.5 版或 SQL Server 7.0 版安裝運(yùn)行。該實(shí)例名不能超過(guò) 16 個(gè)字符。
30.SQL中什么是DTS,主要的作用是什么?
答:DTS就是SQL提供的數(shù)據(jù)轉(zhuǎn)換服務(wù),使用它可以導(dǎo)入和導(dǎo)出SQL數(shù)據(jù)。
31.我有一個(gè)數(shù)據(jù)庫(kù)是架設(shè)在SQL Server2000上的,我想把它轉(zhuǎn)回SQL7.0,但SQL2000的bak文檔不能在SQL7.0里恢復(fù),請(qǐng)問(wèn)有辦法讓SQL2000轉(zhuǎn)回SQL7.0嗎?
答:在 SQL Server 2000 的實(shí)例上創(chuàng)建的 DTS 包不能裝載到或運(yùn)行于 SQL Server 7.0 版(或早期版本)的實(shí)例上。如果試圖這么做,則可能會(huì)收到下面消息中的一個(gè):
"無(wú)效的類字符串。" "參數(shù)不正確。"
兩條消息都指明:當(dāng)前的服務(wù)器并不包含用于裝載該包所必須的所有組件,并且不能支持在 DTS 包中所定義的對(duì)象(例如任務(wù)及轉(zhuǎn)換)。
但是,如果收到這兩條消息中的一條,仍然可以在 SQL Server 2000 實(shí)例上打開(kāi)并運(yùn)行包。
當(dāng)然要將SQL2000中的數(shù)據(jù)庫(kù)移植到SQL以前的版本中還有一個(gè)方法就是它提供的數(shù)據(jù)庫(kù)復(fù)制向?qū)А?
32、如何才能為VF6.0設(shè)計(jì)一個(gè)簡(jiǎn)單的啟動(dòng)程序?利用表單可以嗎?我不想脫開(kāi)VF?
答:你可以寫(xiě)一個(gè)腳本,在系統(tǒng)的注冊(cè)表中加入名稱,利用表單也可以。
33、請(qǐng)問(wèn)在SQL中的char、nchar、nvarchar、varchar四種數(shù)據(jù)類型,它們之間有何區(qū)別?如何用?
答:char是定長(zhǎng)的數(shù)據(jù)類型,varchar是變成數(shù)據(jù)類型,nchar和nvarchar相同,但針對(duì)多字節(jié)nchar定長(zhǎng),nvarchar變長(zhǎng)。
34、編程后不脫離VF和脫離有何利弊?
答:沒(méi)什么利弊可言。
35、ORACLE數(shù)據(jù)庫(kù)的超級(jí)用戶名稱和密碼是什么?
答:system/manager。
36、char和nchar各自最多可存貯多少字節(jié)的內(nèi)容?
答:都是4000個(gè)字節(jié)。
37、有關(guān)MSSQL7的參考書(shū),老師能否給我推薦一下?
答:買(mǎi)什么書(shū)主要看你需要哪方面的資料。
38、請(qǐng)問(wèn)VF的數(shù)據(jù)可以上傳至SQL服務(wù)器?
答:當(dāng)然可以,如可以參考微軟的資料。
39、可不可以客戶端用VF而服務(wù)器用大型的數(shù)據(jù)庫(kù)?
答:當(dāng)然可以,我以前作過(guò)很多這樣的項(xiàng)目。
40、/dev/null的null是什么?
答:表示空值、或長(zhǎng)度為0的值。
41、VF與哪些大型數(shù)據(jù)庫(kù)兼容?
答:Oracle,DB2,SQL Server等都可以。
42、哪種大型的數(shù)據(jù)庫(kù)易學(xué)易用?
答:SQL Server容易學(xué)點(diǎn)。
43、在MYSQL中怎樣使用unix shell建庫(kù)?
答:先用腳本寫(xiě)一個(gè)批處理文件然后用shell調(diào)用(給予執(zhí)行權(quán)然后就可以執(zhí)行)。
44、VF中的主關(guān)鍵字段名在數(shù)據(jù)庫(kù)建好后還能改名嗎?
答:可以修改。先刪除現(xiàn)有的PK,然后重建。
45、請(qǐng)問(wèn)何為pk?
答:primary key(主關(guān)鍵字)。
46、刪除pk后各表之間的聯(lián)結(jié)都斷了,怎么辦?
答:刪除后還得把關(guān)聯(lián)加上是比較麻煩一些,但能恢復(fù)。
47、informix中可用/informix/bin/isql 調(diào)用isql建庫(kù),但在MYSQL中怎么用?
答:因?yàn)镸YSQL是運(yùn)行在unix/linux平臺(tái)上的所以用起來(lái)會(huì)難一些,每一種數(shù)據(jù)庫(kù)都有各自的特點(diǎn),但會(huì)一種之后另一種就很容易了。
48、我的程序?yàn)槭裁床荒艽虬鼮閙db格式,是因?yàn)橛泻陠幔?
答:有宏也可以打包成mdb格式。
49、對(duì)變量名訪問(wèn)的時(shí)候,m.與m->是什么命令?起什么作用?
答:m.中,m是父類名,m->主要用在引用m的對(duì)象。
50、請(qǐng)問(wèn)如何在局域網(wǎng)里共享數(shù)據(jù)庫(kù)?
答:要在局域網(wǎng)中共享數(shù)據(jù)庫(kù),一般需要一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,前臺(tái)用瀏覽器或者其他程序?qū)λM(jìn)行存取訪問(wèn)。
51、SQL Server 和Oracle 哪個(gè)更好?
答:SQL Server屬于中型數(shù)據(jù)庫(kù),它沒(méi)有Oracle通用,但是SQL Server 和NT操作系統(tǒng)結(jié)合比較緊密。
52、SQL的全稱是?
答:SQL的全稱是Structured Query Language(結(jié)構(gòu)化查詢語(yǔ)言)
53、大型數(shù)據(jù)庫(kù)除了SQL Server和Oracle,還有哪些?
答:常見(jiàn)的還有Sysbase,DB2和Informix等。AS400則是把硬件,操作系統(tǒng)和數(shù)據(jù)庫(kù)都集成到了一起。
54、怎樣才能學(xué)好SQL數(shù)據(jù)庫(kù)?
答:我覺(jué)得關(guān)系數(shù)據(jù)庫(kù)很多概念都是相通的 不管你學(xué)SQL Server還是Access,首先都要注意建立起一些基本的概念,比如說(shuō)表、查詢、關(guān)鍵字等。然后熟悉數(shù)據(jù)庫(kù)管理系統(tǒng)的窗口環(huán)境,掌握怎樣創(chuàng)建各種對(duì)象,如何修改各種設(shè)置項(xiàng)或者屬性。
55、請(qǐng)問(wèn)怎樣選擇使用哪種數(shù)據(jù)庫(kù)?
答:那要看具體應(yīng)用的規(guī)模和條件了,一般VFP和access屬于桌面數(shù)據(jù)庫(kù),對(duì)于小型的應(yīng)用性能還是不錯(cuò)的。網(wǎng)絡(luò)環(huán)境下一般用SQL Server和Oracle。
Oracle數(shù)據(jù)庫(kù)以其強(qiáng)大的功能和穩(wěn)定性而著稱,但同時(shí),在開(kāi)發(fā)和管理方面也存在很多困難,在此總結(jié)了一些Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)和管理的常見(jiàn)問(wèn)題,希望能對(duì)大家有所幫助。
56、如果發(fā)現(xiàn)表中有壞塊,如何檢索其它未壞的數(shù)據(jù)?
答:首先需要找到壞塊的ID(可以運(yùn)行dbverify實(shí)現(xiàn)),假設(shè)為1234。運(yùn)行下面的查詢語(yǔ)句查找段名:
select segment_name, segment_type, block_id, blocks from dba_extents
where (1234 between block_id and (block_id + blocks - 1));
一旦找到壞段名稱,若段是一個(gè)表,則最好建立一個(gè)臨時(shí)表,存放好的數(shù)據(jù)。若段是索引,則刪除它,再重建。
create table good_table
as
select ? from bad_table where rowid not in
( select /?+index(bad_table, any_index)?/ rowid
from bad_table where substr( rowid, 1, 8 ) = 1234)
57、如請(qǐng)問(wèn)如何關(guān)閉FORM調(diào)用REPORT時(shí)的小窗口?
答:在利用Oracle數(shù)據(jù)庫(kù)的Develop 2000設(shè)計(jì)開(kāi)發(fā)界面的過(guò)程中,當(dāng)FORM調(diào)用REPORT時(shí),會(huì)顯示一個(gè)背景窗口REPORT BACKGROUD ENGINE,等待FORM對(duì)REPORT的調(diào)用,當(dāng)FORM調(diào)用其它REPORT時(shí),也使用這個(gè)后臺(tái)服務(wù)器,不論調(diào)用多少個(gè)REPORT,這個(gè)后臺(tái)服務(wù)器存在且只有一個(gè)。但當(dāng)FORM與REPORT全部退出后,該窗口仍處于等待狀態(tài),不會(huì)關(guān)閉,這時(shí),我們需要手工將其關(guān)閉。
我們可以使用以下參數(shù)在FORM調(diào)用REPORT時(shí)不顯示這個(gè)小窗口:
Add_Parameter( pl_id, 'ORACLE_SHUTDOWN',TEXT_Parameter, 'Yes' );
需要注意的是,該參數(shù)必須加在所有參數(shù)的前面,即它必須為第一個(gè)參數(shù)。
58、請(qǐng)問(wèn)如何根據(jù)查詢條件在REPORT中動(dòng)態(tài)顯示記錄?
答:
⑴. 在REPORT的“數(shù)據(jù)模型”下面的“用戶參數(shù)”中,創(chuàng)建用戶自定義參數(shù)W_CLAUSE,W_CLAUSE為從FORM傳遞過(guò)來(lái)的查詢條件,數(shù)據(jù)類型為字符型,缺省值為NULL。
⑵. 修改查詢Q_1,將SQL查詢語(yǔ)句修改為select ? from dept &&w_clause。
⑶. 在運(yùn)行報(bào)表時(shí),報(bào)表會(huì)自動(dòng)將符合&&w_clause的查詢條件記錄顯示出來(lái)。
如果從FORM傳遞過(guò)來(lái)的w_clause為where dept=1,本報(bào)表的SQL查詢自動(dòng)轉(zhuǎn)換為:
select from dept where dept=1,并在報(bào)表運(yùn)行結(jié)果中顯示符合該查詢條件的記錄,如果從FORM傳遞過(guò)來(lái)的w_cluase為where to_char(年度,'YYYY.MM')='2000.03',則在報(bào)表運(yùn)行結(jié)果中自動(dòng)顯示2000年3月份的記錄。
59、在Oracle中,我們?nèi)绾尾榭茨潮砩系募s束?
答:我們可以使用下面語(yǔ)句從all_constraints視圖中查看某表上的約束:
SELECT constraint_name, table_name, r_owner, r_constraint_name FROM all_constraints
WHERE table_name = 'table_name' and owner = 'owner_name';
另一個(gè)視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
60、如何將數(shù)據(jù)庫(kù)從noarchivelog方式改變?yōu)閍rchivelog方式?
答:首先打開(kāi)Init.ora文件,確保存檔日志目標(biāo)指向一有效目錄。
然后啟動(dòng)Server Manager
svrmgrl〉 shutdown immediate
svrmgrl〉 startup mount
svrmgrl〉 alter database archivelog;
svrmgrl〉 alter database open;
svrmgrl〉 archive log list;
在init.ora中設(shè)置參數(shù)archive_log_start=TRUE,它設(shè)置存檔日志為自動(dòng)啟動(dòng)。在Oracle 8i中支持多個(gè)存檔日志的目標(biāo),因此參數(shù)修改為log_archive_dest[n],其中n為1到5。
61、在Oracle數(shù)據(jù)庫(kù)中,我們?nèi)绾卧黾颖砜臻g的大小?
答: 在開(kāi)發(fā)Oracle數(shù)據(jù)庫(kù)中,我們有兩種方法增加表空間的大?。?
⑴.增加額外的數(shù)據(jù)文件到表空間中
例如:alter tablespace users add datafile '/u01/oradata/orcl/users02.dbf' size 25m;
⑵.修改表空間當(dāng)前的數(shù)據(jù)文件
例如:alter database datafile '/u01/oradata/orcl/users01.dbf' resize 50M;
62、請(qǐng)問(wèn)如何在REPORT中設(shè)置動(dòng)態(tài)顯示域?
答:在REPORT中設(shè)置動(dòng)態(tài)顯示域的方法如下:
⑴. 在REPORT的“數(shù)據(jù)模型”下面的“用戶參數(shù)”中,創(chuàng)建用戶自定義參數(shù),如RQ,RQ是從FORM傳遞過(guò)來(lái)的顯示日期,數(shù)據(jù)類型為字符型。
⑵. 在布局模型中,創(chuàng)建一個(gè)顯示域F_1,在屬性選項(xiàng)板中修改該顯示域的源為用戶自定義參數(shù)RQ,并且設(shè)為“不可見(jiàn)的”。
⑶. 在動(dòng)態(tài)預(yù)覽中,創(chuàng)建一個(gè)文本域D_1,調(diào)整該文本域的位置和寬度,在該域的內(nèi)容中輸入&&F_1,則該域會(huì)動(dòng)態(tài)顯示用戶定義參數(shù)RQ的值。
63、有關(guān)口令的問(wèn)題。
我在Solaris系統(tǒng)上運(yùn)行 Oracle8i 8.1.7企業(yè)版。我創(chuàng)建了兩個(gè)數(shù)據(jù)庫(kù):SUGAR和TestDb。將兩者的remote_login_passwordfile都設(shè)置為 “獨(dú)占(exclusive)”。我試圖以SYSDBA身份連接到TestDb,但未能成功。下面是我的做法:
$sqlplus /nolog
SQL> conn sys/change_on_install@testdb
Connected.(已連接)
SQL> select * from v$pwfile_users;
username sysdb sysop
-----------------------------------------
internal true true
sys true true
SQL> conn sys/change_on_install@testdb as
sysdba
ERROR(錯(cuò)誤)
ORA-01017: invalid username/password; logon
denied(無(wú)效的用戶名/口令,登錄被拒絕)
Warning: You are on longer connected to
ORACLE(警告:你已經(jīng)與ORACLE斷開(kāi)連接)
64、我為什么不能以SYSDBA身份連接到TestDb?
答:通常Oracle中的SYS口令與INTERNAL口令是同步的,SYS口令存儲(chǔ)于口令文件中。在上述情況下你建立了包含有一個(gè)口令的口令文件,而不是使用缺省的 “change_on_install,”這就是問(wèn)題之所在。
希望下面的方法對(duì)你有所幫助。首先,建立一個(gè)口令文件,其中包含一個(gè)口令,這個(gè)口令不要與系統(tǒng)口令匹配:
$ orapwd file=orapw password=foobar
entries=40
然后,進(jìn)入服務(wù)器,啟動(dòng)數(shù)據(jù)庫(kù):
$ svrmgr
SVRMGR> connect internal
Connected.(已連接)
SVRMGR> startup
ORACLE instance started.(ORACLE 實(shí)例已啟動(dòng))
Total System Global Area (系統(tǒng)全局區(qū)域大?。?
193073136 bytes
Fixed Size (固定大小)
69616 bytes
Variable Size (可變大?。?
141639680 bytes
Database Buffers (數(shù)據(jù)庫(kù)緩沖區(qū))
45056000 bytes
Redo Buffers (重做緩沖區(qū))
6307840 bytes
Database mounted. (數(shù)據(jù)庫(kù)已加載)
Database opened.數(shù)據(jù)庫(kù)已打開(kāi)。
現(xiàn)在使用SYS用戶的口令,以SYS身份連接:
SVRMGR> connect sys/change_on_install@ora81
Connected.(已連接)
成功了?,F(xiàn)在試著以SYSDBA身份連接:
SVRMGR> connect sys/change_on_install@ora81
as sysdba;
ORA-01017: invalid username/password; logon
denied(無(wú)效的用戶名/口令;登錄被拒絕)
這里出現(xiàn)了你所說(shuō)的錯(cuò)誤。你的SYS口令為:change_on_install,但口令文件中的口令卻是foobar。SYS用戶是專用的,以SYSDBA身份連接就像是以INTERNAL連接,你必須使用口令文件中的口令。試試這樣做:
SVRMGR— connect sys/foobar@ora81 as sysdba;
Connected.(已連接)
并不是每個(gè)人都需要使用口令文件中的口令;用戶需要使用他們自己的口令。通過(guò)授權(quán)SYSDBA給SCOTT,你就可以明白這一點(diǎn):
SVRMGR> grant sysdba to scott;
Statement processed.(已處理)
這個(gè)命令將SCOTT以SCOTT的憑證加入到口令文件中。如果你改變了SCOTT的口令,口令文件也會(huì)自動(dòng)同步改變?,F(xiàn)在,你可以試試以SYSDBA身份連接SCOTT了:
SVRMGR> connect scott/tiger@ora81 as sysdba;
Connected.(已連接)
一切正?!,F(xiàn)在可以使用ALTER USER 命令來(lái)改變SYS用戶的口令。
SVRMGR> alter user sys identified by
change_on_install;
Statement processed.(已成功更改)
SVRMGR≫ connect sys/change_on_install@ora81
as sysdba;
Connected.(已連接)
你還可以用change_on_install,因?yàn)楦淖僑YS用戶口令將同時(shí)改變口令文件中的口令。當(dāng)你建立了口令文件后,Oracle數(shù)據(jù)庫(kù)在其中放入兩個(gè)賬號(hào):SYS和INTERNAL,并將你在命令行中提供的口令作為這兩個(gè)賬戶的口令。當(dāng)你改變數(shù)據(jù)庫(kù)中的SYS用戶口令時(shí),數(shù)據(jù)庫(kù)將沖掉口令文件中的SYS和INTERNAL口令。下面操作將顯示口令foobar已經(jīng)是無(wú)效的了:
SVRMGR> connect sys/foobar@ora81 as sysdba;
ORA-01017: invalid username/password; logon
denied(無(wú)效的用戶名/口令,登錄被拒絕)
65、利用QUERY選項(xiàng)輸出數(shù)據(jù)。
我知道在Oracle8i中,可以使用QUERY有選擇地輸出表數(shù)據(jù)。我想用EXP命令來(lái)實(shí)現(xiàn),但沒(méi)有成功。下面是我所寫(xiě)的命令,以及得到的錯(cuò)誤信息:
exp ddd/ddd file=/dbf/u11/customer.dmp
tables=AASC.AST_CUSTOMER_KEEP
query=\'where CUA_TRANS_DTS \<
add_months\(sysdate, -6\)\'
table_export[2]: CUA_TRANS_DTS: not found.(沒(méi)有找到)
答:操作系統(tǒng)不同,用來(lái)指定QUERY=參數(shù)的方法也不同。WHERE 語(yǔ)句里面往往有很多特殊的字符,如=.>.<和空格等等。而UNIX和Windows操作系統(tǒng)中的外殼命令提示是不歡迎這些字符的,這些字符將被忽略。你應(yīng)該根據(jù)不同的操作系統(tǒng)采用不用的方法。我一般使用帶有QUERY選項(xiàng)的參數(shù)文件(PARFILE),利用PARFILE,可以不考慮操作系統(tǒng)平臺(tái)而使用完全相同的方法。
下面給出一個(gè)例子。我用select * from all_objects建立了一個(gè)表T,我希望輸出所有object_id 小于5000的行。在Windows中,必須這樣做:
C:\exp>exp userid=tkyte/tkyte tables=t
query="""where object_id < 5000"""
注意:在windows中,需要在WHERE語(yǔ)句的兩端使用三個(gè)雙引號(hào)。在UNIX中,必須這樣做:
$ exp userid=/ tables=t query=\"where
object_id \< 5000\"
exp userid=/ tables=t parfile=exp.par
如果使用包含query="where object_id < 5000"的PARFILE文件,我可以在兩個(gè)系統(tǒng)中使用相同的一個(gè)命令:
exp userid=/ tables=t parfile=exp.par
在兩種操作系統(tǒng)中,完全相同。這相對(duì)于在不同的平臺(tái)中使用不同的QUERY字符串容易多了。
66、DBMS_RANDOM。
您能否告訴我寫(xiě)一個(gè)能產(chǎn)生大于0小于1的隨機(jī)數(shù)的隨機(jī)數(shù)產(chǎn)生器的最好方法?
答:Oracle8 8.0版介紹了DBMS_RANDOM包,Oracle8i 8.1.6版介紹了DBMS_RANDOM包的新功能,但Oracle8i 文檔中沒(méi)有詳細(xì)全面介紹其功能。幸運(yùn)的是:有一個(gè)新的DBMS_RANDOM包函數(shù)能夠返回0-1之間的隨機(jī)數(shù)。這個(gè)新函數(shù)是:
FUNCTION value RETURN NUMBER;
FUNCTION value (low IN NUMBER, high IN NUMBER) RETURN NUMBER;
FUNCTION normal RETURN NUMBER;
FUNCTION string (opt char, len NUMBER)
RETURN VARCHAR2;
VALUE函數(shù)的第一種形式返回一個(gè)大于或等于0且小于1的隨機(jī)數(shù);第二種形式返回一個(gè)大于或等于LOW,小于HIGH的隨機(jī)數(shù)。下面是其用法的一個(gè)示例:
SQL> select dbms_random.value,
dbms_random.value(55,100)
2 from dual;
VALUE DBMS_RANDOM.VALUE(55,100)
--------------- -----------------------------
.782821936 79.6367038
NORMAL函數(shù)返回服從正態(tài)分布的一組數(shù)。此正態(tài)分布標(biāo)準(zhǔn)偏差為1,期望值為0。這個(gè)函數(shù)返回的數(shù)值中有68%是介于-1與+1之間,95%介于-2與+2之間,99%介于-3與+3之間。事實(shí)上,這就是你在清單1中所看到的。
最后,是STRING函數(shù)。它返回一個(gè)長(zhǎng)度達(dá)60個(gè)字符的隨機(jī)字符串。參數(shù)OPT可以是清單2顯示的值中的任何一個(gè)單個(gè)字符。
關(guān)于這些函數(shù)及DBMS_RANDOM包的文件都包含在SQLPlus中:
select text
from all_source
where name = 'DBMS_RANDOM' and type = 'PACKAGE' order by line;
67、連接次序與謂詞求值。
在下面的查詢中,WHERE 語(yǔ)句的哪一部分先執(zhí)行?
Select field names from emp, dept
where emp.dept_num = dept.num and
emp.name Like 'S%' and dept.name='IT';
答:執(zhí)行次序隨已有的索引、統(tǒng)計(jì)、和session/init.ora參數(shù)的不同而變化。
假定已有一個(gè)建立在DEPT(name)和EMP(dept_num)上的索引。假定優(yōu)化器認(rèn)為DEPT是唯一的,它可能按下面的順序進(jìn)行操作:
利用建立在DEPT(name)上的索引查找dept列
利用建立在EMP(dept_num)上的索引查找匹配的emp列(即連接emp.dept_num = dept.num)
依據(jù)建立在emp.ename like 'S%'進(jìn)行過(guò)濾
現(xiàn)在,我們假定沒(méi)有建立在EMP(dept_num)上的索引,也沒(méi)有建立在DEPT(name)上的索引,而存在建立在EMP(name)和DEPT(num)上的索引。優(yōu)化器可能按下面的次序進(jìn)行操作:
利用建立在EMP(name)上的索引找到帶有S的EMPS
利用建立在DEPT(num)上的索引找到匹配項(xiàng)
根據(jù)dept.name = 'IT'過(guò)濾結(jié)果
謂詞求值的次序是不確定的,可以隨時(shí)間的改變而改變,并由優(yōu)化器決定。不要假定任何事情會(huì)按一定的次序發(fā)生。如果你那么做,隨著時(shí)間的推移,你的應(yīng)用程序可能會(huì)出現(xiàn)一些看起來(lái)非常奇怪的錯(cuò)誤??匆韵碌睦樱航⒁粋€(gè)表,輸入一些數(shù)據(jù)。當(dāng)X='a’時(shí),第二列的數(shù)據(jù)“Y”是一個(gè)數(shù)值,當(dāng)X='b’時(shí),“Y”不是數(shù)字。
SQL> create table t ( x varchar2(1), y varchar2(1) );
Table created.
SQL> insert into t values ( 'a', '1' );
1 row created.
SQL> insert into t values ( 'b', 'x' );
1 row created.
現(xiàn)在根據(jù)這個(gè)表運(yùn)行一個(gè)查詢:查找滿足x='a',y=1的行。
SQL> select * from t where x = 'a' and
y = 1;
ERROR:
ORA-01722: invalid number
no rows selected(錯(cuò)誤,無(wú)效的數(shù)字,沒(méi)有選擇任何行)
呦,沒(méi)有成功。在這種情況下,數(shù)據(jù)庫(kù)首先執(zhí)行Y=1,當(dāng)找到Y(jié)='X'的行后,很顯然,它不能將'X'轉(zhuǎn)換為一個(gè)數(shù)字,所以失敗了。而下面的程序?qū)⒔o出不同的結(jié)果:
SQL> analyze table t compute statistics;
Table analyzed.(表已經(jīng)分析過(guò))
SQL> select * from t where x = 'a' and
y = 1;
X Y
- -
a 1
使用不同的優(yōu)化器模式,成功了!為什么??jī)?yōu)化器說(shuō):“嘿,檢查x= 'a'要比檢查y=1來(lái)得快,因?yàn)樵趛=1中有一個(gè)將y從字符變?yōu)閿?shù)字的轉(zhuǎn)換。所以,我先檢查x= 'a',然后再檢查y=1?!?
這個(gè)例子說(shuō)明謂詞執(zhí)行的次序可能是不確定的,你不能指望有一種特定的執(zhí)行次序。也就是說(shuō),當(dāng)你依靠一個(gè)隱含的轉(zhuǎn)換時(shí),必須非常謹(jǐn)慎。
68、顯示SGA--fixed size(固定大?。┡cvariable size(可變大?。?
當(dāng)在svrmgr提示符下運(yùn)行 “show SGA”時(shí),fixed size和variable size是什么意思?
答:fixed size就是SGA中固定組件(它在編譯oracle 數(shù)據(jù)庫(kù)本身時(shí)就固定于其中)的大小。它是固定大小的內(nèi)存,用來(lái)指向SGA的其它部分。SGA這一部分的大小是不能改變的。
variable size指分配的內(nèi)存塊大小可變。SGA的可變塊,分為共享池、大池、JAVA池、游標(biāo)區(qū)和其他結(jié)構(gòu)。
上述內(nèi)容就是數(shù)據(jù)庫(kù)原理疑難問(wèn)題解答的示例分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。