Informix數(shù)據(jù)庫培訓(xùn)教程下_第1頁
Informix數(shù)據(jù)庫培訓(xùn)教程下_第2頁
Informix數(shù)據(jù)庫培訓(xùn)教程下_第3頁
Informix數(shù)據(jù)庫培訓(xùn)教程下_第4頁
Informix數(shù)據(jù)庫培訓(xùn)教程下_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、章informix online動(dòng)態(tài)服務(wù)器性能調(diào)整所謂性能調(diào)整就是平衡時(shí)間、空間、資金、可靠性等幾個(gè)因素之間的關(guān)系,使設(shè)備達(dá)到最 好的使用效果。其中任何一個(gè)因素的改變都會(huì)影響到其他因素的變動(dòng),要想單純的改變某一個(gè) 因素是不可能的。只能盡量地接近而不能超越最優(yōu)狀況下的實(shí)際性能。影響性能的主要因素 CPU要素指令執(zhí)行的時(shí)間、處理時(shí)間和 CPU利用率。磁盤要素訪問時(shí)間內(nèi)存要素實(shí)際內(nèi)存需求量、換頁率、對換和 I/O訪問時(shí)間。進(jìn)行性能評測的工具硬件廠商提供的工具1、time :顯示執(zhí)行一個(gè)程序所耗費(fèi)的時(shí)間。2、vmstat:報(bào)告有關(guān)進(jìn)程、內(nèi)存、磁盤和CPU的統(tǒng)計(jì)信息。3、sar:用來查看系統(tǒng)的實(shí)時(shí)記錄。

2、 INFORMIX工具1、on stat:列出在命令運(yùn)行的瞬間Online共享內(nèi)存結(jié)構(gòu)中的情況。Online 系2、on check :用于修復(fù)磁盤中受到破壞的索引和數(shù)據(jù)頁,還可用于監(jiān)測 統(tǒng)磁盤上的其它數(shù)據(jù)結(jié)構(gòu)。合理的磁盤布局1.2.性能調(diào)整的幾個(gè)方面磁盤布局的目標(biāo)是平衡所有設(shè)備的I/O操作!確定磁盤布局的步驟檢查應(yīng)用的SQL以決定I/O的頻繁程度、vmstat -g iof (對已使用的數(shù)據(jù)庫)、檢查應(yīng)用(對未使用的數(shù)據(jù)庫)找出使用最頻繁的表確定online系統(tǒng)可使用的磁盤資源決定如何在磁盤間分布I/O如何進(jìn)行磁盤布局分割的種類1、表的分割2、索引的分割分割的方式1、基于表達(dá)式方式分割特點(diǎn):

3、數(shù)據(jù)的存取是不均勻分布的、查詢的選擇性很強(qiáng)、基于列的某個(gè)條件的 查詢可以消除某些分片的查詢。2、基于循環(huán)方式分割 特點(diǎn):數(shù)據(jù)的均勻分布、最高的數(shù)據(jù)可用性、沒有了對表達(dá)式進(jìn)行求值的過程從而可得到最高的數(shù)據(jù)裝載效率。數(shù)據(jù)分割的原則1、2、3、4、5、6、7、對 DSS 重點(diǎn)是數(shù)據(jù)的分割 對 OLTP 重點(diǎn)是索引的分割 對順序掃描讀的表采用循環(huán)方式進(jìn)行分割 分割表達(dá)式應(yīng)盡量簡單、 盡量將最可能滿足的表達(dá)式放在前面 避免在表達(dá)式中有類型轉(zhuǎn)換操作 不要針對經(jīng)常改變的字段進(jìn)行分割 Chunk的影響Chunk 加到系統(tǒng)中的順序也會(huì)影響系統(tǒng)的性能。因?yàn)樵谙到y(tǒng)檢查點(diǎn)期 間, 給 Chunk 分配清頁線索是根據(jù)

4、Chunk 加到系統(tǒng)中的順序進(jìn)行的。 臨時(shí)空間的建立如果系統(tǒng)支持 DSS 查詢,就需要頻繁的創(chuàng)建和使用臨時(shí)表和排序文件, 那么臨時(shí)數(shù)據(jù)空間的位置對性能的影響是很大的,此時(shí)應(yīng)考慮建立一個(gè)或多個(gè)臨時(shí) 空間,并且不同的臨時(shí)空間應(yīng)盡量分布在不同的磁盤上,道理同Chunk 順序。4。磁盤布局地監(jiān)控 onstat -g iof 命令監(jiān)控磁盤活動(dòng)。 使用 UNIX 工具 sar -d 1 5 顯示磁盤利用率。5. 磁盤布局的改變用ALTER FRAGMEN語句改變現(xiàn)有磁盤布局。該語句可以重新設(shè)置新的分割策略,可以 增加、刪除、修改一個(gè)分片,可以將幾個(gè)結(jié)構(gòu)相同的表合并或?qū)⒁粋€(gè)表分成幾個(gè)結(jié)構(gòu)相同的 表。 正 確

