


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
WORD格式專業(yè)資料整理數(shù)據(jù)庫原理與應(yīng)用教程 ―SQLServer習(xí)題解答第1章 習(xí)題1.?dāng)?shù)據(jù)庫的發(fā)展歷史分哪幾個(gè)階段?各有什么特點(diǎn)?答:數(shù)據(jù)庫技術(shù)經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)三個(gè)階段。1)人工管理階段這個(gè)時(shí)期數(shù)據(jù)管理的特點(diǎn)是:數(shù)據(jù)由計(jì)算或處理它的程序自行攜帶,數(shù)據(jù)和應(yīng)用程序一一對(duì)應(yīng),應(yīng)用程序依賴于數(shù)據(jù)的物理組織,因此數(shù)據(jù)的獨(dú)立性差,數(shù)據(jù)不能被長(zhǎng)期保存,數(shù)據(jù)的冗余度大等給數(shù)據(jù)的維護(hù)帶來許多問題。2)文件系統(tǒng)階段在此階段,數(shù)據(jù)以文件的形式進(jìn)行組織,并能長(zhǎng)期保留在外存儲(chǔ)器上,用戶能對(duì)數(shù)據(jù)文件進(jìn)行查詢、修改、插入和刪除等操作。程序與數(shù)據(jù)有了一定的獨(dú)立性,程序和數(shù)據(jù)分開存儲(chǔ),然而依舊存在數(shù)據(jù)的冗余度大及數(shù)據(jù)的不一致性等缺點(diǎn)。3)數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)的特點(diǎn)如下:1)數(shù)據(jù)結(jié)構(gòu)化2)較高的數(shù)據(jù)共享性3)較高的數(shù)據(jù)獨(dú)立性4)數(shù)據(jù)由DBMS?統(tǒng)一管理和控制2.簡(jiǎn)述數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用系統(tǒng)的概念。答:數(shù)據(jù)是描述事物的符號(hào)記錄,是信息的載體,是信息的具體表現(xiàn)形式。數(shù)據(jù)庫就是存放數(shù)據(jù)的倉(cāng)庫,是將數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲(chǔ),能夠自動(dòng)進(jìn)行查詢和修改的數(shù)據(jù)集合。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是為數(shù)據(jù)庫的建立、使用和維護(hù)而配置的軟件。它建立在操作系統(tǒng)的基礎(chǔ)上,位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它為用戶或應(yīng)用程序提供訪問數(shù)據(jù)庫的方法,包括數(shù)據(jù)庫的創(chuàng)建、查詢、更新及各種數(shù)據(jù)控制等。數(shù)據(jù)庫應(yīng)用系統(tǒng):凡使用數(shù)據(jù)庫技術(shù)管理其數(shù)據(jù)的系統(tǒng)都稱為數(shù)據(jù)庫應(yīng)用系統(tǒng)。3.簡(jiǎn)述數(shù)據(jù)庫管理系統(tǒng)的功能。答:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心軟件,一般說來,其功能主要包括以下5個(gè)方面。數(shù)據(jù)定義和操縱功能數(shù)據(jù)庫運(yùn)行控制功能數(shù)據(jù)庫的組織、存儲(chǔ)和管理建立和維護(hù)數(shù)據(jù)庫1數(shù)據(jù)通信接口4.簡(jiǎn)述數(shù)據(jù)庫的三級(jí)模式和兩級(jí)映像。答:為了保障數(shù)據(jù)與程序之間的獨(dú)立性,使用戶能以簡(jiǎn)單的邏輯結(jié)構(gòu)操作數(shù)據(jù)而無需考慮數(shù)據(jù)的物理結(jié)構(gòu),簡(jiǎn)化了應(yīng)用程序的編制和程序員的負(fù)擔(dān),增強(qiáng)系統(tǒng)的可靠性。通常DBMS將數(shù)據(jù)庫的體系結(jié)構(gòu)分為三級(jí)模式:外模式、模式和內(nèi)模式。模式也稱概念模式或邏輯模式,是對(duì)數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是對(duì)數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。內(nèi)模式也稱存儲(chǔ)模式或物理模式,是對(duì)數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式,一個(gè)數(shù)據(jù)庫只有一個(gè)內(nèi)模式。三級(jí)模式結(jié)構(gòu)之間差別往往很大, 為了實(shí)現(xiàn)這 3個(gè)抽象級(jí)別的聯(lián)系和轉(zhuǎn)換, DBMS在三級(jí)模式結(jié)構(gòu)之間提供了兩級(jí)映像:外模式 /模式映像,模式 /內(nèi)模式映像。5.簡(jiǎn)述數(shù)據(jù)庫的邏輯獨(dú)立性和物理獨(dú)立性。答:當(dāng)模式改變時(shí) (如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等 ),由數(shù)據(jù)庫管理員對(duì)各個(gè)外模式 /模式映像作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的, 因而應(yīng)用程序不必修改, 保證了數(shù)據(jù)與程序的邏輯獨(dú)立性, 簡(jiǎn)稱邏輯數(shù)據(jù)獨(dú)立性。當(dāng)數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)改變了 (如選用了另一種存儲(chǔ)結(jié)構(gòu) ),由數(shù)據(jù)庫管理員對(duì)模式 /內(nèi)模式映像作相應(yīng)改變, 可以保證模式保持小變, 因而應(yīng)用程序也不必改變。 保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱物理數(shù)據(jù)獨(dú)立性。6.信息有哪三種世界,它們各有什么特點(diǎn),它們之間有什么聯(lián)系?答:現(xiàn)實(shí)世界、信息世界和機(jī)器世界現(xiàn)實(shí)世界就是存在于人腦之外的客觀世界, 客觀事物及其相互聯(lián)系就處于現(xiàn)實(shí)世界中。信息世界就是現(xiàn)實(shí)世界在人們頭腦中的反映, 又稱概念世界??陀^事物在信息世界中稱為實(shí)體,反映事物間聯(lián)系的是實(shí)體模型或概念模型。數(shù)據(jù)世界就是信息世界中的信息數(shù)據(jù)化后對(duì)應(yīng)的產(chǎn)物。 現(xiàn)實(shí)世界中的客觀事物及其聯(lián)系,在數(shù)據(jù)世界中以數(shù)據(jù)模型描述。計(jì)算機(jī)信息處理的對(duì)象是現(xiàn)實(shí)生活中的客觀事物,在對(duì)客觀事物實(shí)施處理的過程中,首先要經(jīng)歷了解、熟悉的過程,從觀測(cè)中抽象出大量描述客觀事物的信息, 再對(duì)這些信息進(jìn)行整理、 分類和規(guī)范,進(jìn)而將規(guī)范化的信息數(shù)據(jù)化, 最終由數(shù)據(jù)庫系統(tǒng)存儲(chǔ)、處理。7.什么是概念模型,什么是數(shù)據(jù)模型?答:概念模型是現(xiàn)實(shí)世界的抽象反映,它表示實(shí)體類型及實(shí)體間的聯(lián)系,是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。數(shù)據(jù)模型是對(duì)客觀事物及聯(lián)系的數(shù)據(jù)描述,是概念模型的數(shù)據(jù)化,即數(shù)據(jù)模型提供表示和組織數(shù)據(jù)的方法。28.什么是實(shí)體、屬性、碼、聯(lián)系?實(shí)體的聯(lián)系有哪三種?答:客觀存在并可以相互區(qū)分的事物叫實(shí)體。屬性是實(shí)體所具有的某些特性,通過屬性對(duì)實(shí)體進(jìn)行描述。一個(gè)實(shí)體往往有多個(gè)屬性, 這些屬性之間是有關(guān)系的, 它們構(gòu)成該實(shí)體的屬性集合。如果其中有一個(gè)屬性或?qū)傩约軌蛭ㄒ粯?biāo)識(shí)整個(gè)屬性集合,則稱該屬性或?qū)傩约癁樵搶?shí)體的碼?,F(xiàn)實(shí)世界的事物之間是有聯(lián)系的, 即各實(shí)體型之間是有聯(lián)系的。 就兩個(gè)實(shí)體型的聯(lián)系來說,主要有以下 3種情況:一對(duì)一聯(lián)系 (1:1)、一對(duì)多聯(lián)系 (1:M)和多對(duì)多聯(lián)系 (M:。9.分析層次模型、網(wǎng)狀模型和關(guān)系模型的特點(diǎn)。答:層次模型用樹形結(jié)構(gòu)來表示各類實(shí)體以及實(shí)體間的聯(lián)系。每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,結(jié)點(diǎn)之間的連線表示記錄類型間的聯(lián)系,這種聯(lián)系只能是父子聯(lián)系。層次模型存在如下特點(diǎn):1)只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),稱為根結(jié)點(diǎn)。2)根結(jié)點(diǎn)以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。網(wǎng)狀數(shù)據(jù)模型是一種比層次模型更具普遍性的結(jié)構(gòu),它去掉了層次模型的兩個(gè)限制,允許多個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),也允許一個(gè)結(jié)點(diǎn)有多個(gè)雙親結(jié)點(diǎn)。因此,網(wǎng)狀模型可以方便地表示各種類型的聯(lián)系。網(wǎng)狀模型是一種較為通用的模型,從圖論的觀點(diǎn)看,它是一個(gè)不加任何條件的無向圖。用二維表格結(jié)構(gòu)表示實(shí)體以及實(shí)體之間的聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。 關(guān)系模型在用戶看來是一個(gè)二維表格。10.解釋關(guān)系模型的基本概念: 關(guān)系、元組、屬性、域、關(guān)系模式、候選關(guān)鍵字、主鍵、外鍵、主屬性。答:關(guān)系:一個(gè)關(guān)系就是一張二維表。元組:二維表中的行稱為元組,每一行是一個(gè)元組。屬性:二維表的列稱為屬性,每一列有一個(gè)屬性名,屬性值是屬性的具體值。域:是屬性的取值范圍。關(guān)系模式:對(duì)關(guān)系的信息結(jié)構(gòu)及語義限制的描述稱為關(guān)系模式, 用關(guān)系名和包含的屬性名的集合表示。候選關(guān)鍵字:如果在一個(gè)關(guān)系中,存在多個(gè)屬性 (或?qū)傩越M合)都能用來唯一標(biāo)識(shí)該關(guān)系中的元組,這些屬性(或?qū)傩越M合)都稱為該關(guān)系的候選關(guān)鍵字或候選碼,候選碼可以有多個(gè)。主鍵:在一個(gè)關(guān)系的若干候選關(guān)鍵字中,被指定作為關(guān)鍵字的候選關(guān)鍵字稱為該關(guān)的主鍵或主碼。主屬性:在一個(gè)關(guān)系中,包含在任何候選關(guān)鍵字中的各個(gè)屬性稱為主屬性。外鍵:一個(gè)關(guān)系的某個(gè)屬性(或?qū)傩越M合)不是該關(guān)系的主鍵或只是主鍵的一部分,卻是另一個(gè)關(guān)系的主碼,則稱這樣的屬性為該關(guān)系的外鍵或外碼。11.設(shè)某工廠數(shù)據(jù)庫中有四個(gè)實(shí)體集。一是“倉(cāng)庫”實(shí)體集,屬性有倉(cāng)庫號(hào)、倉(cāng)庫面積3等;二是“零件”實(shí)體集,屬性有零件號(hào)、零件名、規(guī)格、單價(jià)等;三是“供應(yīng)商”實(shí)體集,屬性有供應(yīng)商號(hào)、供應(yīng)商名、地址等;四是“保管員”實(shí)體集,屬性有職工號(hào)、姓名等。設(shè)倉(cāng)庫與零件之間有“存放”聯(lián)系,每個(gè)倉(cāng)庫可存放多種零件,每種零件可存放于若干倉(cāng)庫中,每個(gè)倉(cāng)庫存放每種零件要記錄庫存量;供應(yīng)商與零件之間有“供應(yīng)”聯(lián)系,一個(gè)供應(yīng)商可供應(yīng)多種零件,每種零件也可由多個(gè)供應(yīng)商提供,每個(gè)供應(yīng)商每提供一種零件要記錄供應(yīng)量;倉(cāng)庫與保管員之間有“工作”聯(lián)系,一個(gè)倉(cāng)庫可以有多名保管員,但一名保管員只能在一個(gè)倉(cāng)庫工作。試為該工廠的數(shù)據(jù)庫設(shè)計(jì)一個(gè) ER模型,要求標(biāo)注聯(lián)系類型,可省略實(shí)體屬性。答:ER模型零件號(hào)零件名規(guī)格單價(jià)供應(yīng)商號(hào)保管員M工作1倉(cāng)庫M存放N零件M供應(yīng)N供應(yīng)商地址職工號(hào) 姓名 倉(cāng)庫號(hào) 倉(cāng)庫面積 庫存量 供應(yīng)量 供應(yīng)商名12.某網(wǎng)上訂書系統(tǒng),涉及如下信息:1)客戶:客戶號(hào)、姓名、地址、聯(lián)系電話。2)圖書:書號(hào)、書名、出版社、單價(jià)。3)訂單:訂單號(hào)、日期、付款方式、總金額。其中:一份訂單可訂購(gòu)多種圖書,每種圖書可訂購(gòu)多本;一位客戶可有多份訂單,一份訂單僅對(duì)應(yīng)一位客戶。根據(jù)以上敘述,建立 E-R模型,要求標(biāo)注聯(lián)系類型。答:訂單號(hào)日期付款方式書號(hào)客戶號(hào)1M訂單MN書名客戶擁有訂購(gòu)圖書姓名出版社地址聯(lián)系電話總金額數(shù)量單價(jià)第2章 習(xí)題1.關(guān)系數(shù)據(jù)模型由哪三個(gè)要素組成。答:關(guān)系數(shù)據(jù)模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。2.簡(jiǎn)述關(guān)系的性質(zhì)。4答:(1)列是同質(zhì)的,即每一列中的分量是同一類型的數(shù)據(jù),來自同一個(gè)域。在同一個(gè)關(guān)系中,不同的列的數(shù)據(jù)可以是同一種數(shù)據(jù)類型,但各屬性的名稱都必須是互不相同。同一個(gè)關(guān)系中,任意兩個(gè)元組都不能完全相同。在一個(gè)關(guān)系中,列的次序無關(guān)緊要。即列的排列順序是不分先后的。在一個(gè)關(guān)系中,元組的位置無關(guān)緊要。即排行不分先后,可以任意交換兩行的位置。關(guān)系中的每個(gè)屬性必須是單值,即不可再分,這就要求關(guān)系的結(jié)構(gòu)不能嵌套。這是關(guān)系應(yīng)滿足的最基本的條件。3.簡(jiǎn)述關(guān)系的完整性。答:關(guān)系模型允許定義三類完整性約束: 實(shí)體完整性、參照完整性和用戶自定義的完整性約束。實(shí)體完整性規(guī)則要求關(guān)系中元組在組成主碼的屬性上不能有空值。參照完整性規(guī)則:若屬性(或?qū)傩越M) F是基本關(guān)系 R的外碼,它與基本關(guān)系 S的主碼Ks相對(duì)應(yīng)(基本關(guān)系R和S可能是相同的關(guān)系),則對(duì)于R中每個(gè)元組在F上的值必須為:或者取空值(F的每個(gè)屬性值均為空值);或者等于S中某個(gè)元組的主碼值。用戶定義的完整性規(guī)則由用戶根據(jù)實(shí)際情況對(duì)數(shù)據(jù)庫中數(shù)據(jù)的內(nèi)容進(jìn)行的規(guī)定, 也稱為域完整性規(guī)則。4.傳統(tǒng)的集合運(yùn)算和專門的關(guān)系運(yùn)算都有哪些。答:(1)傳統(tǒng)的集合操作:并、差、交、笛卡兒積 。專門的關(guān)系操作:投影(對(duì)關(guān)系進(jìn)行垂直分割)、選擇(水平分割)、連接(關(guān)系的結(jié)合)、除法(笛卡兒積的逆運(yùn)算)等。5.解釋下列術(shù)語的含義:函數(shù)依賴、平凡函數(shù)依賴、非平凡函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞函數(shù)依賴、范式。答:函數(shù)依賴:指在關(guān)系R中,X、Y為R的兩個(gè)屬性或?qū)傩越M,如果對(duì)于R的所有關(guān)系r都存在:對(duì)于X的每一個(gè)具體值,Y都只有一個(gè)具體值與之對(duì)應(yīng),則稱屬性Y函數(shù)依賴于屬性X。記作X→Y。當(dāng)Y不函數(shù)依賴于X時(shí),記作:XY。當(dāng)X→Y且Y→X時(shí),則記作:X?Y。平凡函數(shù)依賴:設(shè)關(guān)系模式R(U),U是R上的屬性集,X、Y?U;如果X→Y,且Y?X,則稱X→Y為平凡的函數(shù)依賴。非平凡函數(shù)依賴、如果X→Y,且Y不是X的子集,則稱X→Y為非平凡的函數(shù)依賴。完全函數(shù)依賴:設(shè)關(guān)系模式R(U),U是R上的屬性集,X、Y?U;如果X→Y,并且對(duì)于X的任何一個(gè)真子集Z,Z→Y都不成立,則稱Y完全函數(shù)依賴于X;部分函數(shù)依賴:如果X→Y,但對(duì)于X的某一個(gè)真子集Z,有Z→Y成立,則稱Y部分函數(shù)依賴于X。傳遞函數(shù)依賴: 設(shè)關(guān)系模式 R(U),X?U,Y?U,Z?U;如果X→Y,Y→Z成立,5Y→X不成立,且Z-X、Z-Y和Y-X均不空,則稱X→Z為傳遞函數(shù)依賴。范式:范式(NormalForm)是符合某一種級(jí)別的關(guān)系模式的集合,是衡量關(guān)系模式規(guī)范化程度的標(biāo)準(zhǔn),達(dá)到的關(guān)系才是規(guī)范化的。6.簡(jiǎn)述非規(guī)范化的關(guān)系中存在哪些問題。答:①數(shù)據(jù)冗余 ②更新異常 ③插入異常 ④刪除異常7.簡(jiǎn)述關(guān)系模式規(guī)范化的目的。答:關(guān)系模式規(guī)范化的目的是解決關(guān)系模式中存在的數(shù)據(jù)冗余、 插入和刪除異常以及更新異常等問題。其基本思想是消除數(shù)據(jù)依賴中的不合適部分,使各關(guān)系模式達(dá)到某種程度的分離,使一個(gè)關(guān)系描述一個(gè)概念、一個(gè)實(shí)體或?qū)嶓w間的一種聯(lián)系。因此,規(guī)范化的實(shí)質(zhì)是概念的單一化。8.根據(jù)給定的關(guān)系模式進(jìn)行查詢。設(shè)有學(xué)生-課程關(guān)系數(shù)據(jù)庫,它由三個(gè)關(guān)系組成,它們的模式是:學(xué)生S(學(xué)號(hào)S#,姓名SN,所在系SD,年齡SA)、課程C(課程號(hào)C#,課程名CN,先修課號(hào)PC#)、SC(學(xué)號(hào)S#,課程號(hào)C#,成績(jī)G)。請(qǐng)用關(guān)系代數(shù)分別寫出下列查詢:(1)檢索學(xué)生年齡大于等于20歲的學(xué)生姓名?!?σ≥20(S))SNSA檢索先修課號(hào)為C2的課程號(hào)?!荂#(σPC#=?C2?(C))檢索課程號(hào)C1的成績(jī)?yōu)?0分以上的所有學(xué)生姓名。∏SN(σC#=?C1?∧G>=90(S∞SC))檢索001號(hào)學(xué)生修讀的所有課程名及先修課號(hào)?!荂N,PC#(σS#=?001?(C∞SC))檢索年齡為19歲的學(xué)生所選修的課程名?!荂N(σSA=19(C∞SC∞S))9.要建立關(guān)于系、學(xué)生、班級(jí)、研究會(huì)等信息的一個(gè)關(guān)系數(shù)據(jù)庫。規(guī)定:一個(gè)系有若干專業(yè)、每個(gè)專業(yè)每年只招一個(gè)班,每個(gè)班有若干學(xué)生,一個(gè)系的學(xué)生住在同一個(gè)宿舍區(qū)。每個(gè)學(xué)生可參加若干研究會(huì),每個(gè)研究會(huì)有若干學(xué)生。學(xué)生參加某研究會(huì),有一個(gè)入會(huì)年份。描述學(xué)生的屬性有:學(xué)號(hào)、姓名、出生年月、系名、班號(hào)、宿舍區(qū)。描述班級(jí)的屬性有:班號(hào)、專業(yè)名、系名、人數(shù)、入校年份。描述系的屬性有:系號(hào)、系名、系辦公室地點(diǎn)、人數(shù)。描述研究會(huì)的屬性有:研究會(huì)名、成立年份、地點(diǎn)、人數(shù)。試給出上述數(shù)據(jù)庫的關(guān)系模式;寫出每個(gè)關(guān)系的基本的函數(shù)依賴集;指出是否存在傳遞函數(shù)依賴,指出各關(guān)系的主碼和外碼。答:關(guān)系模式:學(xué)生(學(xué)號(hào),姓名,出生年月,系號(hào),班號(hào),宿舍區(qū))班級(jí)(班號(hào),專業(yè)名,系號(hào),人數(shù),入校年份)系(系號(hào),系名,系辦公室地點(diǎn),人數(shù))6研究會(huì)(研究會(huì)名,成立年份,地點(diǎn),人數(shù))參加研究會(huì)(學(xué)號(hào) ,研究會(huì)名 ,入會(huì)年份)學(xué)生關(guān)系的基本函數(shù)依賴集:學(xué)號(hào)→(姓名,出生年月,系號(hào),班號(hào)) ,系號(hào)→宿舍區(qū)班級(jí)關(guān)系的基本函數(shù)依賴集:班號(hào)→(專業(yè)名,系號(hào),人數(shù),入校年份)系關(guān)系的基本函數(shù)依賴集:系號(hào)→(系名,系辦公室地點(diǎn),人數(shù))研究會(huì)關(guān)系的基本函數(shù)依賴集:研究會(huì)名→(成立年份,地點(diǎn),人數(shù))參加研究會(huì)關(guān)系的基本函數(shù)依賴集:(學(xué)號(hào),研究會(huì)名)→入會(huì)年份10.設(shè)有關(guān)系模式R(運(yùn)動(dòng)員編號(hào),姓名,性別,班級(jí),班主任,項(xiàng)目號(hào),項(xiàng)目名,成績(jī))如果規(guī)定:每名運(yùn)動(dòng)員只能代表一個(gè)班級(jí)參加比賽,每個(gè)班級(jí)只能有一個(gè)班主任;每名運(yùn)動(dòng)員可參加多個(gè)項(xiàng)目,每個(gè)比賽項(xiàng)目也可由多名運(yùn)動(dòng)員參加;每個(gè)項(xiàng)目只能有一個(gè)項(xiàng)目名;每名運(yùn)動(dòng)員參加一個(gè)項(xiàng)目只能有一個(gè)成績(jī)。根據(jù)上述語義,回答下列問題:寫出關(guān)系模式R的主關(guān)鍵字;分析R最高屬于第幾范式,說明理由。若R不是3NF,將其分解為3NF。答:(1)關(guān)系模式 R的主關(guān)鍵字是 {運(yùn)動(dòng)員編號(hào),項(xiàng)目號(hào) }。(2)R最高屬于第一范式。因?yàn)榇嬖谥彰?性別,班級(jí)和項(xiàng)目名對(duì)主關(guān)鍵字{運(yùn)動(dòng)員編號(hào),項(xiàng)目號(hào)}的部分函數(shù)依賴,沒有達(dá)到2NF。3)首先分解為2NF:R1(運(yùn)動(dòng)員編號(hào),姓名,性別,班級(jí),班主任),R2(項(xiàng)目號(hào),項(xiàng)目名),R3(運(yùn)動(dòng)員編號(hào),項(xiàng)目號(hào),成績(jī))因?yàn)镽1存在班主任對(duì)運(yùn)動(dòng)員編號(hào)的傳遞函數(shù)依賴,所以沒有達(dá)到 3NF,再分解為3NF:R1分解為R1(運(yùn)動(dòng)員編號(hào),姓名,性別,班級(jí))和 R4(班級(jí),班主任)11.設(shè)有關(guān)系模式: R(職工號(hào),日期,日營(yíng)業(yè)額,部門名,部門經(jīng)理)如果規(guī)定:每個(gè)職工每天只有一個(gè)營(yíng)業(yè)額,每個(gè)職工只在一個(gè)部門工作,每個(gè)部門只有一個(gè)經(jīng)理。根據(jù)上述規(guī)定,寫出模式R主關(guān)鍵字。分析R最高屬于第幾范式,說明理由。若R不是3NF,將其分解為3NF。答:(1)關(guān)系模式 R的主關(guān)鍵字是(職工號(hào),日期)。(2)R最高屬于第一范式。因?yàn)榇嬖谥块T名對(duì)主關(guān)鍵字(職工號(hào),日期)的部分函數(shù)依賴,沒有達(dá)到 2NF。3)首先分解為2NF:R1(職工號(hào),部門名,部門經(jīng)理),R2(職工號(hào),日期,日營(yíng)業(yè)額)因?yàn)?R1存在部門經(jīng)理對(duì)職工號(hào)的傳遞函數(shù)依賴,所以沒有達(dá)到 3NF,再分解為3NF:R1分解為R1(職工號(hào),部門名)和 R3(部門名,部門經(jīng)理)第3章 習(xí)題71.簡(jiǎn)述數(shù)據(jù)庫設(shè)計(jì)過程。答:數(shù)據(jù)庫設(shè)計(jì)可分為以下六個(gè)階段: 需求分析階段、概念結(jié)構(gòu)設(shè)計(jì)階段、 邏輯結(jié)構(gòu)設(shè)計(jì)階段、數(shù)據(jù)庫物理設(shè)計(jì)階段、數(shù)據(jù)庫實(shí)施階段以及數(shù)據(jù)庫運(yùn)行和維護(hù)階段。2.簡(jiǎn)述數(shù)據(jù)庫設(shè)計(jì)過程的各個(gè)階段上的設(shè)計(jì)任務(wù)。答:需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象 (組織、 部門、 企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。概念設(shè)計(jì)階段要做的工作不是直接將需求分析得到的數(shù)據(jù)存儲(chǔ)格式轉(zhuǎn)換為 DBMS能處理的數(shù)據(jù)庫模式,而是將需求分析得到的用戶需求抽象為反映用戶觀點(diǎn)的概念模型。邏輯設(shè)計(jì)的主要目標(biāo)是產(chǎn)生一個(gè) DBMS可處理的數(shù)據(jù)模型和數(shù)據(jù)庫模式。該模型必須滿足數(shù)據(jù)庫的存取、一致性及運(yùn)行等各方面的用戶需求。將邏輯設(shè)計(jì)中產(chǎn)生的數(shù)據(jù)庫邏輯模型結(jié)合指定的 DBMS,設(shè)計(jì)出最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,稱為數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計(jì)。根據(jù)邏輯和物理設(shè)計(jì)的結(jié)果,在計(jì)算機(jī)上建立起實(shí)際的數(shù)據(jù)庫結(jié)構(gòu),并裝入數(shù)據(jù),進(jìn)行試運(yùn)行和評(píng)價(jià)的過程,叫做數(shù)據(jù)庫的實(shí)施(或?qū)崿F(xiàn)) 。維護(hù)工作包括以下內(nèi)容:數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù);數(shù)據(jù)庫的安全性和完整性控制;數(shù)據(jù)庫性能的監(jiān)督、分析和改造;數(shù)據(jù)庫的重組織和重構(gòu)造。3.簡(jiǎn)述數(shù)據(jù)庫設(shè)計(jì)的概念。答:數(shù)據(jù)庫設(shè)計(jì)是對(duì)于給定的應(yīng)用環(huán)境, 在關(guān)系數(shù)據(jù)庫理論的指導(dǎo)下, 構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,在數(shù)據(jù)庫管理系統(tǒng)上建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng), 使之能有效地存儲(chǔ)數(shù)據(jù), 滿足用戶的各種需求的過程。4.簡(jiǎn)述數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)的方法和設(shè)計(jì)步驟。答:方法:(1)自頂向下法 (2)自底向上法 (3)逐步擴(kuò)張法 (4)混合策略在概念結(jié)構(gòu)設(shè)計(jì)時(shí),可以分為兩步。進(jìn)行數(shù)據(jù)抽象,設(shè)計(jì)局部 E-R模型,即設(shè)計(jì)用戶視圖;集成各局部 E-R模型,形成全局 E-R模型,即視圖的集成。5.什么是數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì) ?試述其設(shè)計(jì)步驟。答:邏輯設(shè)計(jì)的主要目標(biāo)是產(chǎn)生一個(gè) DBMS可處理的數(shù)據(jù)模型和數(shù)據(jù)庫模式。該模型必須滿足數(shù)據(jù)庫的存取、一致性及運(yùn)行等各方面的用戶需求。其邏輯結(jié)構(gòu)設(shè)計(jì)階段一般要分為三步進(jìn)行:將 E-R圖轉(zhuǎn)化為關(guān)系數(shù)據(jù)模型,關(guān)系模式的優(yōu)化,設(shè)計(jì)用戶外模式。6.簡(jiǎn)述把 E-R圖轉(zhuǎn)換為關(guān)系模型的轉(zhuǎn)換規(guī)則。答:一個(gè)實(shí)體轉(zhuǎn)化為一個(gè)關(guān)系模式。 實(shí)體的屬性就是該關(guān)系模式的屬性。 實(shí)體的主碼就是該關(guān)系模式的主碼。兩實(shí)體間 1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式, 也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。兩實(shí)體間 1:N聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與 N端對(duì)應(yīng)的關(guān)系模式合并。8同一實(shí)體間的1:N聯(lián)系可在這個(gè)實(shí)體所對(duì)應(yīng)的關(guān)系模式中多設(shè)一個(gè)屬性,用來作為與該實(shí)體相聯(lián)系的另一個(gè)實(shí)體的主碼。兩實(shí)體間M:N聯(lián)系,必須為聯(lián)系產(chǎn)生一個(gè)新的關(guān)系模式。該關(guān)系模式中至少包含被它所聯(lián)系的雙方實(shí)體的主碼,若聯(lián)系中有屬性,也要并入該關(guān)系模式中。同一實(shí)體間M:N聯(lián)系,必須為聯(lián)系產(chǎn)生一個(gè)新的關(guān)系模式。該關(guān)系模式中至少包含被它所聯(lián)系的雙方實(shí)體的主碼,若聯(lián)系有屬性,也要并入該關(guān)系模式中。由于這個(gè)“聯(lián)系”只涉及一個(gè)實(shí)體,所以加入的實(shí)體的主碼不能相同。兩個(gè)以上實(shí)體集之間M:N的聯(lián)系,必須為聯(lián)系產(chǎn)生一個(gè)新的關(guān)系模式,該關(guān)系模式中至少包含被它所聯(lián)系的所有實(shí)體的主碼,若聯(lián)系有屬性,也要并入該關(guān)系模式中。7.將圖1學(xué)生信息數(shù)據(jù)庫系統(tǒng)的E-R圖轉(zhuǎn)換為關(guān)系模型。課程名學(xué)分學(xué)號(hào)姓名課程M選修N學(xué)生屬于1班級(jí)班級(jí)名 班主任課程號(hào) 成績(jī) 性別 年齡圖1習(xí)題7圖答:課程(課程號(hào),課程名,學(xué)分)學(xué)生(學(xué)號(hào),姓名,性別,年齡,班級(jí)名)班級(jí)(班級(jí)名,班主任)選修(學(xué)號(hào),課程號(hào),成績(jī))8.一個(gè)設(shè)備銷售管理系統(tǒng)中有如下信息:設(shè)備:設(shè)備編號(hào)、設(shè)備名稱、型號(hào)規(guī)格、數(shù)量部門:部門編號(hào)、部門名稱、部門經(jīng)理、電話客戶:客戶編號(hào)、客戶名稱、地址、電話其中:任何設(shè)備都可以銷售給多個(gè)客戶,每個(gè)客戶購(gòu)買一種設(shè)備都要登記購(gòu)買數(shù)量;一個(gè)部門可以管理多種設(shè)備,一種設(shè)備僅由一個(gè)部門來調(diào)動(dòng)管理。根據(jù)以上情況,完成如下設(shè)計(jì):1)設(shè)計(jì)系統(tǒng)的E-R圖;2)將E-R圖轉(zhuǎn)換為關(guān)系模式,標(biāo)出每個(gè)關(guān)系模式的主碼。答:(1)E-R圖客戶名稱設(shè)備編號(hào)設(shè)備名稱部門編號(hào)客戶編號(hào)電話客戶M購(gòu)買NM管理1部門設(shè)備地址地址電話購(gòu)買數(shù)量數(shù)量型號(hào)規(guī)格部門名稱92)關(guān)系模式設(shè)備(設(shè)備編號(hào),設(shè)備名稱,型號(hào)規(guī)格,數(shù)量)部門(部門編號(hào),部門名稱,部門經(jīng)理,電話,設(shè)備編號(hào))客戶(客戶編號(hào),客戶名稱,地址,電話)購(gòu)買情況(客戶編號(hào),設(shè)備編號(hào),購(gòu)買數(shù)量)某電子商務(wù)網(wǎng)站要求提供下述服務(wù):可隨時(shí)查詢庫存中現(xiàn)有物品的名稱、數(shù)量和單價(jià),所有物品均應(yīng)由物品編號(hào)唯一標(biāo)識(shí);可隨時(shí)查詢顧客訂貨情況,包括顧客號(hào)、顧客名、所訂物品編號(hào)、訂購(gòu)數(shù)量、聯(lián)系方式、交貨地點(diǎn),所有顧客編號(hào)不重復(fù); 當(dāng)需要時(shí),可通過數(shù)據(jù)庫中保存的供應(yīng)商名稱、電話、郵編與地址信息向相應(yīng)供應(yīng)商訂貨,一個(gè)編號(hào)貨物只由 1個(gè)供應(yīng)商供貨。根據(jù)以上要求,完成如下任務(wù):1)根據(jù)語義設(shè)計(jì)出E-R模型;2)將該E-R模型轉(zhuǎn)換為一組等價(jià)的關(guān)系模式,并標(biāo)出各關(guān)系模式的主碼。答:(1)E-R圖顧客編號(hào) 物品編號(hào) 物品名稱 郵編電話顧客名顧客 M 訂購(gòu) N 物品 M 供應(yīng) 1 供應(yīng)商地址聯(lián)系方式交貨地點(diǎn)數(shù)量 單價(jià) 供應(yīng)商名稱訂購(gòu)數(shù)量(2)關(guān)系模式顧客(顧客編號(hào),顧客名,聯(lián)系方式)物品(物品編號(hào),物品名稱,數(shù)量,單價(jià),供應(yīng)商名稱)供應(yīng)商(供應(yīng)商名稱,地址,電話,郵編)訂購(gòu)情況(顧客編號(hào),物品編號(hào),訂購(gòu)數(shù)量,交貨地點(diǎn))根據(jù)轉(zhuǎn)換規(guī)則,將第2章習(xí)題第11題中E-R模型轉(zhuǎn)換成關(guān)系模型,要求標(biāo)注每個(gè)關(guān)系模型的主鍵和外鍵(如果存在)。關(guān)系模式:倉(cāng)庫(倉(cāng)庫號(hào),倉(cāng)庫面積)零件(零件號(hào),零件名,規(guī)格,單價(jià))供應(yīng)商(供應(yīng)商號(hào),供應(yīng)商名,地址)保管員(職工號(hào),姓名,倉(cāng)庫號(hào))庫存(倉(cāng)庫號(hào),零件號(hào),庫存量)10供應(yīng)(供應(yīng)商號(hào),零件號(hào),供應(yīng)量)根據(jù)轉(zhuǎn)換規(guī)則,將第2章習(xí)題第12題中E-R模型轉(zhuǎn)換成關(guān)系模型,要求標(biāo)明每個(gè)關(guān)系模式的主鍵和外鍵。關(guān)系模式:客戶(客戶號(hào),姓名,地址,聯(lián)系電話)圖書(書號(hào),書名,出版社,單價(jià))訂單(訂單號(hào),日期,付款方式,總金額,客戶號(hào))訂購(gòu)(訂單號(hào),書號(hào),數(shù)量)第4章 習(xí)題1.安裝MicrosoftSQLServer2008 系統(tǒng)操作。答:略。2.SQLServer2008主要提供了哪些服務(wù)?如何啟動(dòng)、暫?;蛲V?SQLServer服務(wù)?答:服務(wù)器管理、對(duì)象資源管理、 SQLServer配置管理等。啟動(dòng)、暫?;蛲V?SQLServer服務(wù):首先在 SQLServer配置管理器的窗口左邊單擊“SQLServer2008服務(wù)”,此時(shí)在窗口右邊會(huì)看到已安裝的所有服務(wù),可以選中某個(gè)服務(wù),然后單擊窗口上部工具欄中的相應(yīng)按鈕, 或右擊某個(gè)服務(wù)名稱, 在彈出的快捷菜單中選擇相應(yīng)的菜單選項(xiàng)來啟動(dòng)或停止服務(wù)。3.簡(jiǎn)述SQLServerManagementStudio的使用。答:略。4.簡(jiǎn)述對(duì)象資源管理器的功能。答:SQLServerManagementStudio的對(duì)象資源管理器組件是一種集成工具,可以查看和管理所有服務(wù)器類型的對(duì)象。用戶可以通過該組件操作數(shù)據(jù)庫,包括新建、修改、刪除數(shù)據(jù)庫、表、視圖等數(shù)據(jù)庫對(duì)象,新建查詢、設(shè)置關(guān)系圖、設(shè)置系統(tǒng)安全、數(shù)據(jù)庫復(fù)制、數(shù)據(jù)備份、恢復(fù)等操作,SQLServerManagementStudio中最常用、也是最重要的一個(gè)組件,類似于SQLServer2000中的企業(yè)管理器。5.了解SQLServer其他管理工具。答:略。6.簡(jiǎn)述T-SQL語言的特點(diǎn)。答:(1)綜合統(tǒng)一2)兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)3)高度非過程化4)類似于人的思維習(xí)慣,容易理解和掌握7.如何表示數(shù)據(jù)庫對(duì)象名?11答:[server_name.[database_name].[schema_name]|database_name.[schema_name]|schema_name.]object_name第5章 習(xí)題1.簡(jiǎn)述數(shù)據(jù)庫的兩種存儲(chǔ)結(jié)構(gòu)。答:數(shù)據(jù)庫的物理存儲(chǔ)結(jié)構(gòu)指的是保存數(shù)據(jù)庫各種邏輯對(duì)象的物理文件是如何在磁盤上存儲(chǔ)的,數(shù)據(jù)庫在磁盤上是以文件為單位存儲(chǔ)的,SQLServer2008將數(shù)據(jù)庫映射為一組操作系統(tǒng)文件。邏輯存儲(chǔ)結(jié)構(gòu):數(shù)據(jù)庫是存儲(chǔ)數(shù)據(jù)的容器,即數(shù)據(jù)庫是一個(gè)存放數(shù)據(jù)的表和支持這些數(shù)據(jù)的存儲(chǔ)、檢索、安全性和完整性的邏輯成分所組成的集合。2.?dāng)?shù)據(jù)庫由哪幾種類型的文件組成?其擴(kuò)展名分別是什么?答:(1)主數(shù)據(jù)文件:主數(shù)據(jù)文件是數(shù)據(jù)庫的起點(diǎn),指向數(shù)據(jù)庫中的其他文件。主數(shù)據(jù)文件的推薦文件擴(kuò)展名是.mdf。輔助數(shù)據(jù)文件:除主數(shù)據(jù)文件以外的所有其他數(shù)據(jù)文件都是輔助數(shù)據(jù)文件。輔助數(shù)據(jù)文件的推薦文件擴(kuò)展名是.ndf。事務(wù)日志文件:日志文件包含著用于恢復(fù)數(shù)據(jù)庫的所有日志信息。日志文件的推薦文件擴(kuò)展名是 .ldf。3.簡(jiǎn)述SQLServer2008中文件組的作用和分類。答:為了便于管理和分配數(shù)據(jù)而將文件組織在一起,通??梢詾橐粋€(gè)磁盤驅(qū)動(dòng)器創(chuàng)建一個(gè)文件組(FileGroup),將多個(gè)數(shù)據(jù)庫文件集合起來形成一個(gè)整體。SQLServer中的數(shù)據(jù)庫文件組分為主文件組(PrimaryFileGroup)和用戶定義文件組(user_definedGroup)。4.使用SQLServerManagementStudio創(chuàng)建名為“倉(cāng)庫庫存”的數(shù)據(jù)庫,并設(shè)置數(shù)據(jù)庫主文件名為倉(cāng)庫庫存_data,初始大小為10MB,日志文件名為倉(cāng)庫庫存_log,初始大小為2MB。所有的文件都放在目錄 “ DATA”中。答:略。5.刪除習(xí)題 4創(chuàng)建的數(shù)據(jù)庫,使用 T-SQL語句再次創(chuàng)建該數(shù)據(jù)庫,主文件和日志文件的文件名及存放位置同上,要求:倉(cāng)庫庫存_data最大為無限大,增長(zhǎng)速度為20%,日志文件初始大小為2MB,最大為5MB,增長(zhǎng)速度為1MB。答:CREATEDATABASE倉(cāng)庫庫存(NAME='倉(cāng)庫庫存_data',倉(cāng)庫庫存_data.MDF',SIZE=10MB,FILEGROWTH=20%)LOGON(NAME='倉(cāng)庫庫存_log',倉(cāng)庫庫存_log.LDF',12SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)6.請(qǐng)分別使用 SQLServerManagementStudio和T-SQL語句創(chuàng)建數(shù)據(jù)庫 Student,要?jiǎng)?chuàng)建的數(shù)據(jù)庫的要求如下所示:數(shù)據(jù)庫名稱為 Student,包含3個(gè)20MB的數(shù)據(jù)庫文件,210MB的日志文件,創(chuàng)建使用一個(gè)自定義文件組,主文件為第一個(gè)文件,主文件的后綴名為.mdf,次要文件的后綴名為.ndf;要明確地定義日志文件,日志文件的后綴名為.ldf;自定義文件組包含后兩個(gè)數(shù)據(jù)文件,所有的文件都放在目錄 “ DATA”中。答:CREATE DATABASE STUDENTON(NAME=STUDENT1,FILENAME='E:\DATA\STUDENT1.MDF',SIZE=20,MAXSIZE=unlimited),FILEGROUPFG1(NAME=STUDENT2,FILENAME='E:\DATA\STUDENT2.NDF',SIZE=30,MAXSIZE=unlimited) ,(NAME=STUDENT3,FILENAME='E:\DATA\STUDENT3.NDF',SIZE=30,MAXSIZE=unlimited)LOGON(NAME=STUDENTLOG1,FILENAME='E:\DATA\STUDENTLOG1.LDF',SIZE=10,MAXSIZE=unlimited),(NAME=STUDENTLOG2,FILENAME='E:\DATA\STUDENTSLOG .LDF',SIZE=10,MAXSIZE=unlimited)第6章 習(xí)題1.在第5章習(xí)題創(chuàng)建的 “倉(cāng)庫庫存”數(shù)據(jù)庫中完成下列操作。(1)創(chuàng)建“商品”表,表結(jié)構(gòu)如表 1:13表1商品表列名數(shù)據(jù)類型長(zhǎng)度完整性約束說明商品編號(hào)Char6NOTNULL主鍵商品名稱Varchar20NOTNULL,單價(jià) Float生產(chǎn)商 Varchar 30(2)創(chuàng)建“倉(cāng)庫”表,表結(jié)構(gòu)如表 2:表2倉(cāng)庫表列名數(shù)據(jù)類型長(zhǎng)度完整性約束說明倉(cāng)庫編號(hào)Char3NOTNUL主鍵倉(cāng)庫地址Varchar20NOTNULL電話Varchar10數(shù)字字符容量int>=總庫存數(shù)量(3)創(chuàng)建“管理員”表,表結(jié)構(gòu)如表3:表3管理員表列名數(shù)據(jù)類型長(zhǎng)度完整性約束說明管理員編號(hào)Char3NOTNUL主鍵管理員姓名Varchar20NOTNULL性別Char2(男,女)出生年月Datetime1957-1-1~2000-1-1倉(cāng)庫編號(hào)Char3外鍵創(chuàng)建“庫存情況”表,表結(jié)構(gòu)如表4:4庫存情況表列名數(shù)據(jù)類型長(zhǎng)度完整性約束說明倉(cāng)庫編號(hào)Char3NOTNULL主鍵、外鍵商品編號(hào)Char6NOTNUL主鍵、外鍵庫存數(shù)量int答:(1)USE倉(cāng)庫庫存GOCREATETABLE 商品(商品編號(hào) char(6) NOT NULLPRIMARYKEY ,商品名稱 char(20) NOT NULL,單價(jià) Float,生產(chǎn)商 Varchar(30))14(2),(3),(4)略。2.建立“商品”表、“倉(cāng)庫”表、“管理員”表和“庫存情況”表四表之間的關(guān)系圖。答:略。3.分別給“商品”表、“倉(cāng)庫”表、“管理員”表和“庫存情況”表添加數(shù)據(jù)。答:略。創(chuàng)建一個(gè)STUDENT表,包含“學(xué)號(hào)”、“姓名”和“班級(jí)”列,要求能夠與學(xué)生表同步插入、修改和刪除數(shù)據(jù)。答:CREATETABLESTUDENT(學(xué)號(hào)char(7)PRIMARYKEY,姓名char(8)NOTNULL,班級(jí)char(10)NULL,)MERGESTUDENTASdUSING 學(xué)生表 ASsONs.ProductID=d.ProductIdWHENNOTMA TCHEDBYTARGETTHENINSERT(學(xué)號(hào),姓名,班級(jí))VALUES(s.學(xué)號(hào),s.姓名,s.班級(jí))WHENNOTMA TCHEDBYSOURCETHENDELETEWHENMATCHEDTHENUPDATESETd.姓名 =s.姓名,d.班級(jí)=s.班級(jí);第7章 習(xí)題1.針對(duì)“教學(xué)庫”中的三個(gè)表,試用 T-SQL的查詢語句實(shí)現(xiàn)下列查詢:1)查詢學(xué)生們有哪些專業(yè),只顯示專業(yè)列,過濾掉重復(fù)行。答:SELECTDISTINCT 專業(yè) FROM學(xué)生表2)統(tǒng)計(jì)有學(xué)生選修的課程門數(shù)。答:SELECTCOUNT(DISTINCT 課程號(hào))FROM 選課表3)求選修 C004課程的學(xué)生的平均年齡。答:SELECTAVG(年齡)FROM 學(xué)生表,選課表WHERE學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào) and課程號(hào)=?C004?4)求學(xué)分為 3的每門課程的學(xué)生平均成績(jī)。答:SELECT課程表.課程號(hào),AVG(成績(jī))FROM 課程表,選課表WHERE 課程表.課程號(hào)=選課表.課程號(hào)and學(xué)分=3GROUPBY 課程表.課程號(hào)5)統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù),超過 3人的課程才統(tǒng)計(jì)。要求輸出課程號(hào)和選修人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號(hào)升序排列。答:SELECT課程號(hào),COUNT(*)FROM 選課表GROUPBY 課程號(hào)15HAVINGCOUNT(*)>3ORDERBYCOUNT(*)DESC, 課程號(hào)6)檢索姓王的學(xué)生的姓名和年齡。答:SELECT 姓名,年齡 FROM 學(xué)生表WHERE 姓名 LIKE,王%?7)在選課表中檢索成績(jī)?yōu)榭罩档膶W(xué)生學(xué)號(hào)和課程號(hào)。答:SELECT 學(xué)號(hào),課程號(hào) FROM 選課WHERE 成績(jī) ISNULL8)查詢沒有學(xué)生選修的課的課程號(hào)和課程名。答:SELECT 課程號(hào),課程名 FROM 課程表WHERE 課程號(hào) NOTIN (SELECT 課程號(hào)FROM 選課表)9)求年齡大于女同學(xué)平均年齡的男學(xué)生姓名和年齡。答:SELECT 姓名,年齡 FROM 學(xué)生表WHERE 性別=?男?and年齡 >(SELECT AVG(年齡)FROM 學(xué)生表WHERE 性別=?女?)10)求年齡大于所有女同學(xué)年齡的男學(xué)生姓名和年齡。答:SELECT 姓名,年齡 FROM 學(xué)生表WHERE 性別=?男?and年齡 >all(SELECT 年齡 FROM 學(xué)生表WHERE 性別=?女?)11)查詢所有與王華同年級(jí)、同專業(yè),但比王華年齡大的學(xué)生的姓名、年齡和性別。答:SELECT姓名,年齡,性別FROM學(xué)生表WHERE 年齡 > (SELECT 年齡 FROM 學(xué)生表WHERE 姓名=?王華?)AND 年級(jí)=(SELECT 年級(jí) FROM 學(xué)生表WHERE 姓名=?王華?)AND 專業(yè)=(SELECT 專業(yè) FROM 學(xué)生表WHERE 姓名=?王華?)12)檢索選修課程 C002的學(xué)生中成績(jī)最高的學(xué)生的學(xué)號(hào)。答:SELECT 學(xué)號(hào) FROM 選課表WHERE 課程號(hào)=?C002? and成績(jī)=(SELECTMAX(成績(jī))FROM選課表WHERE課程號(hào)=?C002?)13)檢索學(xué)生姓名及其所選修課程的課程號(hào)和成績(jī)。答:SELECT 姓名,課程號(hào),成績(jī) FROM 學(xué)生表,選課表WHERE學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)14)檢索選修4門以上課程的學(xué)生總成績(jī)(不統(tǒng)計(jì)不及格的課程),并要求按總成績(jī)的降序排列出來。16答:SELECT學(xué)號(hào),SUM(成績(jī))FROM 選課表WHERE 成績(jī)>=60GROUPBY學(xué)號(hào)HAVINGCOUNT(*)>=4ORDERBYSUM(成績(jī))DESC15)檢索選修 2門及以上課程的學(xué)生平均成績(jī)只取前五名。答:SELECTTOP5學(xué)號(hào),AVG(成績(jī))FROM 選課表GROUPBY學(xué)號(hào)HAVINGCOUNT(*)>=2ORDERBYAVG(成績(jī))DESC16)查詢每個(gè)學(xué)生的總學(xué)分。答:SELECT學(xué)號(hào),SUM(學(xué)分)FROM 選課表,課程表WHERE選課表.課程號(hào)=課程表.課程號(hào)GROUPBY學(xué)號(hào)針對(duì)“倉(cāng)庫庫存”數(shù)據(jù)庫中的三個(gè)表,試用T-SQL的查詢語句實(shí)現(xiàn)下列查詢:1)查詢青島海爾生產(chǎn)的商品信息。答:SELECT*FROM 商品 WHERE 生產(chǎn)商=?青島海爾?2)查詢001號(hào)倉(cāng)庫儲(chǔ)存的商品的編號(hào)和數(shù)量。答:SELECT商品編號(hào),數(shù)量 FROM 庫存情況 WHERE 倉(cāng)庫編號(hào)=?001?3)查詢所有商品的種類名稱。答:SELECTDISTINCT 商品名稱 FROM 商品4)查詢商品的單價(jià)在 2000到3000之間的商品信息。答:SELECT*FROM 商品 WHERE5)查詢“商品表”中所有商品的信息,其中單價(jià)打八折顯示。答:SELECT商品編號(hào),商品名稱,單價(jià)*0.8 單價(jià)八折,生產(chǎn)商 FROM 商品6)查詢青島海爾和青島海信生產(chǎn)的商品的信息。答:SELECT*FROM 商品 WHERE 生產(chǎn)商=?青島海爾?AND 生產(chǎn)商=?青島海信?7)查詢李立平管理的倉(cāng)庫存儲(chǔ)的商品信息。答:SELECT*FROM 商品 WHERE 商品編號(hào) INSELECT商品編號(hào)FROM庫存情況WHERE倉(cāng)庫編號(hào)IN(SELECT倉(cāng)庫編號(hào)FROM管理員表WHERE管理員姓名=?李立平?))8)查詢2號(hào)樓101倉(cāng)庫的管理員的姓名和年齡。答:SELECT姓名,年齡 FROM 管理員表 WHERE 倉(cāng)庫編號(hào)=SELECT倉(cāng)庫編號(hào)FROM倉(cāng)庫WHERE倉(cāng)庫地址=?2號(hào)樓101?)9)查詢不是青島生產(chǎn)的商品的信息。答:SELECT*FROM 商品 WHERE 生產(chǎn)商 NOTLIKE ,青島%?10)查詢庫存總量最少的倉(cāng)庫的編號(hào)。答:SELECTTOP1倉(cāng)庫編號(hào) FROM 庫存情況17GROUPBY 倉(cāng)庫編號(hào)ORDERBYSUM(數(shù)量) ASC11)查詢各生產(chǎn)廠家的商品庫存總量,并存入”庫存總量”表。答:SELECT生產(chǎn)商,SUM(數(shù)量)AS庫存總量INTO庫存總量FROM 商品,庫存情況WHERE商品.商品編號(hào)=庫存情況.商品編號(hào)GROUPBY 生產(chǎn)商12)將2號(hào)樓101倉(cāng)庫的管理員的姓名改為 “張黎明”。答:UPDATE管理員表 SET管理員姓名=?張黎明?WHERE倉(cāng)庫編號(hào)=(SELECT 倉(cāng)庫編號(hào) FROM 倉(cāng)庫 WHERE 倉(cāng)庫地址=?2號(hào)樓101?)13)刪除四川長(zhǎng)虹的產(chǎn)品的庫存信息。答:DELETE 庫存情況 WHERE 商品編號(hào) INSELECT商品編號(hào)FROM商品WHERE生產(chǎn)商=?四川長(zhǎng)虹?)8章習(xí)題1.什么是標(biāo)識(shí)符?答:標(biāo)識(shí)符是用來標(biāo)識(shí)事物的符號(hào),其作用類似于給事物起的名稱。T-SQL中有幾種標(biāo)識(shí)符?它們的區(qū)別是什么?標(biāo)識(shí)符分為兩類:常規(guī)標(biāo)識(shí)符和分隔標(biāo)識(shí)符。 符合所有標(biāo)識(shí)符格式規(guī)則的標(biāo)識(shí)符為常規(guī)標(biāo)識(shí)符,可以使用分隔符, 也可以不使用分隔符。 不符合標(biāo)識(shí)符格式規(guī)則的標(biāo)識(shí)符必須使用分隔符。3.什么是局部變量?什么是全局變量?如何表示它們?答:全局變量由系統(tǒng)提供且預(yù)先聲明,通過在名稱前加兩個(gè) “@”符號(hào)區(qū)別于局部變量。用戶只能使用全局變量,不能對(duì)它們進(jìn)行修改。全局變量的作用范圍是整個(gè)SQLServer系統(tǒng),任何程序都可以隨時(shí)調(diào)用它們。T-SQL語言中的變量是可以保存單個(gè)特定類型的數(shù)據(jù)值的對(duì)象,也稱為局部變量,只在定義它們的批處理或過程中可見。在名稱前加一個(gè) “@”符號(hào)為局部變量。4.以下變量名中,哪些是合法的變量名,哪些是不合法的變量名?A1,1a,@x,@@y,&變量1,@姓名,姓名,#m,##n,@@@abc##,@my_name答:合法的變量名: @x,@@y,@姓名,@my_name不合法的變量名: A1,1a,&變量1,姓名,#m,##n,@@@abc##5.SQLServer2008所使用的運(yùn)算符類別有哪些?答:SQLServer2008系統(tǒng)中,可以使用的運(yùn)算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、字符串串聯(lián)運(yùn)算符、按位運(yùn)算符、一元運(yùn)算符及比較運(yùn)算符等。6.利用T-SQL語句計(jì)算下列表達(dá)式,并給出運(yùn)算結(jié)果。(1)9-3*5/2+6%4 (2)5&2|4 (3)'你們'+'好' (4)~10答:(1)4(2)4(3)你們好 (4)-11187.給出以下 T-SQL語句的運(yùn)行結(jié)果。DECLARE@dSMALLDATETIMESET@d='2007-1-26'SELECT@d+10,@d-10答:2007-02-05,2007-01-168.什么是批處理?使用批處理有何限制?批處理的結(jié)束符是什么?答:批處理是包含一個(gè)或多個(gè) T-SQL語句的集合,從應(yīng)用程序一次性地發(fā)送到 SQLServer2008進(jìn)行執(zhí)行,因此可以節(jié)省系統(tǒng)開銷。 SQLServer 將批處理的語句編譯為一個(gè)可執(zhí)行單元,稱為執(zhí)行計(jì)劃,批處理的結(jié)束符為 “GO”。9.注釋有幾類,它們分別是什么?答:在T-SQL中可使用兩類注釋符:ANSI標(biāo)準(zhǔn)的注釋符“--”用于單行注釋;(2)與C語言相同的程序注釋符號(hào),即“/*??*/,”“/*用”于程序注釋開頭,“*/用”語程序注釋結(jié)尾,可以在程序中多行文字標(biāo)示為注釋。10.針對(duì)“教學(xué)庫”,利用流程控制語句,查詢學(xué)號(hào)為 0101001的學(xué)生的各科成績(jī),如果沒有這個(gè)學(xué)生的成績(jī),就顯示 “此學(xué)生無成績(jī) ”。答:IFEXISTS(SELECT*FROM 選課表 WHERE 學(xué)號(hào)='0101001')SELECT 課程號(hào),成績(jī) FROM 選課表WHERE 學(xué)號(hào)='0101001'ELSEPRINT'此學(xué)生無成績(jī) '11.針對(duì)“教學(xué)庫”,用函數(shù)實(shí)現(xiàn):求某個(gè)學(xué)院選修了某門課的學(xué)生人數(shù)。答:CREATEFUNCTIONrenshu(@pchar(10),@cnchar(4))RETURNSfloatASBEGINDECLARE@coutfloatSELECT@cou=(SELECTcount(*)FROM 學(xué)生表,選課表WHERE學(xué)生表.學(xué)生號(hào)=選課表.學(xué)生號(hào)and課程號(hào)=@cnand專業(yè)=@p)RETURN@couEND12.針對(duì)“教學(xué)庫”,用函數(shù)實(shí)現(xiàn):查詢某個(gè)學(xué)院所有學(xué)生所選的每門課的平均成績(jī)。答:CREATEFUNCTIONaverage(@pchar(10))RETURNSfloatASBEGINDECLARE@averfloatSELECT@aver=(SELECT 課程號(hào),avg(成績(jī))FROM 學(xué)生表,選課表WHERE學(xué)生表.學(xué)生號(hào)=選課表.學(xué)生號(hào) and 專業(yè)=@p19GROUPBY 課程號(hào))RETURN@averEND13.針對(duì)“倉(cāng)庫庫存”中的“商品”表,查詢商品的價(jià)格等級(jí),商品號(hào)、商品名和價(jià)格等級(jí)(單價(jià)1000元以內(nèi)為“低價(jià)商品”,1000~3000元為“中等價(jià)位商品”,3000元以上為“高價(jià)商品”)。答:SELECT 商品號(hào),商品名,CASEWHEN 單價(jià)<1000then'低價(jià)商品'WHEN 單價(jià)<3000then'中等價(jià)位商品 'WHEN 單價(jià)>=3000then'高價(jià)商品'ENDAS 價(jià)格等級(jí)FROM 商品表14.簡(jiǎn)述游標(biāo)的概念及類型。答:游標(biāo)是處理數(shù)據(jù)的一種方法,它允許應(yīng)用程序?qū)Σ樵冋Z句 SELECT 返回的結(jié)果集中每一行進(jìn)行相同或不同的操作, 而不是一次對(duì)整個(gè)結(jié)果集進(jìn)行同一種操作。 為了查看或者處理結(jié)果集中的數(shù)據(jù), 游標(biāo)提供了在結(jié)果集中一次以行或者多行前進(jìn)或向后瀏覽數(shù)據(jù)的能力,我們可以把游標(biāo)當(dāng)作一個(gè)指針, 它可以指定結(jié)果中的任何位置, 然后允許用戶對(duì)指定位置的數(shù)據(jù)進(jìn)行處理。SQLServer支持三種類型的游標(biāo): T-SQL游標(biāo),API 服務(wù)器游標(biāo)和客戶游標(biāo)。由于API 游標(biāo)和T-SQL游標(biāo)使用在服務(wù)器端, 所以被稱為服務(wù)器游標(biāo), 也被稱為后臺(tái)游標(biāo),而客戶端游標(biāo)被稱為前臺(tái)游標(biāo)。 服務(wù)器游標(biāo)包含以下四種:靜態(tài)游標(biāo)、動(dòng)態(tài)游標(biāo)、只進(jìn)游標(biāo)、鍵集驅(qū)動(dòng)游標(biāo)。15.利用T-SQL擴(kuò)展方式聲明一個(gè)游標(biāo),查詢學(xué)生表中所有男生的信息,并讀取數(shù)據(jù)。要求:(1)讀取最后一條記錄。(2)讀取第一條記錄。(3)讀取第5條記錄。(4)讀取當(dāng)前記錄指針位置后第3條記錄。答:略。第9章 習(xí)題1.引入視圖的主要目的是什么 ?答:數(shù)據(jù)庫的基本表是按照數(shù)據(jù)庫設(shè)計(jì)人員的觀點(diǎn)設(shè)計(jì)的,并不一定符合用戶的需求。SQLServer2008可以根據(jù)用戶需求重新定義表的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)就是視圖。視圖是關(guān)系數(shù)據(jù)庫系統(tǒng)提供給用戶以多種角度觀察數(shù)據(jù)庫中數(shù)據(jù)的重要機(jī)制, 其結(jié)構(gòu)和數(shù)據(jù)是建立在對(duì)表的查詢基礎(chǔ)上的。2.當(dāng)刪除視圖時(shí)所對(duì)應(yīng)的數(shù)據(jù)表會(huì)刪除嗎 ?答:不會(huì)。3.簡(jiǎn)述視圖的優(yōu)點(diǎn)。20答:使用視圖有很多優(yōu)點(diǎn),主要表現(xiàn)在:為用戶集中數(shù)據(jù),簡(jiǎn)化用戶的數(shù)據(jù)查詢和處理。保證數(shù)據(jù)的邏輯獨(dú)立性。重新定制數(shù)據(jù),使得數(shù)據(jù)便于共享;合并分割數(shù)據(jù),有利于數(shù)據(jù)輸出到應(yīng)用程序中。數(shù)據(jù)保密。4.可更新視圖必須滿足哪些條件?答:(1)任何修改(包括 UPDATE、INSERT和DELETE 語句)都只能引用一個(gè)基本表的列。①如果視圖數(shù)據(jù)為一個(gè)表的行、列子集,則可更新(包括 UPDATE、INSERT和DELETE語句);但如果視圖中包含的列為表定義時(shí)不允許取空值又沒有給默認(rèn)值的列,則此視圖不可以插入數(shù)據(jù)。②如果視圖所依賴的基本表有多個(gè)時(shí),不能向該視圖添加( INSERT)數(shù)據(jù)。③若視圖依賴于多個(gè)基本表,那么一次修改只能修改( UPDATE)一個(gè)基本表中的數(shù)據(jù)。④若視圖依賴于多個(gè)基本表,那么不能通過視圖刪除( DELETE)數(shù)據(jù)。如果視圖中沒有包含表中某個(gè)不允許取空值又沒有默認(rèn)值約束的列,則不能利用視圖插入數(shù)據(jù)。視圖中被修改的列必須直接引用表列中的基礎(chǔ)數(shù)據(jù)。不能是通過任何其他方式對(duì)這些列進(jìn)行派生而來的數(shù)據(jù), 比如通過聚合函數(shù)、 計(jì)算(如表達(dá)式計(jì)算)、集合運(yùn)算等。(4)被修改的列不應(yīng)是在創(chuàng)建視圖時(shí)受 GROUPBY、HAVING、DISTINCT 或TOP子句影響的。5.創(chuàng)建索引的必要性和作用是什么 ?答:數(shù)據(jù)庫的索引就類似于書籍的目錄,如果想快速查找而不是逐頁查找指定的內(nèi)容,可以通過目錄中章節(jié)的頁號(hào)找到其對(duì)應(yīng)的內(nèi)容。 類似地,索引通過記錄表中的關(guān)鍵值指向表中的記錄,這樣數(shù)據(jù)庫引擎就不用掃描整個(gè)表而定位到相關(guān)的記錄。 相反,如果沒有索引,則會(huì)導(dǎo)致 SQLServer搜索表中的所有記錄,以獲取匹配結(jié)果。6.索引的優(yōu)點(diǎn)包括:1)大大加快數(shù)據(jù)的檢索速度,這是創(chuàng)建索引的最主要的原因。2)創(chuàng)建唯一性索引,保證表中每一行數(shù)據(jù)的唯一性。3)加速表和表之間的連接。4)在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以顯著減少查詢中分組和排序的時(shí)間。5)查詢優(yōu)化器可以提高系統(tǒng)的性能,但它是依靠索引起作用的。7.聚集索引和非聚集索引有何異同 ?答:聚集索引會(huì)對(duì)表和視圖進(jìn)行物理排序, 所以這種索引對(duì)查詢非常有效, 在表和視圖中只能有一個(gè)聚集索引。 非聚集索引不會(huì)對(duì)表和視圖進(jìn)行物理排序。 如果表中不存在聚21集索引,則表是未排序的。8.在SQLServerManagementStudio中創(chuàng)建一個(gè)倉(cāng)庫庫存信息視圖, 要求包含倉(cāng)庫庫存數(shù)據(jù)庫中四個(gè)表的所有列。答:略。9.利用T-SQL語句創(chuàng)建一個(gè)查詢每個(gè)學(xué)生的平均成績(jī)的視圖,要求包含學(xué)生的學(xué)號(hào)和姓名。答:CREATEVIEW 學(xué)生_平均成績(jī)ASSELECT 學(xué)生表.學(xué)號(hào),姓名,avg(成績(jī))AS平均成績(jī)FROM 學(xué)生表,選課表WHERE 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)GROUPBY學(xué)生表.學(xué)號(hào),姓名利用T-SQL語句創(chuàng)建一個(gè)每個(gè)年級(jí)、每個(gè)專業(yè)各科平均成績(jī)的視圖。答:CREATEVIEW平均成績(jī)ASSELECT 年級(jí),專業(yè),課程號(hào),avg(成績(jī))AS平均成績(jī)FROM 學(xué)生表,選課表WHERE 學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)GROUPBY年級(jí),專業(yè),課程號(hào)11.在SQLServerManagementStudio中按照選課表的成績(jī)列升序創(chuàng)建一個(gè)普通索引 (非唯一、非聚集)。答:略。12.利用T-SQL語句按照商品表的單價(jià)列降序創(chuàng)建一個(gè)普通索引。答:CREATEINDEXindex_ 商品單價(jià) ON商品(單價(jià)DESC)第10章 習(xí)題1.簡(jiǎn)述存儲(chǔ)過程和觸發(fā)器的優(yōu)點(diǎn)。答:存儲(chǔ)過程最主要的特色是當(dāng)寫完一個(gè)存儲(chǔ)過程后即被翻譯成可執(zhí)行碼存儲(chǔ)在系統(tǒng)表內(nèi),當(dāng)作是數(shù)據(jù)庫的對(duì)象之一, 一般用戶只要執(zhí)行存儲(chǔ)過程, 并且提供存儲(chǔ)過程所需的參數(shù)就可以得到所要的結(jié)果而不必再去編輯 T-SQL命令。由于在觸發(fā)器中可以包含復(fù)雜的處理邏輯,因此,應(yīng)該將觸發(fā)器用來保持低級(jí)的數(shù)據(jù)的完整性,而不是返回大量的查詢結(jié)果。使用觸發(fā)器主要可以實(shí)現(xiàn)以下操作:強(qiáng)制比CHECK約束更復(fù)雜的數(shù)據(jù)的完整性使用自定義的錯(cuò)誤提示信息實(shí)現(xiàn)數(shù)據(jù)庫中多張表的級(jí)聯(lián)修改比較數(shù)據(jù)庫修改前后數(shù)據(jù)的狀態(tài)22調(diào)用更多的存儲(chǔ)過程維護(hù)非規(guī)范化數(shù)據(jù)2.簡(jiǎn)述SQLServer2008中存儲(chǔ)過程和觸發(fā)器的分類。答:存儲(chǔ)過程分為系統(tǒng)存儲(chǔ)過程、 本地存儲(chǔ)過程、臨時(shí)存儲(chǔ)過程、遠(yuǎn)程存儲(chǔ)過程和擴(kuò)展存儲(chǔ)過程。觸發(fā)器:DML觸發(fā)器是當(dāng)數(shù)據(jù)庫服務(wù)器中發(fā)生數(shù)據(jù)操作語言 (DML)事件時(shí)會(huì)自動(dòng)執(zhí)行的存儲(chǔ)過程。DDL觸發(fā)器是在響應(yīng)數(shù)據(jù)定義語言(DDL)語句時(shí)觸發(fā),一般用于數(shù)據(jù)庫中執(zhí)行管理任務(wù)。3.創(chuàng)建存儲(chǔ)過程,從課程表中返回指定的課程的信息。該存儲(chǔ)過程對(duì)傳遞的參數(shù)進(jìn)行模式匹配,如果沒有提供參數(shù),則返回所有課程的信息。答:CREATEPROCEDUREPcourse@namevarchar(20)='%'ASSELECT*FROM 課程表WHERE 課程名 LIKE@name4.創(chuàng)建存儲(chǔ)過程,計(jì)算指定學(xué)生(姓名)的總成績(jī),存儲(chǔ)過程中使用一個(gè)輸入?yún)?shù) (姓名)和一個(gè)輸出參數(shù) (總成績(jī))。答:CREATEPROCEDURESname@S_nvarchar(20),@sum1 intOUTPUTASSELECT@sum1=sum(成績(jī))FROM 選課表,學(xué)生表WHERE 姓名=@S_n and學(xué)生表.學(xué)號(hào)=選課表.學(xué)號(hào)5.在倉(cāng)庫庫存數(shù)據(jù)庫創(chuàng)建存儲(chǔ)過程,某商品(如編號(hào)為 ds-018的商品)進(jìn)了一批貨,則如果某倉(cāng)庫目前根本沒有任何商品的庫存, 就存入此倉(cāng)庫;否則,修改庫存總量最少的那個(gè)倉(cāng)庫的庫存,如果那個(gè)倉(cāng)庫目前沒有這種商品,就直接向庫存情況表添加一行,否則修改該商品的庫存數(shù)量的值為原值加上進(jìn)貨量(用形參變量表示進(jìn)貨量) 。答:CREATEPROCEDUREUpdatekucun @spnochar(6),@numberintASDECLARE@cnochar(3)IFexists(SELECT*FROM 倉(cāng)庫 WHERE 倉(cāng)庫編號(hào) NOTIN(SELECT 倉(cāng)庫編號(hào) FROM 庫存情況))BEGINSELECTTOP1@cno=倉(cāng)庫編號(hào) FROM 倉(cāng)庫 WHERE 倉(cāng)庫編號(hào) NOTIN(SELECT 倉(cāng)庫編號(hào) FROM 庫存情況)INSERT庫存情況 VALUES(@cno,@spno,@number)ENDELSEBEGINSELECTTOP1@cno=倉(cāng)庫編號(hào) FROM庫存情況GROUP BY倉(cāng)庫編號(hào)23ORDERBYSUM(數(shù)量)IFexists(SELECT*FROM 庫存情況 WHERE 倉(cāng)庫編號(hào)=@cnoand商品編號(hào)=@spno)UPDATE庫存情況SET數(shù)量=數(shù)量+@numberWHERE倉(cāng)庫編號(hào)=@cnoand商品編號(hào)=@spnoELSEINSERT 庫存情況 VALUES(@cno,@spno,@number)END6.為dept表創(chuàng)建一個(gè)實(shí)現(xiàn)級(jí)聯(lián)刪除的觸發(fā)器,當(dāng)執(zhí)行刪除時(shí),激活該觸發(fā)器同時(shí)刪除gongcheng表中相應(yīng)記錄(leader列)。答:CREATETRIGGERd_trONdeptFORdeleteASdeletefromgongchengwhereleader=(SELECTleaderFROMdeleted)7.在教學(xué)庫中建一個(gè)學(xué)生黨費(fèi)表,屬性(學(xué)號(hào),姓名,黨費(fèi)) ,學(xué)號(hào)是主鍵,也是外鍵(參考學(xué)生表的學(xué)號(hào));創(chuàng)建一個(gè)觸發(fā)器, 保證只能在每年的 6月和12月交黨費(fèi),如果在其它時(shí)間錄入則顯示提示信息。答:CREATETABLE 學(xué)生黨費(fèi)表(學(xué)號(hào) CHAR(7)primarykey foreignkeyreferences 學(xué)生表(學(xué)號(hào)),姓名 char(6),黨費(fèi) int)CREATETRIGGERtrg_學(xué)生黨費(fèi)表on學(xué)生黨費(fèi)表 forinsertASifnot(datepart(mm,getdate())='06'ordatepart(mm,getdate())='12')BEGINprint'對(duì)不起,只能在每年的 6月和12月交黨費(fèi)'rollbackEND8.在倉(cāng)庫庫存情況表上創(chuàng)建一個(gè)觸發(fā)器,用于實(shí)現(xiàn)復(fù)雜的約束:在對(duì)庫存進(jìn)行插入和修改時(shí),按倉(cāng)庫的容量進(jìn)行約束。例如,在修改001號(hào)倉(cāng)庫的庫存數(shù)量時(shí),觸發(fā)了觸發(fā)器,如圖1。24圖1習(xí)題7的觸發(fā)器功能答:CREATE TRIGGER kucun_tr1ON庫存情況FORINSERT,UPDATEASDECLARE@SINT,@S1INT,@NOCHAR(3)SELECT@S=SUM(庫存情況.數(shù)量)FROM 庫存情況,insertedWHERE 庫存情況.倉(cāng)庫編號(hào)=inserted.倉(cāng)庫編號(hào)SELECT@S1=容量,@NO=inserted.倉(cāng)庫編號(hào) FROM 倉(cāng)庫,insertedWHERE 倉(cāng)庫.倉(cāng)庫編號(hào)=inserted.倉(cāng)庫編號(hào)IF@S>@S1BEGINPRINT@NO+'號(hào)倉(cāng)庫的容量為 '+CAST(@s1aschar(3))+',已滿。'ROLLBACKEND第11章 習(xí)題1.什么是事務(wù)?如果要提交或取消一個(gè)事務(wù),使用什么語句 ?答:事務(wù)處理是數(shù)據(jù)庫的主要工作,事務(wù)由一系列的數(shù)據(jù)操作組成,是數(shù)據(jù)庫應(yīng)用程序的基本邏輯單元,用來保證數(shù)據(jù)的一致性。提交或取消一個(gè)事務(wù):COMMITTRANSACTION或ROLLBACKTRANSACTION語句。2.事務(wù)分為哪幾類?答:根據(jù)系統(tǒng)的設(shè)置,SQLServer2008將事務(wù)分為兩種類型:系統(tǒng)提供的事務(wù)和用戶定義的事務(wù)。25根據(jù)運(yùn)行模式的不同,SQLServer2008將事務(wù)分為4種類型:顯示事務(wù)、隱式事務(wù)、自動(dòng)提交事務(wù)和批處理級(jí)事務(wù)。3.簡(jiǎn)述事務(wù)回滾機(jī)制。答:(1)如果不指定回滾的事務(wù)名稱或保存點(diǎn),則ROLLBACKTRANSACTION命令會(huì)將事務(wù)回滾到事務(wù)的起點(diǎn)。(2)在嵌套事務(wù)時(shí),該語句將所有內(nèi)層事務(wù)回滾到最遠(yuǎn)的 BEGINTRANSACTION 語句,transaction_name也只能是來自最遠(yuǎn)的 BEGINTRANSACTION 語句的名稱。(3)在執(zhí)行COMMITTRANSACTION 語句后不能回滾事務(wù)。如果在觸發(fā)器中發(fā)出ROLLBACKTRANSACITON命令,將回滾對(duì)當(dāng)前事務(wù)中所做的所有數(shù)據(jù)修改,包括觸發(fā)器所做的修改。(5)事務(wù)在執(zhí)行過程中出現(xiàn)任何錯(cuò)誤, SQLServer都將自動(dòng)回滾事務(wù)。4.簡(jiǎn)述鎖機(jī)制,鎖分為哪幾類。答:鎖是防止其他事務(wù)訪問指定的資源、 實(shí)現(xiàn)并發(fā)控制的一種手段, 是多個(gè)用戶能夠同時(shí)操縱同一個(gè)數(shù)據(jù)庫中的數(shù)據(jù)而不發(fā)生數(shù)據(jù)不一致現(xiàn)象的重要保障。鎖分為(1)共享鎖(SharedLock)(2)排它鎖(ExclusiveLock)(3)更新鎖(UpdateLock)(4)意向鎖(IntentLock)(5)模式鎖(SchemaLock)(6)大容量更新鎖 (BulkUpdateLock)5.分析各類鎖之間的兼容性。在一個(gè)事務(wù)已經(jīng)對(duì)某個(gè)對(duì)象鎖定的情況下,另一個(gè)事務(wù)請(qǐng)求對(duì)同一個(gè)對(duì)象的鎖定,此時(shí)就會(huì)出現(xiàn)鎖定兼容性問題。當(dāng)兩種鎖定方式兼容時(shí),可以同意對(duì)該對(duì)象的第二個(gè)鎖定請(qǐng)求。如果請(qǐng)求的鎖定方式與已掛起的鎖定方式不兼容, 那么就不能同意第二個(gè)鎖定請(qǐng)求。相反,請(qǐng)求要等到第一個(gè)事務(wù)釋放其鎖定,并且釋放所有其他現(xiàn)有的不兼容鎖定為止。詳細(xì)內(nèi)容見書表 11-1。6.簡(jiǎn)述死鎖及其解決辦法。答:產(chǎn)生死鎖的情況一般包括以下兩種:第一種情況,當(dāng)兩個(gè)事務(wù)分別鎖定了兩個(gè)單獨(dú)的對(duì)象,這時(shí)每一個(gè)事務(wù)都要求在另外一個(gè)事務(wù)鎖定的對(duì)象上獲得一個(gè)鎖,因此每一個(gè)事務(wù)都必須等待另外一個(gè)事務(wù)釋放占有的鎖,這時(shí),就發(fā)生了死鎖。這種死鎖是最典型的死鎖形式。第二種情況,當(dāng)在一個(gè)數(shù)據(jù)庫中時(shí),有若干個(gè)長(zhǎng)時(shí)間運(yùn)行的事務(wù)執(zhí)行并行的操作,當(dāng)查詢分析器處理一種非常復(fù)雜的查詢例如連接查詢時(shí),那么由于不能控制處理的順序,有可能發(fā)生死鎖現(xiàn)象。在數(shù)據(jù)庫中解決死鎖常用的方法有:(1)要求每個(gè)事務(wù)一次就將要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行。(2)允許死鎖發(fā)生,系統(tǒng)來用某些方式診斷當(dāng)前系統(tǒng)中是否有死鎖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)級(jí)數(shù)據(jù)共享的區(qū)塊鏈技術(shù)發(fā)展趨勢(shì)預(yù)測(cè)
- 嚴(yán)控廢物合同范例
- 豐澤區(qū) 勞動(dòng)合同樣本
- 醫(yī)療數(shù)據(jù)安全與隱私保護(hù)的國(guó)際法規(guī)探討
- 批評(píng)與自我批評(píng)發(fā)言稿模版
- 綠橙色可愛卡通食品安全模板
- 15天賬期合同范例
- 從商業(yè)視角看如何利用區(qū)塊鏈技術(shù)增強(qiáng)數(shù)據(jù)安全性
- 員工禮儀學(xué)習(xí)心得體會(huì)模版
- 廈門市2025 屆高三畢業(yè)班第四次質(zhì)量檢測(cè)-化學(xué)+答案
- 2025年湖南湘江新區(qū)發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 《年產(chǎn)100公斤阿司匹林生產(chǎn)工藝設(shè)計(jì)》8700字(論文)
- 全屋整裝培訓(xùn)
- DB32T 4919-202412345政務(wù)服務(wù)便民熱線訴求分類與代碼
- 《風(fēng)電安全生產(chǎn)培訓(xùn)》課件
- 常見病用藥指導(dǎo)技術(shù)知到智慧樹章節(jié)測(cè)試課后答案2024年秋天津生物工程職業(yè)技術(shù)學(xué)院
- 2025年日歷(日程安排-可直接打印)
- 保密法律法規(guī)
- 室內(nèi)空間攝影拍攝合同模板
- 智慧社區(qū)平臺(tái)運(yùn)營(yíng)方案
- 鑄牢中華民族共同體意識(shí)-形考任務(wù)1-國(guó)開(NMG)-參考資料
評(píng)論
0/150
提交評(píng)論