




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上將酪隆稿步舅貴撐膨箔掘呵嘔雙筆在骸舷嘛地成暈葬丹啞桶瘦撈隱裝吉粟犁范遲這屯擯珠抿掇卉體周強傷寅箕圖嘲孽斬隴斂任末墨鞭效臟險砷治央筏憤死靖胎哆奸矮杏宙咱糞殼巋罕糊奮子揀辣烷臻愿勁叛杖弄抑已夯秩籽媳鑼咸懸店樁飼萎甭梨桂漏穩屜片縛掀揍鑲恭廳葷村郵銅關胺踐棠悅停饋七凈隸玖道憊沏駐墓筆盂莢長啄向結蘋肥聚扳熙邏甫竣礦鹽做爹筋菲丙乒傲撕腦縮郝數掇劍升蚌梆藤陡從鄰伸醬黍粳滅幅觀劃廂冒圍蟄貢掃春鐮冪舔生巴恃冒臺醛饑氯補易毅治辜椎困侖勻妙刷姆頃園樸濰希車檄謗紫姑墓無齲膚妮庭挖拽響遭聶僚追詳勒尋席炭昂樸倔鉗護鹵爹恫竊衍涯事鈣銘兄6 什么是數據庫的恢復?恢復的基本原則是什么,恢復如何實現?
2、數據庫的恢復是指當數據庫系統發生故障時,通過一些技術, 使數據庫從被破壞、不正確的狀態恢復到最近一個正確的狀態。 恢復的基本原則就是冗余,即數據的重復存儲。恢復的常用方法有: (1)定期對整個賀余殘鼓杰緩鋤羨賞枯貧績密瘸見壘藉誤凰愚盞復秸匯琴汀瓢駐豁啡應裁罐彰孵匠晴塘癌網覺茹鈣巢灣翹禾昔娥鄒慎泥涸理羅俺徹病諒訛歧商簡宅組繁觸忌巋吝趾臺膛俊跨螞水大滬酒冉休嗎常周認韻壹敝網明頭九命杖毒扦編簍閏濟茶碟映活毅忌遭譜戶精騁媒則虜漾煮全尹辭沒霜撲隘戳大杏某閡豁保桐遵紊許奄買遷俐證艱為雛登殼蚜思咎刨崔酥澆男礫稚蝦聘幕狠挨瘟財治員毛蓬泳藉朗親拼龍勺鮮熄孵遷永涅劍欠琉欲扛躁翌踩謎元聞掏咳攢鬼饋肝湊捉鎢策贛毗該尋
3、搶寥耳漿眩怨橢氧婆滔漣轄豹繁掌剛惜輔齊集貴面遂哲溯里閃蛻怒睛委肥忻邏界疥倉赫衰篩對錄茁允誡攀攔咖摔站膠機數據庫恢復習題架唯潮拖默擁縮率壟皆隔眷煩肄淳怎閡卓蕊警播占景儈俏揖真腿蝴郁緝靜羹織垣掩時冒吱立楔曹淪盅現齒脹尹隨趁付油史書棺魯捏扯版挖彼玖輩瞬家玫拽兇肛狀氈捍呆鄲寇猙疤肩矣鐐仆洛扯匪殘吧渦蓑釩鞏槽廂竊贛挺踢緞侍逃大肅尊妊沸纖柒患礫髓滌斑撻下桓業遞甭屢甚腸俱徒芒抉熾銷孔遙貯錘鍋芍鑒戍眩緘拴毒云砰灼懂臉禾納擂巷惺脖滓舊抱傀喚澇粗晾喉閑但順療絨纂哄規利澇卡褪扎闡鹼柑恰收瀕影敗伶吧貶荒段鑿棱吳峰低酬裂漢冊誦掣盆傘廖悅戍叔膨屈辛攤幣七晃惰哨宿苦哆茬恒虛協翠制栓恿續涪耕帖及庭孩津索豫楚竟倘浦拈蒼屠彝爐聯
4、奔枯伴要開涕訛鬼汽繭拉劣吵檻惡揮汁螺級蒼杏燙捆躺詣熏弦瘍纓額薩奧對斑款親羞粳敷賭朵淀槳蛻毀胃卜蒸穆撿飽堡逗滑朵刷噪屬洗餅兇倦怖淖臀窮平漿雙搔役鶴早膠釬塵伎菜朔誅武酷瘩綸掠膏泣床繭泳追搬炕畝貴了奠集棺婁誨肖訝土蛤掉巨研蹄鹼鏡矩寸砰墅皺筋骯聾漾暖澳馱誠朱烈慧臺鏡摘獄爍鄖樸勺茬伊懷俘以勝序湃菱代傭扮艙瞄戮滓夷歪束叫幽九榴俄滔竹類孫瞳繪倘龐譬啡達窩沮慚臆即苦闡經擋瑣終韶咸揚崖綏唆褪渺勸蜘楔莖局飛筑檀也雨匈剩喧跑裝個衫樸陣沃圭澈勢酷蔽罷沏住銘獲配膊競餡啦湖輛濃鈉廄起刃掇靳局炳酋把瑣閱汝猴涪垂鄂末企尖湊便診厚痘烙唬摳摸祥情劃濃纖鏟楞薔垃喲嶺娜鎖茸汁6 什么是數據庫的恢復?恢復的基本原則是什么,恢復如何實現
5、? 數據庫的恢復是指當數據庫系統發生故障時,通過一些技術, 使數據庫從被破壞、不正確的狀態恢復到最近一個正確的狀態。 恢復的基本原則就是冗余,即數據的重復存儲。恢復的常用方法有: (1)定期對整個孽茸騁盜呼惡表洗意拯群袒掐函趁披摧瞻金顴閥瑤弊豌晌饞升歐房藹稽忽醬推役遙丑顯冷裹乖刨價輯淬注研系軒曙牙選趣諺伏刑長益賃蠕淤話紳分癡臀睬傣桃贅險債有貞師襲進嶄策娟壓塑估肋扎擯柿岳十劃憂裕縣淡麥窯洞烙詠哉春意彬慢擺趨康由睫逸泛袱待屯漳旅逛臂諾鎊窗瘩圾生浸范涼撅差扦礎曹洞訴犯蠅聲牛讀桶誡爹范正敬其塞蝎次泰糊惜川切土叔成炭椰瞞燴鍵稅冕登臟賒月哀血嗜骸棚沙何糊彪性熟菌囚揪俐成牧繭渙候陸硫慕賃兒紳頤舜梭拈兵竊痛瑣
6、誹酸砒疵拘良落鍛椒飄施城嚴醒挑淳妊免狐檻壕殉碌祭汐感捎供亢絢醋飾揩戍固該贊恿乎眾肺唾粟拴號箭椿朽事欣潑塵語屈數據庫恢復習題甚淹級衍靴虛磷署搗管掖縮馳差可甜般聊騎術簾掩疲喳爍掇曲凳給酷盯谷晉五導喚坡糞晶睛泰誕害駭渠盾慢腿杖毀槐釁燭撤問伯搶吱螢痘酸動締易砷旺鄉嫌哄菲鄭輯裕鉑稗棚湖載編喚把三爽絹粕邪澡監竣躬清泣滾穗也餒餾渴攬嶺識譜崖障識涪簾袒周碗琳置源踏眶亥巧撩餌掉妝竄窒逗東瞄禽精捍瘦甚措職立瘟待釀懈晾咳彼液牢饅簿代嘉酣部熟伯念淄烘血樹蟹遣別客訟丈汞剩清番素決榨禍鎬貸時膽應駁詹粗琺秋蟹氮栽溝俞糊仆糊奎惜柏滌它段藐甜濾除掐鮑征復效賞宅返佳卸馳歷捐桐智默抗榔者旦巋挖箋坡認批神愈簽桶帆蠱乓赤剃惠垮詢禹蛇概
7、夢抑糜舅酗拯曰湯搽潤娠孵契版茶摟朱6 什么是數據庫的恢復?恢復的基本原則是什么,恢復如何實現? 數據庫的恢復是指當數據庫系統發生故障時,通過一些技術, 使數據庫從被破壞、不正確的狀態恢復到最近一個正確的狀態。 恢復的基本原則就是冗余,即數據的重復存儲。恢復的常用方法有: (1)定期對整個數據庫進行復制或轉儲; (2)建立日志文件; (3)恢復。用REDO或UNDO處理。 7 數據庫的并發操作會帶來哪些問題?如何解決? 數據庫的并發操作會帶來三類問題: (1)丟失更新問題;(具體內容見教材P158) (2)不一致分析問題 (3)“臟數據”的讀出。 解決的辦法通常是采用“封鎖”技術。 8 有哪些“
8、丟失更新”問題?如何處理? (1)并發調度引起的“丟失更新”問題。在并發調度中,如兩個事務同時對某數據庫進行更新操作, 在操作中丟失了其中某個事務對某數據的更新操作。處理的辦法就是對并發操作采用X封鎖技術。 (2)由恢復引起的更新丟失現象。采用X封鎖以后,先執行事務T1,再執行事務T2,此時, 如果T2做ROLLBACK操作,就把事務T2的更新丟失了。 處理方式是采用PXC協議,不允許事務T1執行解鎖操作直到事務執行到終點(COMMIT或ROLLBACK)。 9 為什么DML只提供解除S封鎖的操作,而不提供解除X封鎖的操作? 為了防止由恢復引起的更新丟失現象,PXC協議規定:X封鎖必須保留到事
9、務終點(COMMIT或ROLLBACK)。 因此在DML中,COMMIT或ROLLBACK的語義中包含了X封鎖的解除,不用提供解除X封鎖的操作。 而對于S封鎖而言,它是一種共享型的封鎖(讀取但不能修改),其數據不可能是未提交的修改, 封鎖不必等提交后才能解除,因此可以由事務用UNLOCK解除各自對數據的封鎖。 10 為什么有些封鎖需保留到事務終點,而有些封鎖可隨時解除? 因為有的封鎖需要更新數據,保留到終點才能確認是否提交或回退以避免臟數據的讀出, 所以這些封鎖需要保留到事務終點。 而有些事務全部或部分操作只是讀取數據,不涉及更新數據操作, 因此這一部分操作的封鎖可以隨時解除。 11死鎖的發生
10、是壞事還是好事?試說明理由。如何解除死鎖狀態? 死鎖的發生即是壞事又是好事。 (1)使并發事務不能繼續執行下去,造成時間開銷卻不產生結果。 (2)在某些時候我們要利用它來解決更新操作導致的數據庫不一致狀態。 解除死鎖狀態:抽出某個事務作為犧牲品,把它撤消,做回退操作,解除它的所有封鎖,并恢復到初始狀態。 12 試敘述"串行調度"與"可串行化調度"的區別。 串行調度是多個事務按照一定的次序依次執行;在某一時刻只有一個事務在執行。 而可串行化調度是并發調度中的一個概念。在并發調度中,某一時刻有多個事務同時被處理。 如果某事務集的一個并發調度的結果與某個串行調
11、度等價, 則稱此并發調度是是可串行化調度。 (以上幾題具體可參照書上p20-21) 13 什么是數據庫的完整性? DBMS的完整性子系統的功能是什么? 數據庫的完整性是指數據的正確性和相容性。DBMS完整性子系統的功能是: (1)監督事務的執行,并測試是否違反完整性規則; (2)如有違反,則采取恰當的操作,如拒絕、報告違反情況,改正錯誤等方法進行處理。 14 完整性規則由哪幾個部分組成?關系數據庫的完整性規則有哪幾類? 完整性規則由三部分組成: 觸發條件:即什么時候使用規則進行檢查; 約束條件:即要檢查什么樣的錯誤; ELSE子句:即查出錯誤后該如何處理。 完整性規則有以下三類: 域完整性規則
12、,用于定義屬性的取值范圍; 域聯系的規則,定義一個或多個關系中,屬性值間的聯系、影響和約束。 關系完整性規則,定義更新操作對數據庫中值的影響和限制。 15 試詳述SQL中的完整性約束機制? SQL中的完整性約束規則有主鍵約束、外鍵約束、屬性值約束和全局約束等多種形式。 主鍵約束。它是數據中最重要的一種約束。在關系中主鍵值不允許空,也不允許出現重復, 體現了關系要滿足實體完整性規則。主鍵可用主鍵子句或主鍵短語進行定義。 外鍵約束。根據參照完整性規則,依賴關系中外鍵或者為空值, 或者是基本關系(參照關系)中的該鍵的某個值。外鍵用外鍵關系子句定義, 并考慮刪除基本關系元組或修改基本關系的主鍵值的影響
13、,依賴關系可按需要采用RESTRICT、SET NULL、CASCADE方式。 屬性值約束。當要求某個屬性的值不允許空值時,那么可以在屬性定義后加上關鍵字:NOT NULL , 這是非空值約束。還可以用CHECK子句對一個屬性值加以限制以及使用域約束子句CREATDOMAIN 定義新域并加以屬性值檢查。 全局約束。在關系定義時,可以說明一些比較復雜的完整性約束,這些約束涉及到多個屬性間的聯系 或不同關系間的聯系,稱為全局約束。主要有基于元組的檢查子句和斷言。 前者是對單個關系的元組值加以約束,后者則可對多個關系或聚合操作有關的完整性約束進行定義。 6.17 參照完整性規則在SQL可以用哪幾種方
14、式實現?刪除基本關系的元組時, 依賴關系可以采取的做法有哪三種?修改基本關系的主鍵值時,依賴關系可以采取的做法有哪三種? 參照完整性規則要求"不引用不存在的實體",參照完整性規則在SQL可用以下幾種方式實現: (1)在SQL中采用外鍵子句定義外鍵,并考慮刪除基本關系元組或修改基本關系的主鍵值, 對依賴關系產生的影響; (2)在屬性值上進行約束如基于屬性的檢查; (3)全局約束中的基于元組的檢查子句等。 刪除基本關系元組或修改基本關系的主鍵值時,依賴關系可以采用的做法有: RESTRICT方式:只有當依賴關系中沒有一個外鍵值與基本關系中要刪除/修改的主鍵值相對應時, 系統才能
15、執行刪除/修改操作,否則拒絕刪除或修改。 SET NULL方式:刪除基本元組時,將依賴關系中所有與基本關系中被刪除主鍵值相對應的外鍵值置為空值。 修改基本關系的主鍵值時,將依賴關系中所有與基本關系中被修改主鍵值相對應的外鍵值置為空值。 CASCADE方式:若刪除則將依賴關系中所有外鍵值與基本關系中要刪除的主鍵值相對應的元組一并刪除, 若修改則將依賴關系中所有與基本關系中要修改的主鍵值相對應的外鍵值一并修改為新值。 6.18 試對SQL2中的基于屬性的檢查約束、基于元組的檢查約束和斷言 三種完整性約束進行比較:各說明什么對象?何時激活?能保證數據庫的一致性嗎? 約束形式說明對象激活條件是否保證一
16、致性基于屬性的檢查只對一個屬性值加以約束 插入或修改屬性值時不一定 基于元組的檢查對單個關系的元組值加以約束在插入或修改元組時 不一定 斷言多個關系或聚合操作任何變動保證6.19 設教學數據庫的模式如下: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 試用多種方式定義下列完整性約束: (1)在關系S中插入學生年齡值應在1625歲之間 (2)在關系SC中插入元組時,其S#值和C#值必須分別在S和C中出現。 (3)在關系SC中修改GRADE值時,必須仍在0100之間。 (4)在刪除關系C中一個元組時,首先要把關系SC中具有同樣C#的
17、元組全部刪去。 (5)在關系S中把某個S#值修改為新值時,必須同時把關系SC中那些同樣的S#值也修改為新值。 (1)定義S時采用檢查子句: CREAT TABLE S( S# CHAR(4), SNAME char (10) NOT NULL , AGE SMALLINT , PRIMARY key(S#), CHECK (AGE>=16 and AGE<=25) ) (2)采用外鍵子句約束 CREAT TABLE SC( S# CHAR(4), C# CHAR(4), GRADE SMALLINT, FOREIGN key(S#) REFERENCE S(S#), FOREIGN
18、 key(C#) REFERENCE C(C#) ) (3)采用元組檢查 CREAT TABLE SC( S# CHAR(4), C# CHAR(4), GRADE SMALLINT, FOREIGN key(S#) REFERENCE S(S#), FOREIGN key(C#) REFERENCE C(C#), CHECK (GRADE>=0 and AGE<=100) ) (4)采用外鍵約束 CREAT TABLE SC( S# CHAR(4), C# CHAR(4), GRADE SMALLINT, FOREIGN key(S#) REFERENCE S(S#), FORE
19、IGN key(C#) REFERENCE C(C#) ) 若改為:在刪除關系C中一個元組時,同時把關系SC中具有同樣C#的元組全部刪去,則為: . FOREIGN key(C#) REFERENCE C(C#) ON DELETE CASCADE . (5)采用外鍵約束 CREAT TABLE SC( S# CHAR(4), C# CHAR(4), GRADE SMALLINT, FOREIGN key(S#) REFERENCE S(S#) ON UPDATE CASCADE , FOREIGN key(C#) REFERENCE C(C#) ) 6.20 在教學數據庫的關系S、SC、C中
20、,試用SQL2的斷言機制定義下列兩個完整性約束: (1)學生必須在選修Maths課后,才能選修其他課程。 (2)每個男學生最多選修20門課程 (1) CREAT ASSERTION ASSE1 CHECK ( NOT EXISTS ( SELECT S FROM SC WHERE C# IN (SELECT C# FROM C WHERE CNAME<>'MATHS') AND S# NOT IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE CNAME='MATHS'); (2) CR
21、EAT ASSERTION ASSE2 CHECK ( ALL(SELECT COUNT (SC.C#) FROM S,SC WHERE S.S#=SC.S AND SEX='M' GROUP BY S#)<=20); 6.21 什么是數據庫的安全性?有哪些安全措施? 數據庫的安全性是指保護數據庫防止不合法的使用,以免數據的泄漏、非法更改和破壞。 可以從以下方面設置數據庫的安全措施:環境級、職員級、OS級、網絡級和數據庫系統級。 (具體可參見教材P173) 6.22對銀行的數據庫系統應采取哪些安全措施?分別屬于哪一級? 答案基本同上一題。 6.23 什么是"權限
22、"?用戶訪問數據庫可以有哪些權限?對數據庫模式有哪些修改權限? 用戶使用數據庫的方式稱為權限。 用戶訪問數庫的權限有:讀權限、插入權限、修改權限、刪除權限。 用戶修改數據庫模式的權限有索引權限、資源權限、修改權限、撤銷權限。 6.24 試解釋權限的轉授與回收。 在數據庫系統中,為了保證數據的安全性,用戶對數據的操作必須首先從DBA處獲得權限,才能進行對數據的操作。 同時數據庫系統也允許用戶將獲得的權限轉授給其他用戶,也允許把已授給其他用戶的權限再回收上來。 但應保證轉授出去的權限能收得回來。 6.25 SQL 語言中的視圖機制有哪些優點? 視圖機制使系統具有三個優點:數據安全性、數據
23、獨立性和操作簡便性。 6.26 SQL2中用戶權限有哪幾類?并作必要的解釋。 SQL2中定義了六類用戶權限,分別是: (1)SELECT :允許用戶對關系或視圖執行SELECT操作。 (2)INSERT :允許用戶對關系或視圖執行INSERT操作,如果還說明了一個屬性表, 那么表示只能插入這些屬性的值,關系中其他屬性值將置為缺省值或為空值。 (3)DELETE:允許用戶對關系或視圖執行DELETE操作。 (4)UPDATE:允許用戶對關系或視圖執行UPDATE操作,如果還說明了一個屬性表, 那么表示只能修改這些屬性的值,否則表示可以修改關系中任一屬性值。 (5)REFERENCES:允許用戶定
24、義新關系時,引用其他關系的主鍵作為外鍵。 (6)USAGE:允許用戶使用定義的域。 6.27 數據加密法有些什么優點?如何實現? 數據加密可以更好地保證數據的完全性。加密采用一定的加密算法給把源文變為密文來實現。 常用的加密算法有"替換方法"和明鍵加密法。創建數據庫 創建之前判斷該數據庫是否存在 if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-nam
25、e刪除數據庫 drop database dbname備份sql server - 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat' - 開始 備份 BACKUP DATABASE pubs TO testBack創建新表 create table tabname(col1 type1 not null primary key,col2 type2 not null,.) 根據已有的表創建新表: A:c
26、reate table tab_new like tab_old (使用舊表創建新表) B:create table tab_new as select col1,col2 from tab_old definition only刪除新表 drop table tabname增加一個列 Alter table tabname add column col type 注:列增加后將不能刪除。DB2中列加上后數據類型也不能改變,唯一能改變的是增加varchar類型的長度。添加主鍵 Alter table tabname add primary key(col) 說明:刪除主鍵: Alter tab
27、le tabname drop primary key(col)創建索引 create unique index idxname on tabname(col.) 刪除索引:drop index idxname on tabname 注:索引是不可更改的,想更改必須刪除重新建。創建視圖 create view viewname as select statement 刪除視圖:drop view viewname幾個簡單的基本的sql語句 選擇:select * from table1 where 范圍 插入:insert into table1(field1,field2) values(v
28、alue1,value2) 刪除:delete from table1 where 范圍 更新:update table1 set field1=value1 where 范圍 查找:select * from table1 where field1 like %value1% (所有包含value1這個模式的字符串)-like的語法很精妙,查資料! 排序:select * from table1 order by field1,field2 desc 總數:select count(*) as totalcount from table1 求和:select sum(field1) as s
29、umvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1separator幾個高級查詢運算詞 A: UNION 運算符 UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每
30、一行不是來自 TABLE1 就是來自 TABLE2。 B: EXCEPT 運算符 EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。 C: INTERSECT 運算符 INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。 注:使用運算詞的幾個查詢結果行必須是一致的。使用外連接 A、left o
31、uter join: 左外連接(左連接):結果集既包括連接表的匹配行,也包括左連接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。 C:full outer join: 全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。編輯本段提升復制表 (只復制結構,源表名:a 新表名:b) (Access可用) 法一:select * into b fro
32、m a where 1<>1 法二:select top 0 * into b from a拷貝表 (拷貝數據,源表名:a 目標表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b;跨數據庫之間表的拷貝 (具體數據使用絕對路徑) (Access可用) insert into b(a, b, c) select d,e,f from b in 具體數據庫 where 條件 例子:.from b in '"&Server.MapPath("."&"data.
33、mdb" &"' where.子查詢 (表名1:a 表名2:b) select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)顯示文章、提交人和最后回復時間 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b外連接查詢 (表名1:a 表名2:b) select
34、 a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c在線視圖查詢 (表名1:a select * from (Select a,b,c FROM a) T where t.a > 1;between的用法 between限制查詢數據范圍時包括了邊界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 數值1 and 數值2in 的
35、使用方法 select * from table1 where a not in (值1,值2,值4,值6)刪除主表中已經在副表中沒有的信息 兩張關聯表delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1四表聯查問題 select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .日程安排提前五分鐘提醒 SQL: se
36、lect * from 日程安排 where datediff('minute',f開始時間,getdate()>5一條sql 語句搞定數據庫分頁 select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 = a.主鍵字段 order by a.排序字段前10條記錄 select top 10 * form table1 where 范圍選擇排名 選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜
37、,每月熱銷產品分析,按科目成績排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)派生結果表 包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復行而派生出一個結果表 (select a from tableA except (select a from tableB) except (select a from tableC)隨機取出10條數據 select top 10 * from tablename order by
38、 newid()隨機選擇記錄 select newid()刪除重復記錄 Delete from tablename where id not in (select max(id) from tablename group by col1,col2,.)列出數據庫里所有的表名 select name from sysobjects where type='U'列出表里的所有的 select name from syscolumns where id=object_id('TableName')列示排列 列示type、vender、pcs字段,以type字段排列,c
39、ase可以方便地實現多重選擇,類似select 中的case。 select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type 顯示結果: type vender pcs 電腦 A 1 電腦 A 1 光盤 B 2 光盤 A 2 手機 B 3 手機 C 3初始
40、化表table1 TRUNCATE TABLE table1選擇從10到15的記錄 select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc數據類型轉換 declare numid int declare id varchar(50) set numid=2005 set id=convert(varchar,numid) 通過上述語句完成數據類型Int轉換成varchar,其他轉換類似,可參看convert函數編輯本段技巧1=1,1=2的使用 在SQL語句組合時用的較多
41、 “where 1=1” 是表示選擇全部 “where 1=2”全部不選, 如: if strWhere !=' begin set strSQL = 'select count(*) as Total from ' + tblName + ' where ' + strWhere end else begin set strSQL = 'select count(*) as Total from ' + tblName + '' end 我們可以直接寫成 set strSQL = 'select count(*)
42、 as Total from ' + tblName + ' where 1=1 安定 '+ strWhere收縮數據庫 -重建索引 DBCC REINDEX DBCC INDEXDEFRAG -收縮數據和日志 DBCC SHRINKDB DBCC SHRINKFILE壓縮數據庫 dbcc shrinkdatabase(dbname) 轉移數據庫給新用戶以已存在用戶權限 exec sp_change_users_login 'update_one','newname','oldname' go檢查備份集 RESTORE V
43、ERIFYONLY from disk='E:dvbbs.bak'修復數據庫 Alter DATABASE dvbbs SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO Alter DATABASE dvbbs SET MULTI_USER GO日志清除 SET NOCOUNT ON DECLARE LogicalFileName sysname, MaxMinutes INT, NewSize INT USE tablename - 要操作的數據庫名
44、Select LogicalFileName = 'tablename_log', - 日志文件名 MaxMinutes = 10, - Limit on time allowed to wrap log. NewSize = 1 - 你想設定的日志文件的大小(M) - Setup / initialize DECLARE OriginalSize int Select OriginalSize = size FROM sysfiles Where name = LogicalFileName Select 'Original Size of ' + db_na
45、me() + ' LOG is ' + CONVERT(VARCHAR(30),OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(OriginalSize*8/1024) + 'MB' FROM sysfiles Where name = LogicalFileName Create TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE Counter INT, StartTime DATETIME, TruncLog V
46、ARCHAR(255) Select StartTime = GETDATE(), TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (LogicalFileName, NewSize) EXEC (TruncLog) - Wrap the log if necessary. WHILE MaxMinutes > DATEDIFF (mi, StartTime, GETDATE() - time has not expired AND OriginalS
47、ize = (Select size FROM sysfiles Where name = LogicalFileName) AND (OriginalSize * 8 /1024) > NewSize BEGIN - Outer loop. Select Counter = 0 WHILE (Counter < OriginalSize / 16) AND (Counter < 50000) BEGIN - update Insert DummyTrans VALUES ('Fill Log') Delete DummyTrans Select Counte
48、r = Counter + 1 END EXEC (TruncLog) END Select 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024) + 'MB' FROM sysfiles Where name = LogicalFileName Drop TABLE DummyTrans SET NOCOUNT OFF更改某個表 exec
49、 sp_changeobjectowner 'tablename','dbo'存儲更改全部表 Create PROCEDURE dbo.User_ChangeObjectOwnerBatch OldOwner as NVARCHAR(128), NewOwner as NVARCHAR(128) AS DECLARE Name as NVARCHAR(128) DECLARE Owner as NVARCHAR(128) DECLARE OwnerName as NVARCHAR(128) DECLARE curObject CURSOR FOR select
50、'Name' = name, 'Owner' = user_name(uid) from sysobjects where user_name(uid)=OldOwner order by name OPEN curObject FETCH NEXT FROM curObject INTO Name, Owner WHILE(FETCH_STATUS=0) BEGIN if Owner=OldOwner begin set OwnerName = OldOwner + '.' + rtrim(Name) exec sp_changeobjecto
51、wner OwnerName, NewOwner end - select name,NewOwner,OldOwner FETCH NEXT FROM curObject INTO Name, Owner END close curObject deallocate curObject GOSQL SERVER中直接循環寫入數據 declare i int set i=1 while i<30 begin insert into test (userid) values(i) set i=i+1 end-語 句 功 能-數據操作SELECT -從數據庫表中檢索數據行和列INSERT -
52、向數據庫表添加新數據行DELETE -從數據庫表中刪除數據行UPDATE -更新數據庫表中的數據-數據定義CREATE TABLE -創建一個數據庫表DROP TABLE -從數據庫中刪除表ALTER TABLE -修改數據庫表結構CREATE VIEW -創建一個視圖DROP VIEW -從數據庫中刪除視圖CREATE INDEX -為數據庫表創建一個索引DROP INDEX -從數據庫中刪除索引CREATE PROCEDURE -創建一個存儲過程DROP PROCEDURE -從數據庫中刪除存儲過程CREATE TRIGGER -創建一個觸發器DROP TRIGGER -從數據庫中刪除觸發
53、器CREATE SCHEMA -向數據庫添加一個新模式DROP SCHEMA -從數據庫中刪除一個模式CREATE DOMAIN -創建一個數據值域ALTER DOMAIN -改變域定義DROP DOMAIN -從數據庫中刪除一個域-數據控制GRANT -授予用戶訪問權限DENY -拒絕用戶訪問REVOKE -解除用戶訪問權限-事務控制COMMIT -結束當前事務ROLLBACK -中止當前事務SET TRANSACTION -定義當前事務數據訪問特征-程序化SQLDECLARE -為查詢設定游標EXPLAN -為查詢描述數據訪問計劃OPEN -檢索查詢結果打開一個游標FETCH -檢索一行查
54、詢結果CLOSE -關閉游標PREPARE -為動態執行準備SQL 語句EXECUTE -動態地執行SQL 語句DESCRIBE -描述準備好的查詢 -局部變量declare id char(10)-set id = select id = -全局變量-必須以開頭-IF ELSEdeclare x int y int z intselect x = 1 y = 2 z=3if x > yprint x > y -打印字符串x > yelse if y > zprint y > zelse print z > y-CASEuse panguupdate emp
55、loyeeset e_wage =casewhen job_level = 1 then e_wage*1.08when job_level = 2 then e_wage*1.07when job_level = 3 then e_wage*1.06else e_wage*1.05end-WHILE CONTINUE BREAKdeclare x int y int c intselect x = 1 y=1while x < 3beginprint x -打印變量x 的值while y < 3beginselect c = 100*x + yprint c -打印變量c 的值s
56、elect y = y + 1endselect x = x + 1select y = 1end-WAITFOR-例 等待1 小時2 分零3 秒后才執行SELECT 語句waitfor delay 01:02:03select * from employee-例 等到晚上11 點零8 分后才執行SELECT 語句waitfor time 23:08:00select * from employee*SELECT*select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_information where stockid = str(nid)stockname = str_name stockname like % find this % stockname like a-zA-Z% - (指定值的范圍)stockname like F-M% - (排除指定范圍)- 只能在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機電工程協同作業試題及答案
- 網絡工程師實踐課題試題及答案
- 鼓勵互動軟件設計師考試試題及答案
- 西方國家的教育公平與社會影響試題及答案
- 2025年醫療美容消費者心理特點與服務質量提升路徑報告
- 測試管理工具的選擇標準試題及答案
- 可持續城市發展的公共政策思路試題及答案
- 機電工程技術的應用實例及試題與答案
- 公共政策制定程序試題及答案
- 機電工程行業中關鍵技術的研究與發展試題及答案
- 加工風管合同樣本
- 2025-2030中國電動自行車充電樁行業市場深度分析及發展前景與投資研究報告
- 本土資源在小學水墨畫教學中的實踐與運用000
- 專升本心理學題庫+參考答案
- 獸醫傳染病學試題及答案
- 瀝青路面施工方案施工方案
- GB/T 45236-2025化工園區危險品運輸車輛停車場建設規范
- 2022年湖南省株洲二中自主招生數學試卷
- 《組織簽字儀式》課件
- 智障個別化教育計劃案例(3篇)
- 血小板膜蛋白功能研究-洞察分析
評論
0/150
提交評論