5、地調(diào)整影響 I/O 性能的幾個(gè)參數(shù)1 緩沖區(qū)參數(shù)的設(shè)置 OLTP 環(huán)境下,應(yīng)將共享內(nèi)存的大部分分配到駐留部分。 DSS環(huán)境下,應(yīng)將共享內(nèi)存的大部分分配到虛擬部分。2. NUMAIOV P參數(shù)的設(shè)置 KAIO (核心異步 I/O )和 AIO 的概念以及兩者的區(qū)別。 Onstat -g ath 監(jiān)測系統(tǒng)是否使用 SAIO。配置NUMAIOVP參數(shù)1、對于使用KAIO并且所有chunk都是原始設(shè)備的 只需把 NUMIOVP設(shè)為1或2。2、對于不使用 KAIO的Online系統(tǒng),應(yīng)把 AIO vp 的磁盤的數(shù)目。3、對于同時(shí)使用了核心 AIO和操作系統(tǒng)文件設(shè)備的Online 系統(tǒng),的數(shù)目設(shè)置成存放數(shù)

6、據(jù)庫表Online 系3.4.統(tǒng),應(yīng)把AIO vp的數(shù)目設(shè)置成與使用操作系統(tǒng)文件設(shè)備來做 放數(shù)據(jù)庫表的磁盤的數(shù)目。監(jiān)控I/O隊(duì)列長度使用 on stat -g ioqLRU隊(duì)列參數(shù)據(jù)的設(shè)置 LRU (最少最近使用)隊(duì)列的作 用來管理工共享內(nèi)存緩沖區(qū)。如何配置LRU隊(duì)列的數(shù)目(由參數(shù) LRUS決定) 配置LRU隊(duì)列的數(shù)目的目的是減少LRU隊(duì)列的長度!1、 對大型多處理系統(tǒng),一般將 LRUS設(shè)成CPU vp的數(shù)量。2、 對單處理機(jī)系統(tǒng)或小型多處理系統(tǒng),將LRUS設(shè)為4。3、LRU隊(duì)列數(shù)的取值范圍是 4-32個(gè)。配置1、2、3、監(jiān)控命令列出有關(guān)I/O請求隊(duì)列長度的信息。LRU百分比的原則LRU_MA

7、X_DIRT和 LRU_MIN_DIRTY參數(shù)。百分比設(shè)得過高時(shí)。百分比設(shè)得過低時(shí)。LRU隊(duì)列on stat -R命令顯示LRU隊(duì)列中FLRU和MLRU所占的百分比。有關(guān)檢查點(diǎn)活動(dòng)參數(shù)的設(shè)置檢查點(diǎn)的概念檢查點(diǎn)持續(xù)時(shí)間和間隔的概念chunk以存影響檢查點(diǎn)持續(xù)時(shí)間的因素1、有多少臟頁需要從緩沖寫到磁盤上。緩沖池的大小LRU參數(shù)臟頁能夠?qū)懚嗫?。磁盤的數(shù)量和速度磁盤布局清頁線索的數(shù)量影響檢查點(diǎn)間隔的因素1、CHPTINTVL 參數(shù)2、物理日志的大小3、系統(tǒng)中的寫操作。4、一些系統(tǒng)的管理操作。5.5、Online系統(tǒng)管理員強(qiáng)制執(zhí)行。清頁線索的監(jiān)控 Online緩沖區(qū)寫操作的類型1、Chunk 寫2、LR

8、U寫3、前臺寫監(jiān)控清頁線索的活動(dòng)1、2、3、4、清頁線索活動(dòng)的發(fā)生。清頁線索的數(shù)目是通過 CLEANERS參數(shù)來確定的。使用命令onstat -F顯示關(guān)于清頁線索活動(dòng)的詳細(xì)信息。對于面向批處理的系統(tǒng)應(yīng)把 LRU的百分比定的高一些。檢查點(diǎn)間隔中和檢查點(diǎn)期間的頁清理活動(dòng)的區(qū)別檢查點(diǎn)期間是chunk寫,比較有效,而檢查點(diǎn)間隔中是LRU寫。檢查點(diǎn)間隔中的頁清理活動(dòng)不引起其它用戶進(jìn)程等待,而檢查點(diǎn)期間 的頁清理活動(dòng)正好相反。6. 合理調(diào)整日志緩沖區(qū)為獲得優(yōu)化的性能,應(yīng)把物理和邏輯日志緩沖區(qū)配置的足夠大,以盡量減少把 物理日志和邏輯日志寫到磁盤上所需的物理I/O的數(shù)量。使用命令onstat -I的輸出信息

9、來判斷日志緩沖區(qū)的大小是否是優(yōu)化的。(bufsize 和 Pgaes/io兩個(gè)參數(shù)。)7. 預(yù)讀的配置預(yù)讀的概念預(yù)讀參數(shù):RA_PAGES 和 RA_THRESHOLD 監(jiān)控預(yù)讀:onstat -P數(shù)據(jù)庫性能策略1. 數(shù)據(jù)庫日志模式和性能的關(guān)系緩沖日時(shí)局模式:數(shù)據(jù)庫先將事務(wù)記錄發(fā)送到一內(nèi)存緩沖區(qū)內(nèi),當(dāng)緩沖區(qū)滿時(shí) 寫到磁盤上。非緩沖日志模式:數(shù)據(jù)庫也是先將事務(wù)記錄發(fā)送到一內(nèi)存緩沖區(qū)內(nèi),但一旦有 一個(gè)事務(wù)提交,內(nèi)存緩沖區(qū)馬上被寫到磁盤上。2. 添加索引對系統(tǒng)性能的影響B(tài)+樹的概念47索引的填充度(參數(shù) FILLFACTOR 決定)的概念12182430節(jié)點(diǎn)監(jiān)控索引的填充度oncheck -pT d

10、atabase:table有效的使用BLOB大型的BLOB數(shù)據(jù)應(yīng)放在blobs pace上。由于BLOB數(shù)據(jù)占據(jù)的空間比較 大,可能占據(jù)緩存中的幾個(gè)頁,和其它數(shù)據(jù)一起存放會(huì)降低整個(gè)Online系統(tǒng)的緩存命中率。BLOB頁的大小應(yīng)設(shè)置成在 blobs pace中的BLOB數(shù)據(jù)的平均長度。合理配置CPU vps1. C PU vp類將所有密集CPU活動(dòng)的操作放在其中的進(jìn)程上運(yùn)行,從而使這些進(jìn)程總 保持工作而較少睡眠。要想提高系統(tǒng)性能,應(yīng)盡量使該類VP保持忙碌。2.監(jiān)測CPU vp的使用on stat - g glo顯示正在運(yùn)行的 vp的CPU使用情況的信息。On stat -g rea用來監(jiān)測就緒

11、隊(duì)列中的項(xiàng)目情況。3.合理調(diào)整CPU vps對單或雙處理器系統(tǒng)1、臨界區(qū)的概念。2、SINGINE_CPU_VP=1避免了很多的臨界區(qū)調(diào)用。3、MULT IP ROCESSOR=0對于多處理器系統(tǒng),調(diào)整該參數(shù)將對性能產(chǎn)生顯著影響,但應(yīng)遵循以下原則:1、一次只增加一個(gè)CPU vp.2、CPU vp的數(shù)量不要越過硬件處理器的數(shù)量。3、應(yīng)隨時(shí)檢查系統(tǒng)處理器的使用率。正確使用內(nèi)存1. Online系統(tǒng)中共享內(nèi)存的三個(gè)部分 駐留部分:包含緩沖區(qū)緩存和其它系統(tǒng)信息。 虛擬部分:包含會(huì)話和線索所使用的各種內(nèi)存池。 消息部分:包含消息緩沖區(qū)。2. Online中使用內(nèi)存的主要部分 Online系統(tǒng)內(nèi)存1、緩沖

12、池2、存儲過程緩沖池會(huì)話內(nèi)存1、排序2、雜湊連接3、中間文件3. 內(nèi)存管理OLTP和DSS對內(nèi)存的需要情況1、對OLTP純環(huán)境2、對DSS純環(huán)境3、OLTP 和 DSS昆合環(huán)境(參數(shù) DS_TOTAL_MEMORY4.SHMMAXSHMSEGSHMTOTALBUFFERS影響內(nèi)存使用的幾個(gè)參數(shù):共享內(nèi)存的最大尺寸。:每個(gè)進(jìn)程能訪問的共享內(nèi)存段數(shù)。:限制共享內(nèi)存的總空間。DS TOTAL MEMORY:調(diào)整緩沖區(qū)池的大小。_限制DSS查詢的內(nèi)存空間。5。監(jiān)控共享內(nèi)存的使用on stat -g seg命令,確定動(dòng)態(tài)服務(wù)器分配到的和使用的內(nèi)存數(shù)量。Onm ode -F 命令,用來釋放不再使用的共享內(nèi)

13、存段。對c/s結(jié)構(gòu)和分布式通訊調(diào)整網(wǎng)絡(luò)配置參數(shù)1 數(shù)據(jù)庫服務(wù)器與客戶應(yīng)用位于同一臺機(jī)器上時(shí)只要CPU的利用率不接近100%并且有足夠的內(nèi)存可用于運(yùn)行所有的進(jìn)程,而不 需要額外的換頁,則就可以在同一臺機(jī)器上運(yùn)行應(yīng)用進(jìn)程和數(shù)據(jù)庫服務(wù)器。此時(shí) 可使用共享內(nèi)存或 TCP/IP來通訊。2 數(shù)據(jù)庫服務(wù)器與客戶應(yīng)用不在同一臺機(jī)器上時(shí) 對要多次使用的 SQL語句實(shí)現(xiàn)做好 Prep are.FET SIZE對于把多個(gè)SQL語句作為一組來執(zhí)行的任務(wù),就使用存儲過程。 當(dāng)傳送大量的行,特別是一行的數(shù)據(jù)量很大時(shí),可通過增加環(huán)境變量 的值以減少網(wǎng)絡(luò)通訊量。3 對于有大量客戶的系統(tǒng)命令來監(jiān)測網(wǎng)絡(luò)負(fù)載。 listen (偵

14、聽)線索的作用。線索處理接收消息。監(jiān)測網(wǎng)絡(luò)負(fù)載使用 netstat -I 2 poll(探詢)線索和1、應(yīng)有足夠的poll可通過在參數(shù) NETTYPE勺第四個(gè)域中指定為 NET Poil線索將在它們自己 vp 的上運(yùn)行,若指定為 CPU則poll線索將在CPUvp上運(yùn)行。2、應(yīng)有足夠的listenx 線索處理同時(shí)連接。在文件 $INFORMIX/etc/sqlhosts 和 $INFORMIX/etc/onconfig中設(shè)定。章 informix_sql語言簡介重要的數(shù)據(jù)庫術(shù)語表中每一行代表了表的主題的一個(gè)實(shí)例。 表中一個(gè)列代表了一個(gè)屬性。關(guān)系模型:描述數(shù)據(jù)庫和數(shù)據(jù)模型。表:表是數(shù)據(jù)項(xiàng)的陣列,

15、以行和列組織。所有的數(shù)據(jù)都是以表的形式存在的,表由行和列組成。行:列:表、行、列:表=實(shí)體一個(gè)表代表了數(shù)據(jù)庫對一個(gè)主體或一類事物所知道的信息。列=屬性一個(gè)列代表了對表的主體的為真的一個(gè)特性、特征或事實(shí)。行=實(shí)列一個(gè)行代表了表的主體的一個(gè)單獨(dú)的實(shí)例。對表的操作:選擇:表中滿足特定條件的行的水平子集投影:選定某些符合條件的列的垂直子集連接:通過連接幾個(gè)相關(guān)的表獲得更多個(gè)實(shí)體的信息INFORMIX數(shù)據(jù)庫實(shí)用程序介紹1、Dbaccess使用數(shù)據(jù)庫的結(jié)構(gòu)化查詢語言對數(shù)據(jù)庫進(jìn)行操作允許輸入一組新的語句作為當(dāng)前語句執(zhí)行當(dāng)前的語句修改當(dāng)前語句允許用戶使用系統(tǒng)編輯程序vi對當(dāng)前語句進(jìn)行編輯將執(zhí)行當(dāng)前語句的結(jié)果進(jìn)

16、行輸出將查詢結(jié)果輸出到打印機(jī)將查詢結(jié)果輸出到一個(gè)新文件將查詢結(jié)果追加的一個(gè)存在的文件中 將查詢結(jié)果送到其它程序的標(biāo)準(zhǔn)輸入中 退出out put菜單選擇當(dāng)前目錄下以.sql為后綴的SQL語句文件 存放當(dāng)前語句到某一 SQL文件。其后綴為。sql顯示當(dāng)前數(shù)據(jù)庫中某個(gè)表的信息 從數(shù)據(jù)庫中刪除某個(gè) SQL文件退出 Query_Language 菜單用來輸入、執(zhí)行 SQL查詢語句或者將查詢結(jié)果輸出;選擇、生成、刪除數(shù)據(jù)庫;生 成、修改、刪除或者查詢數(shù)據(jù)庫中表的各種信息等。下面詳細(xì)介紹各個(gè)菜單及其功能:Query _Lan guageNewRunModifyUse_editorOut putPrin te

17、rNew_fileAppen d_fileTo_pipeExitChooseSaveInfoDropExitSelect設(shè)置某數(shù)據(jù)庫為當(dāng)前工作數(shù)據(jù)庫Create創(chuàng)建新數(shù)據(jù)庫并使其成為當(dāng)前工作數(shù)據(jù)庫Drop從系統(tǒng)中刪除某數(shù)據(jù)庫Exit退出數(shù)據(jù)庫Database菜單,返回到上級菜單Table用來生成、修改或刪除一個(gè)數(shù)據(jù)庫中的表Create生成一個(gè)新表Alter修改一個(gè)已經(jīng)存在的表的結(jié)構(gòu)Info查詢一個(gè)已經(jīng)存在的表的信息Drop刪除一個(gè)已經(jīng)存在的表Exit退出一個(gè)已經(jīng)存在的表2、Isqlrf(有的系統(tǒng)為:isql)Form可以執(zhí)行、創(chuàng)建、修改、編譯屏幕格式或刪除已存在的屏幕格式Run執(zhí)行某一已經(jīng)存在

18、的屏幕格式Modify修改指定的已經(jīng)存在的屏幕格式Generate為指定的表創(chuàng)建一個(gè)缺省的屏幕格式Com pile編譯一個(gè)制定的屏幕格式New創(chuàng)建特定的用戶屏幕格式Drop刪除某已經(jīng)存在的格式文件Exit退出Form菜單Rep ort可以執(zhí)行、建立、修改、編譯、或刪除報(bào)表Run執(zhí)行某一報(bào)表Modify修改指定的報(bào)表Generate為某一個(gè)表建立一個(gè)缺省的報(bào)表New建立一個(gè)用戶指定的報(bào)表Com pile編譯指定的報(bào)表Drop刪除一個(gè)指定的已經(jīng)存在的報(bào)表Exit退出Report菜單Query_Language詳見實(shí)用程序說明:dbaccessUser_menu可以執(zhí)行、建立或修改用戶建立的采單Ru

19、n執(zhí)行當(dāng)前數(shù)據(jù)庫的用戶菜單Modify允許用戶建立或修改用戶菜單Exit退出User_menu菜單用來選擇、生成或刪除一個(gè)數(shù)據(jù)庫DatabaseDatabaseTableExit詳見實(shí)用程序說明:dbaccess 詳見實(shí)用程序說明:dbaccess 通出實(shí)用程序isqlf (或isql)簡單的SELECT語句SELECT語句是最重要也是最復(fù)雜的SQL語句,它和insert up date和delete語句一起用于數(shù)據(jù)操作,主要用于:從數(shù)據(jù)庫中檢索數(shù)據(jù)作為INSERT語句的一部分產(chǎn)生新的行 作為 UPDATE 語句的一部分更新信息 1 SELETE 語句的簡要介紹構(gòu)成:指定要查詢的表指定要查詢的

20、列 選擇特定的列或創(chuàng)建一個(gè)新的連接條件 改變數(shù)據(jù)產(chǎn)生的次序 把結(jié)果以表的形式存放起來,供以后使用 子句是必選的。SELECT 子句FROM 子句WHERE 子句ORDER BY 子句INTO TEMP 子句 其中 SELECT 、FORMgrant 和 revoke 語句將在后面權(quán)限選擇:在表中滿足特定條件的行的水平子集。這一類型的部分行的所有列。選擇是通過SELECT 語句的 WHERE例: SELECT *FROM customWHERE state=”NJ”顯示結(jié)果如下:customer_num107fnameCharleslnameReamcompanyAthletic Supplie

21、saddressl41 Jordan Avenueaddress2cityPalo AltostateCAzipcode94304phone415-356-9876SELECT 子句返回表中的一 子句來實(shí)現(xiàn)的。查詢數(shù)據(jù)庫必須對該數(shù)據(jù)庫具有connect 權(quán)限以及對表具有 SELECT 權(quán)限,這些權(quán)限通常作為默認(rèn)值賦給用戶。與數(shù)據(jù)庫的操作權(quán)限有關(guān)的 講到。關(guān)系操作投影:在表中一些列的垂直子集,子集包含了表中這些列的所有行。這樣的 SELECT 語句返回表中所有行的一些列。投影是通過在 SELECT 語句中的 SELECT 子句的選項(xiàng) 來實(shí)現(xiàn)的。例: SELECT UNIQUE city, sta

22、te,zipcode FROM customer查詢結(jié)果包含了與 customer 表中的相同數(shù)目的行,但僅投影了列的一個(gè)子集顯示結(jié)果如下:citystate zipcodeBartlesvilleOK74006Blue IslandNY60406BrightonMA02135Cheey HillNJ08002DenverCO80219JacksonvilleFL32256Los AltosCA94022Menlo ParkCA94025Moutain ViewCA94040Moutain ViewCA94063OaklandCA94609Palo AltoCA94303Palo AltoCA

23、94304PhoenixAZ85008SELECT 語句在大多數(shù)情況下同時(shí)使用選擇和投影,查詢返回表中的一些行和一些 列。state= ” NJ”例: SELECT UNIQUE city,state,zipcode FROM customer WHERE顯示結(jié)果如下: citystatezipcodeCherry HillPrincetonNJNJ0800208540連續(xù):將兩個(gè)或多個(gè)表通過一個(gè)或多個(gè)相同的列聯(lián)系起來成為一個(gè)新的結(jié)果表例: SELECT UNIQUE city,state,zipcode,sname FROM customer ,stateWHERE customer ,st

24、ate = state.code顯示結(jié)果如下:citystate zipcodesnameBartlesvilleOK74006OklahomaBlue IslandNY60406New YorkBrightonMA02135MassachusettsCherry HillNJ08002New JerseyDenverCO80219ColoradoJacksonvilleFL32256FloridaLos AltosCA94022californiaMenlo ParkCA94025californiaMountain ViewCA94040californiaMountain ViewCA9

25、4063californiaOaklandCA94609californiaPalo AltoCA94303californiaPalo AltoCA94304californiaPhoenixAZ85008Arizona2.單表 SELECT 語句檢索所有的行和列使用 * 號:星號代表所有的列的名字。例: SELECT *FROM manufact顯示結(jié)果如下:manu_codemanu_namelead_timeSMT ANZ NRGHSKHROSHMKAR NKL PRCSmith Anza Norge Husky Hero Shimara karsten Nikolus ProCycl

26、e35754302189 選擇特定的列例: SELECT UNIQUE customer_num 注:此處關(guān)鍵字 UNIQUE 或它的同義詞FORM ordersDISTINCT 來抑制重復(fù)的行顯示結(jié)果如下:customer_num101104106排序列排序:可以通過改變選項(xiàng)表中列的次序來改變各列在顯示時(shí)的次序。例: SELECT manu_name , manu_code , lead_time FROM manufact顯示結(jié)果如下:manu_namelead_timeSmithSMT3AnzaANZ5NorgeNRG7HuskyHSK5HeroHRO4ShimaraSHM30Karst

27、enKAR21NikolusNKL8ProCyclePRC9manu-code行排序:可以通過SELECT語句中加入 ORDER BY 子句來要求系統(tǒng)按某各指定次序?qū)?shù)據(jù)進(jìn)行排序。例: SELECT manu-code, manu_name, lead_timeFROM manufactORDER BY lead_time以 lead_time 的次序顯示 manufact 表中的每一行和列。ORDER BY 子句中列顯示結(jié)果如下:manu_namemanu_codelead_timeSmithSMT3HeroHRO4HuskyHSK5AnzaANZ5NorgeNRG7NikolusNKL8P

28、roCyclePRC9KarstenKAR21ShimaraSHM30缺省時(shí)檢索所得的數(shù)據(jù)排序后按升序顯示。升序?qū)?A 到小寫 z ,對數(shù)字類型而言是從最小值到最大值, 晚的順序排序, I 在列名后接關(guān)鍵字CHARACTER 數(shù)據(jù)類型而言是從大寫 DATE 和 DATETIME 類型的數(shù)據(jù)從早到 INTERVAL 數(shù)據(jù)按持續(xù)時(shí)間從最短到最長排序。DESC 表明檢索所得數(shù)據(jù)按降序排序。SELECT * FROM ORDER DESC果如下:manufactBY lead_timemanu_code manu_nameleadSHMShimara30KARKarsten21PRCProCycle9

29、NKLNikolus8NRGNorge7HSKHusky5ANZAnza5HROHero4SMTSmith3例:time可以實(shí)現(xiàn)按照多列排序,人而建立一個(gè)組排序,缺省仍為升序,在 首位得列優(yōu)先。例: SELECT *FROM stockORDER BY manu_code, unit_price(_nummanu_codedescri ptionunit_ priceunitunit_descr5ANZtennis racquet$19.80eacheach9ANZvolleyball net$20.00eacheach6ANZtennis ball$48.00case24 cans/case

30、313ANZswim cap$60.00box12/box201ANZgolf shoes$75.00eacheach310ANZkick board$84.00case12/case301ANZrunning shoes$95.00eacheach304ANZwatch$170.00box10/box110ANZhelmet$244.00case4/case205ANZ3 golf balls$312.00case24/case8ANZvolleyball$840.00case24/case302HROice p ack$4.50eacheach309HROear drops$40.00ca

31、se20/case301HROrunning shoes$42.50eacheach選擇特定的行可以在SELECT語句中加入WHERE子句來從表艮中檢索特定的行顯示結(jié)果如下:通過WHERE子句來設(shè)置一個(gè)比較條件,查詢條件使用特定的關(guān)鍵字和運(yùn)算符來定義 搜索條件。關(guān)鍵字:可以用 BETWEEN、LIKE或MATH測試相等的情況;或用 IS NULL來測試 空值;可以把關(guān)鍵字 NO和這些關(guān)鍵字連用來指定相反的條件。運(yùn)算符:操作符操作=等于!=或不等于大于小于=大于等于=小于等于比較項(xiàng)的大小按照排序時(shí)的順序確定,除了在測試 或BYTE列。NULL值的時(shí)候,不能在比較項(xiàng)中使用TEXT在 WHERE來:

32、子句中,可以用前面講的關(guān)鍵字和運(yùn)算符來建立比較條件查詢,用包括行在例: SELECT customer_num, call_code, call_dtime, res_dtime FROM cust_callsWHERE customer num = 106WHERE子句中用關(guān)系運(yùn)算符 =來包括指定的行顯示結(jié)果如下:customer_num call_code call_ dtimeres_dtime106D1994 061208:201994 06 1208:25排除行在 WHERE子句中用關(guān)系運(yùn)算符!=或來排除指定的行例: SELECT customer_num, company, cit

33、y, state FROM customerWHEREstate != ” CA”顯示結(jié)果如下:customer_num119120121122companyThe Triathletes Club Century Pro Shop City SportsThe Sporting Lifecity Cherry Hill Phoenix Wilmington PrincetonstateNJAZDENJ排除范圍的123Bay SportsJacksonvilleFL124Putnum s PuttersBartlesville125Total Fitness SportsBrightonMA1

34、26Neeliecousnt DSispDenverCO127Big Blue Bike ShopBlue IslandNY128Phoenix UniversityPhoenixAZ定范圍和行在 WHERE 子句中使用關(guān)鍵字 NOT BETWEENOK來排除一定WHERE zipcode NOT BETWEENORDER BY state“ 94000 ” AND“ 94999 ”fname顯示結(jié)果如下:lnamecompanycitystateFrankLessorPhoenix UniversityPhoenixAZFredJewellCentury Pro ShopPhoenixAZE

35、ileenNeelieNeeliesDiscount SpDenverJasonWallackCity SportsWilmingtonDEMarvinHanlonBay SportsJacksonvilleFLJamesHenryTotal Fitness SportsBrightonMABobShorterThe Triathletes CluCherry HillNJCathy0 BrianThe Sporting Life PrincetonNJKimSatiferBig Blue Bike ShopBlue IslandNYChrisPutnumPutnum s PuttersBar

36、tlesvilleOK指定行有多種方式可以在 WHERE 子句中指定行例: SELECT fname, lname, company ,city,state FROM customerCO例: SELECT catalog_num ,stock-num, manu_code, cat_advert FROM catalogWHERE catalog_num, BETWEEN 10005 AND 10008100053HSKHigh-Technology Design Expands the Sweet SpotCatalog_num Stock_num Manu_code Cat_advert

37、 Athletes 查找值的子集例: SELECTFROMWHERE state = “ ORDER BY lnamelname ,city,state,phone customerAZ”O(jiān)RNJ”或: SELECT lname ,city, state, phone FROM customer WHERE state NOT IN ORDER BY lnameAZ” , “ NJ”)顯示結(jié)果如下:lnamecitystatephoneAlbertsRedwood CityCA415-886-6677BaxterOaklandCA415-655-0011BeattyMenlo ParkCA41

38、5-356-9982CurriePalo AltoCA415-328-4543GrantMenlo ParkCA415-356-1123HanlonJacksonvilleFL904-823-4239HenryBrightonMA617-232-4159 確認(rèn)空值使用例: SELECTFROM ordersWHERE paid_date IS NULLIS NULL 或者IS NOT NULL選項(xiàng)檢查 NULL值order_num ,customer_num , po_num , ship_date復(fù)合條件查詢用邏輯運(yùn)算符AND OR和NOT來連接一至多個(gè)比較條件。例: SELECT orde

39、r_num , customer_num , po_num, ship_dateFROM ordersWHERE paid_date IS NULL或: SELECT catalog_num, stock_num, manu_code, cat_advertFROM catalogWHERE catalog_num = 10005 AND catalog_num = 10008 第一個(gè)語句使用了關(guān)鍵字,第二個(gè)語句使用了關(guān)系運(yùn)算符。 顯示結(jié)果如下: catalog_num stock_num manu_code cat_advert100063SHMDurable Aluminum for Hi

40、gh School and CollegiateAND ship_date IS NOT NULL 顯示結(jié)果如下:order_ numcustomer_ num po_numship_date1004106 800605/30/19941007117 27869306/05/19941012117 27870106/29/佃9410161佃 P C678207/12/19941017120 DM35433107/13/1994CHARCTER域的子串可以使用關(guān)鍵字對于基于處略。LIKE和MATCH來查詢,此四、修改數(shù)據(jù)的語句1.修改數(shù)據(jù)的語句與 SELECT語句相比相對簡單,但由于它們對數(shù)據(jù)庫

41、中數(shù)據(jù)進(jìn)行修改,因此使用時(shí)一定要小心。如果在修改的過程中系統(tǒng)發(fā)生故障,數(shù)據(jù)庫本身的狀態(tài)就不確定。一般的在數(shù)據(jù)庫庫中插入、刪除和更新前,應(yīng)確定:數(shù)據(jù)庫是否賦予用戶有限的權(quán)限,以保證用戶安全存取數(shù)據(jù)庫和表。 修改后的數(shù)據(jù)是否保持現(xiàn)有數(shù)據(jù)庫的完整性。系統(tǒng)是否能保護(hù)數(shù)據(jù)庫有效抵御外部事件引起的系統(tǒng)或硬件故障。以下三個(gè)語句可以用于修改數(shù)據(jù) DELETE INSERT UPDATE刪除插入更新2.DELETE語句DELETE語句中如果從表中刪除行或行的組合。一旦事務(wù)提交后將無法恢復(fù)被刪 除的行。當(dāng)刪除一行時(shí),還要注意是否會(huì)刪除別的表中的行。這些行的值依賴于被刪除的 行。刪除表中所有的行DELETE語句中如

42、果不帶有 WHERE子句表示刪除表中所有的行。 語法:DELETE FROM 表名例:DELETE FROM customer刪除表中指定的行DELETE使用WHER語句來指定表中要?jiǎng)h除的行語法:DELETE FROM 表名 WHERE條件子句例:DELETE FROM customer WHERE company =Druid Cyclery ”復(fù)雜的刪除條件DELETE中的 WHER子句可以很復(fù)雜,幾乎和SELETE語句中的一樣。它可以包含多個(gè)用 AND和OR連接起來的條件。例: DELETE FROM stockWHERE 0 = (SELECT COUNT(*) FROM manufa

43、ctWHERE manufact . manu_code = stock . manu_code)子查詢對 manufact 中匹配的行計(jì)數(shù),將 stock 表中與 manufact 表中不匹配的 manu_code 所在的行刪除。3INSERT 語句INSERT 語句往表里加入一個(gè)新的行。這個(gè)語句有兩個(gè)基本功能:使用你提供的列的 值創(chuàng)建一個(gè)新的行:使用從別的表里選擇得到的數(shù)據(jù)創(chuàng)建一個(gè)新的行。單行插入。根據(jù)一系列的值創(chuàng)建一個(gè)新的行,然后把行放入表中VALUES例: INSERT INTOVALUES語法: INSERT INTO 表名勝古跡(字段列表) 加入指定字段的值)stock(115,“

44、 PRC”, “ tire_pump ” ,108. “ box”, “ 6/box ”)注意:上面的例子中 VALUES 子句所列出的值與表中的列一一對應(yīng)。要寫 VALUES 子句,就必須知道表的列,以及其第一個(gè)到最后一個(gè)的次序。也可以列出特定的列名,數(shù)據(jù)庫服務(wù)器為剩下的列指定缺省的值。如果沒有缺省值 而允許空值的話則指定為空值。stock例 : INSERT INTO(stock_num , description, unit_price, manu_code)VALUES (115, “ tire_ pump ”,114 . “ SHM”)VALUES 子句只接受常數(shù)值,不接受表達(dá)式???/p>

45、以提供的值包括:數(shù)字、日期值、 間隔時(shí)間值、引號括起的字符串、 NULL 表示空值、 TODAY 表示今天日期、 CURRENT 代表當(dāng)前的日期和時(shí)間、 USER 代表用戶名、 DBSERVNAME 代表數(shù)據(jù)庫服務(wù)器所在的 計(jì)算機(jī)。 VALUES 子句插入的值應(yīng)符合該列的值的要求。 多行和表達(dá)式用 SELECT 語句代表 VALUES 子句,實(shí)現(xiàn)僅用一個(gè)語句插入多行(對 SELECT語句返回的每行都有插入一行)計(jì)算值(VALUES子句只允許常數(shù)),選項(xiàng)列表中允許表達(dá)式語法: INSERT INTO 表名 (字段列表)SELECT 語句例: INSERT INTO cust_calls (cus

46、tomer_num ,call_descript)SELECT customer_num ,order_num , FROM ordersWHERE paid_date is NOT NULL AND ship_date IS NULLINSERT 語句中的 SELECT 語句包含 INTO 、INTO TEMP 、 ORDER BY 語 句。不能引用正在往里插入行的表。如果需要引用正在往里插入行的表時(shí),可以通過創(chuàng)建臨時(shí) 表的方法實(shí)現(xiàn)。4UPDATE 語句UPDATE 語句用來更新表中已有的一行或多行中的一列或多列的值。 該 語句的兩種基本形式為:通過名字給列賦予特定的值把一系列的值賦給一系列

47、的列注意:更新后的值需滿足原來列上數(shù)據(jù)完整性的約束。選定要更新的行UPDATE 使用 WHERE 語句來選定要更新的行,忽略 WHERE 子句表示更新所有的 行。注意要更新的表不能在子查詢的 FROM 語句中出現(xiàn)??梢赃x定一行 (WHERE 子句利用表中主鍵來確定行) 語法: UPDATE 表名SET字段名1 =設(shè)定值1, 字段名n =設(shè)定值nWHERE 條件語句例: UPDATE customerSET fname= “ Barnably ” ,lname= “ Dorfler ”WHERE customer_num=103 可以用統(tǒng)一的值來更新多行: 例: UPDATE stockSET

48、unit_price=unit_price*1.05WHERE manu_code= “ HRO”可以用一個(gè)子查詢來作為賦值的一部分。當(dāng)使用子查詢作為表達(dá)式的一個(gè)元素時(shí),子查詢 必須返回且只返回一個(gè)值。例: UPDATE itemsSET total_price=quantity *(SELECT MAX (unit_price) FROM stockWHERE stock . stock_num=items. Stock_num)WHERE items. Order_num IN(SELECT order_num FROM ordersWHERE ship_date IS NULL)第二個(gè)

49、SELECT 語句選擇出符合條件的 order_num ,主 WHERE 語句選定與其匹配的 items. Order_num,并更新 items 表中相應(yīng)行的 total_price 列。 用選定的值來更新UPDATE 語句可以用一個(gè)塊賦值代替一系列的賦值,當(dāng)這些值是常數(shù)時(shí),并沒有特別 的優(yōu)點(diǎn),如: 語法: UPDATE 表名n) = ( 設(shè)定值 1,設(shè)定值n)SET (字段名 1, 字段名WHERE 條件語句例: UPDATE customerSET (fname, lname) = (Barbaby ”Dorfler ”)WHERE (fname, lname) = (Barbaby ”

50、Dorfler ”)當(dāng)要賦的值來自一個(gè) SELECT語句時(shí),就具有了簡潔和提高性能的優(yōu)點(diǎn)。 例: UP DATE customerSET (address1,address2, city, state , zip code FROM newaddrWHERENewaddr, customer_num=customer,customer_num) WHERE customer_num IN(SELECT costomer_num FROM newaddr)5.L0AD、UNLOAD 語句 LOAD語句LOAD語句用于從一操作系統(tǒng)文件中向某一現(xiàn)存表中裝入ASC II碼數(shù)據(jù)。語法:例:LOAD FROMINSERT INTO LOAD例:LOADFROMINSERTFROMINSERT“在裝入數(shù)據(jù)的操作系統(tǒng)文件名” 被裝入數(shù)據(jù)的表的名稱(字段列表)“/usr/enid/sam pie”INTO customer“ usr/alex/datafileINTOcustomer(fname, lname, addressl, city, state) UNLOAD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論