SQL Server數(shù)據(jù)庫應(yīng)用與開發(fā)教程習(xí)題答案_第1頁
SQL Server數(shù)據(jù)庫應(yīng)用與開發(fā)教程習(xí)題答案_第2頁
SQL Server數(shù)據(jù)庫應(yīng)用與開發(fā)教程習(xí)題答案_第3頁
SQL Server數(shù)據(jù)庫應(yīng)用與開發(fā)教程習(xí)題答案_第4頁
SQL Server數(shù)據(jù)庫應(yīng)用與開發(fā)教程習(xí)題答案_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 29 附錄 各章習(xí)題參考答案附錄 各章習(xí)題參考答案第1章 習(xí)題參考答案1. SQL Server 2016的常用版本有哪些?應(yīng)用范圍分別是什么?答:SQL Server 2016提供了如下版本供不同應(yīng)用進(jìn)行選擇:(1)企業(yè)版Enterprise(64位和32位):作為高級版本,SQL Server 2016 Enterprise版提供了全面的高端數(shù)據(jù)中心功能,性能極為快捷、虛擬化不受限制,還具有端到端的商業(yè)智能,可為關(guān)鍵任務(wù)工作負(fù)荷提供較高服務(wù)級別,支持最終用戶訪問深層數(shù)據(jù)。(2)商業(yè)智能版Business Intelligence(64位和32位):SQL Server 2016 Busi

2、ness Intelligence版提供了綜合性平臺,可支持組織構(gòu)建和部署安全、可擴(kuò)展且易于管理的BI解決方案。它提供了基于瀏覽器的數(shù)據(jù)瀏覽與可見性等卓越功能、功能強(qiáng)大的數(shù)據(jù)集成功能,以及增強(qiáng)的集成管理。(3)標(biāo)準(zhǔn)版Standard(64位和32位):SQL Server 2016 Standard版提供了基本數(shù)據(jù)管理和商業(yè)智能數(shù)據(jù)庫,使部門和小型組織能夠順利運行其應(yīng)用程序并支持將常用開發(fā)工具用于內(nèi)部部署和云部署,有助于以最少的IT資源獲得高效的數(shù)據(jù)庫管理。(4)Web版(64位和32位):對于為從小規(guī)模至大規(guī)模Web資產(chǎn)提供可伸縮性、經(jīng)濟(jì)性和可管理性的Web宿主和Web VAP來說,SQL

3、Server 2016 Web版本是一項總擁有成本較低的選擇。(5)開發(fā)版Developer(64位和32位):SQL Server 2016 Developer版支持開發(fā)人員基于SQL Server構(gòu)建任意類型的應(yīng)用程序。它包括Enterprise版的所有功能,但有許可限制,只能用作開發(fā)和測試系統(tǒng),而不能用作生產(chǎn)服務(wù)器。SQL Server Developer是構(gòu)建和測試應(yīng)用程序的開發(fā)人員的理想之選。(6)簡易版Express版(64位和32位):SQL Server 2016 Express是入門級的免費數(shù)據(jù)庫,是學(xué)習(xí)和構(gòu)建桌面及小型服務(wù)器數(shù)據(jù)驅(qū)動應(yīng)用程序的理想選擇。它是獨立軟件供應(yīng)商、開

4、發(fā)人員和熱衷于構(gòu)建客戶端應(yīng)用程序的人員的最佳選擇。如果以后需要使用更高級的數(shù)據(jù)庫功能,則可以將SQL Server Express無縫升級到其他更高端的SQL Server版本。SQL Server 2016中新增了SQL Server Express LocalDB,這是Express的一種輕型版本,該版本具備所有可編程性功能,但在用戶模式下運行,并且具有快速的零配置安裝和必備組件要求較少等特點。2. SQL Server 2016的優(yōu)勢是什么?答:(1) 處理關(guān)鍵任務(wù)的性能提升。SQL Server 2016新增內(nèi)存聯(lián)機(jī)事務(wù)處理(Online Transaction Processing,

5、OLTP)功能,使其在不修改應(yīng)用程序的情況下提升性能。除此之外,可更新的列存儲索以及AlwaysOn功能的增強(qiáng)也讓SQL Server 2016的較以往的版本處理能力大大增強(qiáng)。(2)獲得深度信息速度加快。借助于新的基于Office的商業(yè)智能(Business Intelligence,BI)工具(如Power Query和Power Map),使用戶能夠隨時隨地訪問數(shù)據(jù)。除此之外,企業(yè)選項(如Parallel Data Warehouse with Polybase)讓集團(tuán)組織借助商業(yè)智能工具,對于大數(shù)據(jù)進(jìn)行分析探索,得到對于自己數(shù)據(jù)的全新的深入見解。(3)混合平臺操作。不論處理環(huán)境是純本地的

6、、虛擬化的還是完全在云中的,SQL Server 2016都提供了對應(yīng)的選項。新增功能(如Microsoft SQL Server Backup to Windows Azure Tool)允許備份到Windows Azure Blob存儲,并且可以對本地或云中保存的數(shù)據(jù)備份進(jìn)行壓縮或加密。3. SQL Server 2016是由哪幾個服務(wù)組成的?答:Microsoft SQL Server 2016系統(tǒng)由4部分組成,這4個部分被稱為4個服務(wù),分別是數(shù)據(jù)庫引擎、Analysis Services、Reporting Services和Integration Services第2章 習(xí)題參考答案

7、1. 簡答題(1) SQL Server 2016的系統(tǒng)安裝一共提供了幾種不同的安裝模式?答:安裝模式一共分五種:全新安裝、并列安裝、省級安裝、手動安裝、自動安裝。(2) SQL Server 2016的系統(tǒng)安裝的硬件選擇的最低要求有哪些?答:SQL Server 2016的系統(tǒng)安裝的硬件選擇的最低要求如下表所示:硬 件需 求處理器64位安裝速度:1.4GHz或更高AMD Opteron、Athlon 64、支持Intel EM64T的Intel Pentium IV、支持Intel EM64T的Xeon注意雖然聯(lián)機(jī)叢書描述了32位安裝的需求,但是實際安裝時會發(fā)生錯誤,指出不支持32位安裝內(nèi)存

8、1GB(Express版為512MB);推薦4GB存儲器數(shù)據(jù)庫引擎和數(shù)據(jù)文件、復(fù)制、全文搜索以及數(shù)據(jù)質(zhì)量服務(wù):811MBAnalysis Services和數(shù)據(jù)文件:345MBReporting Services和報表管理器:304MBIntegration Services:591MB主數(shù)據(jù)服務(wù):243MB客戶端組件(除了SQL Server聯(lián)機(jī)叢書組件和Integration Services工具以外):1823MB用于查看和管理幫助內(nèi)容的SQL Server聯(lián)機(jī)叢書組件:375KB (3) SQL Server 2016安裝過程中有哪幾個重要的配置選項?答:主要有這樣四個配置選項:1.

9、排序規(guī)則、2. 區(qū)分大小寫、3. 排序順序、4. 服務(wù)賬戶。(3) SQL Server 2016最重要的性能設(shè)置包括哪些方面?答:包括三方面:1.內(nèi)存、2.網(wǎng)絡(luò)數(shù)據(jù)包大小、3.即時文件初始化。第3章 習(xí)題參考答案1. 簡答題(1) SQL Server 2016的系統(tǒng)數(shù)據(jù)庫有哪幾種?功能分別是什么?答:系統(tǒng)數(shù)據(jù)庫由master、model、msdb、tempdb和隱藏的Resource數(shù)據(jù)庫組成。master數(shù)據(jù)庫:master數(shù)據(jù)庫是SQL Server 2016中最重要的數(shù)據(jù)庫,用于記錄SQL Sever 2014 中所有服務(wù)器級別的對象。包括了服務(wù)器登錄賬戶、鏈接服務(wù)器定義以及端點。M

10、aster數(shù)據(jù)庫同時還記錄服務(wù)器上其他所有數(shù)據(jù)庫的信息。model數(shù)據(jù)庫:model數(shù)據(jù)庫是一個模板數(shù)據(jù)庫。該數(shù)據(jù)庫存儲了可以作為模板的數(shù)據(jù)庫對象和數(shù)據(jù)。msdb數(shù)據(jù)庫:msdb數(shù)據(jù)庫是與SQL Sever 2014代理服務(wù)有關(guān)的數(shù)據(jù)庫。該系統(tǒng)數(shù)據(jù)庫記錄有關(guān)警報、操作員、調(diào)度信息等,這些信息可以用于自動化系統(tǒng)的操作。Tempdb數(shù)據(jù)庫:tempdb數(shù)據(jù)庫是一個臨時數(shù)據(jù)庫,可用于存儲查詢過程中所使用的中間數(shù)據(jù)和結(jié)果。Resource系統(tǒng)數(shù)據(jù)庫:Resource系統(tǒng)數(shù)據(jù)庫是一個被隱藏的、只讀的、物理的系統(tǒng)數(shù)據(jù)庫,包含了SQL Server 2016實例使用的所有系統(tǒng)對象。(2) 數(shù)據(jù)庫的存儲結(jié)構(gòu)分

11、為哪兩類?答:數(shù)據(jù)庫的存儲結(jié)構(gòu)分為邏輯存儲結(jié)構(gòu)和物理存儲結(jié)構(gòu)兩種。數(shù)據(jù)庫的物理存儲結(jié)構(gòu)是指保存數(shù)據(jù)庫中各種邏輯對象的物理文件是如何在磁盤上存儲的,數(shù)據(jù)庫在磁盤上是以文件位單位存儲的,SQL Sever 2014 將數(shù)據(jù)庫映射為一組操作系統(tǒng)文件。數(shù)據(jù)庫的邏輯存儲結(jié)構(gòu)是指組成數(shù)據(jù)庫的所有邏輯對象。SQL Sever 2014 的邏輯對象包括數(shù)據(jù)表、視圖、存儲過程、函數(shù)、觸發(fā)器、規(guī)則,另外還有用戶、角色、架構(gòu)等。(3) 數(shù)據(jù)庫由哪幾種類型的文件組成?其擴(kuò)展名分別是什么?答:SQL Sever 2014 中數(shù)據(jù)庫在磁盤上存儲時主要分為兩大類物理文件:數(shù)據(jù)庫文件和事務(wù)日志文件。一個數(shù)據(jù)庫至少包含一個數(shù)據(jù)

12、文件和一個日志文件。數(shù)據(jù)文件又分為主數(shù)據(jù)文件和輔助數(shù)據(jù)文件。主數(shù)據(jù)文件:主數(shù)據(jù)文件包含數(shù)據(jù)庫的啟動信息,其用來存儲部分或者全部數(shù)據(jù)。用戶數(shù)據(jù)和對象可以存儲在此文件中,也可以存儲在輔助數(shù)據(jù)文件中。每個數(shù)據(jù)庫必須有且僅能有一個主文件,默認(rèn)擴(kuò)展名為.mdf。輔助數(shù)據(jù)文件:一個數(shù)據(jù)庫可以沒有輔助數(shù)據(jù)文件,也可能有多個輔助數(shù)據(jù)文件,輔助數(shù)據(jù)文件是可選的,其由用戶定義并存儲未包括在主文件內(nèi)的用戶數(shù)據(jù)。當(dāng)數(shù)據(jù)庫超過了單個 Windows 文件的最大大小時,可以使用輔助數(shù)據(jù)文件,從而使數(shù)據(jù)庫能繼續(xù)增長。而當(dāng)數(shù)據(jù)庫較小時,則只創(chuàng)建主數(shù)據(jù)文件就可以,不需要再創(chuàng)建輔助數(shù)據(jù)文件。輔助數(shù)據(jù)文件的默認(rèn)擴(kuò)展名為.ndf。事

13、務(wù)日志文件:事務(wù)日志文件是由一系列日志記錄組成,用來記錄數(shù)據(jù)庫更新情況的文件。事務(wù)日志文件用于保存恢復(fù)數(shù)據(jù)庫所需的事務(wù)日志信息。每個數(shù)據(jù)庫必須至少有一個事務(wù)日志文件,也可能有多個事務(wù)日志文件。事務(wù)日志文件的建議擴(kuò)展名為.ldf。(4) 數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)與數(shù)據(jù)庫管理系統(tǒng)的區(qū)別是什么?答:數(shù)據(jù)庫是以一定的組織形式存放在計算機(jī)中的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫系統(tǒng)是指在計算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的一個完整的應(yīng)用系統(tǒng)。包括數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用程序以及用戶等。在大型數(shù)據(jù)庫系統(tǒng)中,還專門設(shè)有數(shù)據(jù)庫管理員。數(shù)據(jù)庫管理系統(tǒng)是指幫助用戶建立、使用和管理數(shù)據(jù)庫的計算機(jī)軟件。其功能包括數(shù)據(jù)定義、數(shù)據(jù)操作、數(shù)據(jù)庫及數(shù)

14、據(jù)庫維護(hù)等。(5) SQL Server 2016常用的系統(tǒng)數(shù)據(jù)類型有哪些?答:整型、浮點型、字符型、日期時間型、位數(shù)據(jù)類型、貨幣數(shù)據(jù)類型、二進(jìn)制數(shù)據(jù)類型。2. 上機(jī)操作題(1) 使用SQL Server 2016 管理控制臺的圖形界面以及T-SQL語句分別創(chuàng)建“學(xué)生管理庫”數(shù)據(jù)庫和刪除數(shù)據(jù)庫。要求“學(xué)生管理庫”數(shù)據(jù)庫的主數(shù)據(jù)文件的初始大小為5MB,最大為50MB,增長方式為10%;日志文件的初始大小為1MB,最大為5MB,增長方式為1MB。T-SQL語句如下: (name=學(xué)生管理庫,filename=e:學(xué)生管理庫.mdf,size=5MB,maxsize=50MB,filegrowth=

15、10%)Log on (name=學(xué)生管理庫,filename=e:學(xué)生管理庫_log.ldf,size=1MB,maxsize=5MB,filegrowth=1MB)Go(2) 分別創(chuàng)建“學(xué)生”、“選課”、“課程”數(shù)據(jù)表。(3) 向“學(xué)生”、“選課”、“課程”數(shù)據(jù)表中分別輸入若干條記錄。(4) 刪除“學(xué)生”、“選課”、“課程”數(shù)據(jù)表。第4章 習(xí)題參考答案1. 計算“2012-5-16”與當(dāng)前日期相差的年份數(shù)。答:select datediff(y, 2012-5-16,getdate()2. 聲明一個長度為20的字符型變量,并賦值為“SQL Server數(shù)據(jù)庫”,然后輸出。答:declare

16、 c char(20)set c=SQL Server數(shù)據(jù)庫print c3. 定義一個局部變量score,并為其賦值,判斷其是否及格。答:declare score floatset score=85if score>=60print 及格elseprint 不及格4. 使用Transact-SQL語句編程求100以內(nèi)能被3整除的整數(shù)的個數(shù)。答:declare n int, count intselect n =1,count=0while n<=100beginif n %3=0set count=count+1set n=n+1endprint 100以內(nèi)能被3整除的整數(shù)的個

17、數(shù)=+convert(char,count)go第5章 習(xí)題參考答案1. 回到工作場景,完成工作場景中提出的查詢要求。 略2. 簡述SELECT語句的基本語法。SELECT語句的完整語法格式如下:SELECT <列名選項> FROM <表名>|<視圖名稱>WHERE <查詢條件>|<聯(lián)接條件>GROUP BY <分組表達(dá)式>HAVING <分組統(tǒng)計表達(dá)式>ORDER BY <排序表達(dá)式>ASC|DESC3. 簡述SELECT語句中的FROM、WHERE、GROUP BY以及ORDER BY子句的作用

18、。 SELECT子句:用來指定查詢返回的列,各列在SELECT子句中的順序決定了它們在結(jié)果表中的順序; FROM子句:用來指定數(shù)據(jù)來源的表或視圖; WHERE子句:用來限定返回行的搜索條件; GROUP BY子句:用來指定查詢結(jié)果的分組條件; ORDER BY子句:用來指定結(jié)果的排序方式。4. 簡述WHERE子句可以使用的搜索條件及其意義。常用的查詢條件如下表:查詢條件運 算 符說明比較=、>、<、>=、<=、!=、<>、!>、NOT+上述運算符比較大小邏輯運算AND、OR、NOT用于邏輯運算符判斷,也可用于多重條件的判斷字符匹配LIKE、NOT LI

19、KE判斷值是否與指定的字符通配格式相符確定范圍BETWEENAND、NOT BETWEENAND判斷值是否在范圍內(nèi)確定集合IN、NOT IN判斷值是否為列表中的值空值IS NULL、IS NOT NULL判斷值是否為空5. 舉例說明什么是內(nèi)連接、外連接和交叉連接?交叉連接也稱非限制連接,又叫廣義笛卡爾積。兩個表的廣義笛卡爾積是兩表中記錄的交叉乘積,結(jié)果集的列為兩個表屬性列的和,其連接的結(jié)果會產(chǎn)生一些沒有意義的記錄,而且進(jìn)行該操作非常耗時。因此該運算的實際意義不大。交叉連接會產(chǎn)生很多冗余的記錄,那么如何篩選出有用的連接呢?通過內(nèi)連接來實現(xiàn),內(nèi)連接也稱為簡單連接,它會把兩個或多個表進(jìn)行連接,只查出

20、匹配的記錄,不匹配的記錄將無法查詢出來。這種連接查詢是平常用的最多的查詢。內(nèi)連接中常用的就是等值連接和非等值連接。等值連接的連接條件是在WHERE子句中給出的,只有滿足連接條件的行才會出現(xiàn)在查詢結(jié)果中。這種形式也稱為連接謂詞表示形式,是SQL語言早期的連接形式。當(dāng)連接條件中的關(guān)系運算符使用除“=”以外的其他關(guān)系運算符時,這樣的內(nèi)連接稱為非等值連接。外連接是指連接關(guān)鍵字JOIN的后面表中指定列連接在前一表中指定列的左邊或者右邊,如果兩表中指定列沒有匹配行,則返回空值。外連接的結(jié)果不但包含滿足連接條件的行,還包含相應(yīng)表中的所有行。外連接有三種形式,其中的OUTER關(guān)鍵字可以省略:(1) 左外連接(

21、LEFT OUTER JOIN或LEFT JOIN):包含左邊表的全部行(不管右類似于這樣的自身連接在實際應(yīng)用中還有很多,例如,求與“趙權(quán)”同職稱的老師等。邊的表中是否存在與它們匹配的行),以及右邊表中全部滿足條件的行。(2) 右外連接(RIGHT OUTER JOIN或RIGHT JOIN):包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行),以及左邊表中全部滿足條件的行。6. INSERT語句的VALUES子句中必須指明哪些信息,必須滿足哪些要求?INSERT語句格式為:INSERT INTO 表名(列名1,) VALUES (列值1,)(1) 在插入數(shù)據(jù)時,表明后面的列名不能為空

22、,并且VALUES后面的列值須和列名一一對應(yīng);(2) 在使用語句整體插入數(shù)據(jù)時,須根據(jù)數(shù)據(jù)庫里的所有字段按順序填寫對應(yīng)字段。7. 使用教學(xué)管理數(shù)據(jù)庫,進(jìn)行如下操作:(1) 查詢所有課程的課程名和課程號; SELECT 課程名,課程號 FROM 課程(2) 查詢所有考試不及格的學(xué)生的學(xué)號、姓名和分?jǐn)?shù); SELECT 學(xué)號,姓名,分?jǐn)?shù) FROM 學(xué)生,選課 WHERE 選課.成績<60 AND 學(xué)生.學(xué)號=選課.學(xué)號(3) 查詢年齡在18-20歲之間的學(xué)生姓名、年齡、所屬院系和政治面貌; SELECT 學(xué)號,年齡,系別,政治面貌 FROM 學(xué)生 WHERE 年齡 BETWEEN 18 AND

23、 20(4) 查詢所有姓李的學(xué)生的學(xué)號、姓名和性別; SELECT 學(xué)號,年齡,系別,政治面貌 FROM 學(xué)生 WHERE 姓名 LIKE 李%(5) 查詢名字中第2個字為“華”字的女學(xué)生的姓名、年齡和所屬院系; SELECT 姓名,年齡,系別 FROM 學(xué)生 WHERE 年齡 姓名 LIKE _華%(6) 查詢所有選了3門課以上的學(xué)生的學(xué)號、姓名、所選課程名稱及分?jǐn)?shù); SELECT 學(xué)生.學(xué)號,課程號,姓名,分?jǐn)?shù)FROM 學(xué)生,課程,選課WHERE 學(xué)生.學(xué)號=選課.學(xué)號 AND 課程.課程號=選課.課程號GROUP BY 學(xué)生.學(xué)號HAVING COUNT(*)>=3(7) 查詢每個

24、同學(xué)各門課程的平均分?jǐn)?shù)和最高分?jǐn)?shù),按照降序排列輸出學(xué)生姓名、平均分?jǐn)?shù)和最高分?jǐn)?shù); SELECT 姓名,AVG(分?jǐn)?shù)),MAX(分?jǐn)?shù))FROM 學(xué)生,選課WHERE 學(xué)生.學(xué)號=選課.學(xué)號ORDER BY AVG(分?jǐn)?shù)) DESC(8) 查詢所有學(xué)生都選修了的課程號和課程名。 SELECT 課程號,課程名 FROM 課程 WHERE NOT EXISTS (SELECT * FROM 學(xué)生 WHERE NOT EXISTS (SELECT * FROM 選課 WHERE 學(xué)號=學(xué)生.學(xué)號 AND 課程號=課程.課程號)第6章 習(xí)題參考答案1. 使用T-SQL語句管理表的數(shù)據(jù),插入語句,修改語句,

25、刪除語句分別是什么?答:插入語句是: INSERT INTO <table_name > (column_name 1, column_name 2, column_name n) VALUES(values 1, values 2, values n) 修改語句是:UPDATE table_nameSET column_1 =expression_1, column_2 =expression_2, , column_n =expression_nWHERE search_conditions刪除語句是:DELETE FROM table_name WHERE search_co

26、nditions2. 向表中插入數(shù)據(jù)一共有幾種方法?答:(1)插入簡單記錄值行(2)插入多行記錄值(3)利用SELECT插入查詢結(jié)果集(4)利用BULK INSERT語句進(jìn)行大批量插入數(shù)據(jù)3. 刪除表中的數(shù)據(jù)可以使用哪幾種語句?有什么區(qū)別?答:刪除表中的數(shù)據(jù)可以使用DELETE語句、TRUNCATE TABLE語句以及DROP TABLE語句。使用TRUNCATE TABLE語句比DELETE 語句要快,因為它是逐頁刪除表中的內(nèi)容,而DELETE則是逐行刪除內(nèi)容。TRUNCATE TABLE是不記錄日志的操作,它將釋放表的數(shù)據(jù)和索引所占據(jù)的所有空間以及所有為全部索引分配的頁,刪除的數(shù)據(jù)是不可恢

27、復(fù)的。而DELETE語句則不同,它在刪除每一行記錄時都要把刪除操作記錄在日志中。刪除操作記錄在日志中,可以通過事務(wù)回滾來恢復(fù)刪除的數(shù)據(jù)。用TRUNCATE TABLE和DELETE語句都可以刪除所有的記錄,但是表結(jié)構(gòu)還在,而DROP TABLE不但刪除表中的數(shù)據(jù),而且還刪除表的結(jié)構(gòu)并釋放空間。第7章 習(xí)題參考答案1. 唯一約束和主鍵約束的區(qū)別是什么?答:RPRIMAY KEY約束與UNIQUE約束的區(qū)別如下:(1)一個表中只能有一個RPRIMAY KEY約束,但可以有多個UNIQUE約束。(2)UNIQUE約束所在的列允許空值,只能出現(xiàn)一個空值,但是RPRIMAY KEY約束所在的列不允許空值

28、。(3)在默認(rèn)情況下,RPRIMAY KEY約束強(qiáng)制在指定的列上創(chuàng)建一個唯一性的聚集索引;UNIQUE約束強(qiáng)制在指定的列上創(chuàng)建一個唯一性的非聚集索引。2. 規(guī)則對象與CHECK約束有什么區(qū)別?答:CHECK 約束比規(guī)則更簡明,一個列只能應(yīng)用一個規(guī)則,但是卻可以應(yīng)用多個 CHECK 約束。CHECK約束可作為CREATE TABLE 語句的一部分進(jìn)行指定,而規(guī)則以單獨的對象創(chuàng)建,然后綁定到列上。3. 什么是數(shù)據(jù)庫的完整性?完整性有哪些類型?答:數(shù)據(jù)完整性(Data Integrity)指的是存儲在數(shù)據(jù)庫中的所有數(shù)據(jù)值均為正確合理的狀態(tài)。如果數(shù)據(jù)庫中含有不正確的數(shù)據(jù)值,則該數(shù)據(jù)庫被稱為喪失數(shù)據(jù)完整

29、性。數(shù)據(jù)完整性分為4個類別:實體完整性(Entity integrity),域完整性(Domain integrity),引用完整性(Referential integrity),用戶定義完整性(User-defined integrity)。4. 創(chuàng)建一個“職工”數(shù)據(jù)表,包含職工號 char(6)、姓名 nvarchar(4)、性別 nchar(1)、部門 nvarchar(10)字段。設(shè)置“職工號”為主鍵、“姓名”字段設(shè)置唯一約束、“性別”字段設(shè)置為只能取值“男”或“女”、“部門”字段設(shè)置默認(rèn)值為“銷售處”。答:CREATE TABLE 職工( 職工號 char(6) primary ke

30、y,姓名 nvarchar(4) unique,性別 nchar(1),部門 nvarchar(10)CREATE RULE sex_rule AS 性別 in (男, 女)CREATE RULE department_default AS 銷售處 Exec Sp_bindrule sex_rule, 職工.性別 Exec Sp_bindefault department_default, 職工.部門第8章 習(xí)題參考答案1. 簡答題(1) 本章介紹了哪幾種索引,分別描述每種索引的主要特征。答:1. 基于行的索引基于行的(或行存儲)索引是傳統(tǒng)的索引,將數(shù)據(jù)存儲為數(shù)據(jù)頁中的行。這些索引包括聚集索引

31、和非聚集索引。1) 聚集索引聚集索引基于鍵列存儲和排序表的葉級數(shù)據(jù)。實際的存儲頁鏈接在一起,所以可以按照聚集鍵的順序依次讀取表,導(dǎo)致的I/O開銷極小。每個表只可以有一個聚集索引,因為只可以按照一種順序排序數(shù)據(jù),而且聚集索引代表了實際的表數(shù)據(jù)。2) 非聚集索引非聚集索引包含索引鍵值和行定位器,行定位器指向?qū)嶋H的數(shù)據(jù)行。如果沒有聚集索引,行定位器就是實際數(shù)據(jù)行的RowID指針。如果存在聚集索引,行定位器就是該行的聚集索引鍵。3) 覆蓋索引覆蓋索引是滿足(覆蓋)特定查詢的所有字段需求的索引。通過在CREATE INDEX語句中使用INCLUDE短語,非聚集索引在葉級可以包含非鍵列,以幫助覆蓋查詢。這

32、些索引類型可以改進(jìn)查詢性能,并減少I/O操作,因為滿足查詢所需要的列作為鍵列或非鍵列包括在索引自身中,不需要再讀取實際的數(shù)據(jù)行。4) 過濾索引過濾索引使用WHERE子句指示將要索引哪些行。因為只是索引表中的部分行,所以可以創(chuàng)建較小的數(shù)據(jù)集存儲到索引中。過濾索引總是非聚集索引,因為它們選擇總記錄集的一個子集,而總記錄集用表上的聚集索引表示。如果查詢的WHERE子句可用過濾索引的WHERE子句中的行滿足,那么就會在查詢計劃中選擇過濾索引。2. 基于列的索引基于列的索引是在單獨列上創(chuàng)建的索引?;诹械乃饕袃煞N主要類型:列存儲索引(SQL Server 2012中首次引入)和XML索引(提供了XML

33、列中的值的索引)。列存儲索引列存儲索引在SQL Server 2012中首次引入。在這種基于列的索引中,為每個列創(chuàng)建行值的一個索引,然后所有的索引連接起來,表示表的基本數(shù)據(jù)存儲。這些索引基于Vertipaq引擎實現(xiàn),該引擎實現(xiàn)能夠?qū)崿F(xiàn)高壓縮比,處理大型數(shù)據(jù)集。3. 內(nèi)存優(yōu)化索引SQL Server 2016創(chuàng)建了新的索引來支持內(nèi)存優(yōu)化表。散列索引保存在內(nèi)存中,用于訪問內(nèi)存優(yōu)化(Hekaton)表中的數(shù)據(jù)。所需要的內(nèi)存量與散列索引使用的桶計數(shù)有關(guān)。內(nèi)存優(yōu)化的非聚集索引將對從內(nèi)存優(yōu)化表中訪問的數(shù)據(jù)進(jìn)行排序。這些索引只能使用CREATE TABLE和CREATE INDEX語句創(chuàng)建,并且是為范圍排序

34、掃描(按照排序順序讀取大量數(shù)據(jù))創(chuàng)建的。當(dāng)內(nèi)存表加載到內(nèi)存中時會創(chuàng)建這些索引,它們不會被持久化到物理表。4. 其他索引類型SQL Server中還有其他一些類型的索引,用于支持具體的開發(fā)主題。本節(jié)將介紹這些類型的基本知識,要詳細(xì)了解這些索引,請閱讀聯(lián)機(jī)叢書中的“索引”小節(jié)。1) XML索引XML索引是一種特殊的索引類型,用于索引存儲在XML列中的值。這些索引拆分XML列并存儲詳細(xì)信息,供在SQL查詢中快速檢索。XML列可能很大,在運行時將XML數(shù)據(jù)拆分成可讀的數(shù)據(jù)元素會減緩大型XML查詢。通過使用XML索引,這種拆分是提前完成的,在運行時讀取很快。2) 全文索引創(chuàng)建全文索引是為了支持SQL S

35、erver中的全文搜索功能。全文索引讓用戶和應(yīng)用程序能夠在SQL Server表中查詢基于字符的數(shù)據(jù)。必須先在表上創(chuàng)建全文索引,然后才能在全文搜索中包含它。3) 空間索引空間索引對空間數(shù)據(jù)列進(jìn)行索引??臻g數(shù)據(jù)列包含GEOMETRY或GEOGRAPHY類型的值??臻g索引支持處理空間數(shù)據(jù)的操作,如內(nèi)置的地理方法(STContains()、STDistance()、STEquals()、STIntersects()等)。為了讓優(yōu)化器能夠選擇查詢,必須在查詢的JOIN或WHERE子句中使用這些方法。(3) 索引數(shù)據(jù)庫的重要組成部分包括哪些?答:索引數(shù)據(jù)庫的重要組成部分包括創(chuàng)建分區(qū)和索引,以及高級的索引

36、技術(shù),如過濾索引和覆蓋索引。(4) 重新組織和重新構(gòu)建索引的區(qū)別是什么?答:列存儲索引在SQL Server 2012中首次引入。在這種基于列的索引中,為每個列創(chuàng)建行值的一個索引,然后所有的索引連接起來,表示表的基本數(shù)據(jù)存儲。這些索引基于Vertipaq引擎實現(xiàn),該引擎實現(xiàn)能夠?qū)崿F(xiàn)高壓縮比,處理大型數(shù)據(jù)集。在SQL Server 2012中,這些索引是不可更新的要在索引中添加值,就需要重新構(gòu)建索引。(5) 聚集索引和其他索引有什么本質(zhì)區(qū)別?答:1.聚集索引和非聚集索引的根本區(qū)別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優(yōu)點是查詢速度快,因為一旦

37、具有第一個索引值的紀(jì)錄被找到,具有連續(xù)索引值的記錄也一定物理的緊跟其后。 2.聚集索引的缺點是對表進(jìn)行修改速度較慢,這是為了保持表中的記錄的物理順序與索引的順序一致,而把記錄插入到數(shù)據(jù)頁的相應(yīng)位置,必須在數(shù)據(jù)頁中進(jìn)行數(shù)據(jù)重排,降低了執(zhí)行速度。非聚集索引指定了表中記錄的邏輯順序,但記錄的物理順序和索引的順序不一致,聚集索引和非聚集索引都采用了B+樹的結(jié)構(gòu),但非聚集索引的葉子層并不與實際的。第9章 習(xí)題參考答案1. 什么是事務(wù)?簡述事務(wù)ACID原則的含義。答:事務(wù)是由一組SQL語句組成的邏輯處理單元,事務(wù)具有以下4個屬性,通常簡稱為事務(wù)的ACID屬性。ACID是Atomic(原子性)、Consis

38、tency(一致性)、Isolation(隔離性)、Durability(持久性)的英文縮寫。Atomic(原子性):指整個數(shù)據(jù)庫事務(wù)是不可分割的工作單位。只有使據(jù)庫中所有的操作執(zhí)行成功,才算整個事務(wù)成功;事務(wù)中任何一個SQL語句執(zhí)行失敗,那么已經(jīng)執(zhí)行成功的SQL語句也必須撤銷,數(shù)據(jù)庫狀態(tài)應(yīng)該退回到執(zhí)行事務(wù)前的狀態(tài)。Consistency(一致性):指數(shù)據(jù)庫事務(wù)不能破壞關(guān)系數(shù)據(jù)的完整性以及業(yè)務(wù)邏輯上的一致性。例如對銀行轉(zhuǎn)帳事務(wù),不管事務(wù)成功還是失敗,應(yīng)該保證事務(wù)結(jié)束后ACCOUNTS表中Tom和Jack的存款總額為2000元。Isolation(隔離性):指的是在并發(fā)環(huán)境中,當(dāng)不同的事務(wù)同時操

39、縱相同的數(shù)據(jù)時,每個事務(wù)都有各自的完整數(shù)據(jù)空間。Durability(持久性):指的是只要事務(wù)成功結(jié)束,它對數(shù)據(jù)庫所做的更新就必須永久保存下來。即使發(fā)生系統(tǒng)崩潰,重新啟動數(shù)據(jù)庫系統(tǒng)后,數(shù)據(jù)庫還能恢復(fù)到事務(wù)成功結(jié)束時的狀態(tài)。2. 為什么要使用鎖?SQL Server 2016提供了哪幾種鎖的模式。答:數(shù)據(jù)庫鎖的產(chǎn)生原因:數(shù)據(jù)庫和操作系統(tǒng)一樣,是一個多用戶使用的共享資源。當(dāng)多個用戶并發(fā)地存取數(shù)據(jù)時,在數(shù)據(jù)庫中就會產(chǎn)生多個事務(wù)同時存取同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會讀取和存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。加鎖是實現(xiàn)數(shù)據(jù)庫并 發(fā)控制的一個非常重要的技術(shù)。在實際應(yīng)用中經(jīng)常會遇到的與鎖相關(guān)

40、的異常情況,當(dāng)兩個事務(wù)需要一組有沖突的鎖,而不能將事務(wù)繼續(xù)下去的話,就會出現(xiàn)死鎖,嚴(yán) 重影響應(yīng)用的正常執(zhí)行。 在數(shù)據(jù)庫中有兩種基本的鎖類型:排它鎖(Exclusive Locks,即X鎖)和共享鎖(Share Locks,即S鎖)。當(dāng)數(shù)據(jù)對象被加上排它鎖時,其他的事務(wù)不能對它讀取和修改。加了共享鎖的數(shù)據(jù)對象可以被其他事務(wù)讀取,但不能修改。數(shù)據(jù)庫利用這兩種基本的鎖類型來對數(shù)據(jù)庫的事務(wù)進(jìn)行并發(fā)控制。3. 什么是死鎖?怎么預(yù)防死鎖?怎么解決死鎖?答:當(dāng)事務(wù)T1封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請求封鎖數(shù)據(jù)R2,因T2封鎖了數(shù)據(jù)R2于是T1等待T2釋放數(shù)據(jù)R2上的鎖,接著T2又申請封鎖數(shù)據(jù)

41、R1,因為T1封鎖了數(shù)據(jù)R1,T2也只能等待T1釋放數(shù)據(jù)R1上的鎖.這樣就出現(xiàn)了T1等待T2而T2又在等待T1的局面,T2和T1兩個事物永遠(yuǎn)不能結(jié)束,形成死鎖。產(chǎn)生死鎖的原因主要是:(1) 因為系統(tǒng)資源不足。(2) 進(jìn)程運行推進(jìn)的順序不合適。(3) 資源分配不當(dāng)?shù)?。如果系統(tǒng)資源充足,進(jìn)程的資源請求都能夠得到滿足,死鎖出現(xiàn)的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進(jìn)程運行推進(jìn)順序與速度不同,也可能產(chǎn)生死鎖。產(chǎn)生死鎖的四個必要條件:(1) 互斥條件:一個資源每次只能被一個進(jìn)程使用。(2) 請求與保持條件:一個進(jìn)程因請求資源而阻塞時,對已獲得的資源保持不放。(3) 不剝奪條件:進(jìn)程已

42、獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。(4) 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發(fā)生死鎖。死鎖的解除與預(yù)防:理解了死鎖的原因,尤其是產(chǎn)生死鎖的四個必要條件,就可以最大可能地避免、預(yù)防和解除死鎖。所以,在系統(tǒng)設(shè)計、進(jìn)程調(diào)度等方面注意如何不讓這四個必要條件成立,如何確定資源的合理分配算法,避免進(jìn)程永久占據(jù)系統(tǒng)資源。此外,也要防止進(jìn)程在處于等待狀態(tài)的情況下占用資源。因此,對資源的分配要給予合理的規(guī)劃。4. 試說明使用游標(biāo)的步驟和方法。答:游標(biāo)(cursor)是系統(tǒng)為用戶開設(shè)

43、的一個數(shù)據(jù)緩沖區(qū),存放SQL語句的執(zhí)行結(jié)果。每個游標(biāo)區(qū)都有一個名字,用戶可以用SQL語句逐一從游標(biāo)中獲取記錄,并賦給主變量,交由主語言進(jìn)一步處理。游標(biāo)提供了一種對從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段。使用游標(biāo)的基本步驟:1、聲明游標(biāo)。把游標(biāo)與T-SQL語句的結(jié)果集聯(lián)系起來。2、打開游標(biāo)。3、使用游標(biāo)操作數(shù)據(jù)。4、關(guān)閉游標(biāo)。第10章 習(xí)題參考答案1. 試說明存儲過程的特點及分類。答:存儲過程(Stored Procedure)是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL 語句集,存儲在數(shù)據(jù)庫中,經(jīng)過第一次編譯后調(diào)用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù)

44、)來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要對象。存儲過程可以分三大類:系統(tǒng)存儲過程:用來管理SQL server和現(xiàn)實有關(guān)數(shù)據(jù)庫和用戶信息的存儲過程過程開頭SP_開頭,存放在master 數(shù)據(jù)庫中擴(kuò)展存儲過程:使用其他變成語言創(chuàng)建外部存儲過程,并將這個存儲過程在SQL server中作為存儲過程來使用。XP_開頭自定義存儲過程:用戶在SQL server 中通過采用SQL語句創(chuàng)建的存儲過程,通常已USP_開頭。2. 創(chuàng)建一個存儲過程,顯示所有價格在15美元以下的書的書名,類型,價格。答:CREATE PROCEDURE show_titleASSELECT title,typ

45、e,priceFROM titlesWHERE price < 15GOEXEC show_title3. 把價格作為參數(shù),創(chuàng)建一個能顯示在某兩個指定價格之間的書的書名,類型,價格。答:CREATE PROCEDURE show_title2 price1 money,price2 moneyASSELECT title,type,priceFROM titlesWHERE price between price1 and price2GOshow_title2 12,204. 使用OUTPUT參數(shù),創(chuàng)建一個計算圓柱體體積的存儲過程。并執(zhí)行它。答:CREATE PROCEDURE com

46、p_area r smallint, h smallint, result decimal(10,2) OUTPUTAS SET result = PI()*SQUARE(r)* hGODECLARE answer decimal(10,2)EXECUTE comp_area 2,3, answer OUTPUTSELECT 'The result is: ', answer5. A) 建立price_change表,準(zhǔn)備用來存放書的價格變化信息,有以下幾列:title_id, type, old_price, new_price, change_date, operator。

47、B) 建立一個更新觸發(fā)器,一旦titles表發(fā)生更新,立即把相關(guān)信息存放到price_change表中。 答:create table price_change(title_id varchar(20),type varchar(20),old_price money,new_price money,change_date datetime,operator varchar(20)go create trigger tri_priceon titlesfor updateasinsert into price_changeselect o.title_id,o.type,o.price,n.p

48、rice,getdate(),user_name()from deleted o JOIN inserted nON o.title_id = n.title_idgoupdate titles set price = price*1.16. 修改習(xí)題5,使得只有當(dāng)price列被更新時,才會觸發(fā)觸發(fā)器。答:create trigger tri_priceon titlesfor updateasif update(price)begin insert into price_change select o.title_id,o.type,o.price,n.price,getdate(),use

49、r_name() from deleted o JOIN inserted n ON o.title_id = n.title_idendgo7. 創(chuàng)建一個存放書的編號、書名、類型、價格、對應(yīng)作者的編號、姓名、電話、住址的視圖。為這個視圖創(chuàng)建一個Instead of更新觸發(fā)器,把對視圖的更新放到觸發(fā)器里面來做。(假設(shè),我們只允許更新這個視圖的某幾個列:price, phone, address)。添加測試數(shù)據(jù)。更新v_titledetail,把書編號為LI1234的書的價格改為200,該書作者的電話該為02512345678use pubsgocreate view v_titledetail

50、asselect t.title_id, title, type, price, a.au_id, au_lname, au_fname, phone, addressfrom titles t,titleauthor ta,authors awhere t.title_id = ta.title_id and ta.au_id = a.au_idcreate trigger tri_titledetailon v_titledetailinstead of updateasdeclare price money, phone varchar(20), address varchar(40),

51、 title_id varchar(20), au_id varchar(20)select title_id = title_id, price = price, au_id = au_id, phone = phone ,address = addressfrom insertedupdate titles set price = price where title_id = title_idupdate authors set phone = phone, address = address where au_id = au_idGoupdate v_titledetail set pr

52、ice = 200, phone = '025123445678'where title_id = 'LI1234'第11章 習(xí)題參考答案1. 填空題(1) 虛表,定義;(2) 視圖分為3種:標(biāo)準(zhǔn)視圖、索引視圖和分區(qū)視圖;(3) 創(chuàng)建視圖使用的T-SQL語句是create view;修改視圖使用的T-SQL語句是alterview;刪除視圖使用的T-SQL語句是drop view。2. 簡答題(1) 視圖的作用是什么?答:視圖主要有以下作用:1. 視圖能夠簡化用戶的操作;2. 視圖使用戶能以多種角度看待同一數(shù)據(jù);3. 視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性;

53、4. 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù);5. 適當(dāng)使用視圖可以更清晰地表達(dá)查詢。(2) 視圖和基本表的主要區(qū)別和聯(lián)系是什么?答:視圖:在SQL中,視圖是外模式一級數(shù)據(jù)結(jié)構(gòu)的基本單位。它是從一個或幾個基本表中導(dǎo)出的表,是從現(xiàn)有基本表中抽取若干子集組成用戶的“專用表”。 基本表:基本表的定義指建立基本關(guān)系模式,而變更則是指對數(shù)據(jù)庫中已存在的基本表進(jìn)行刪除與修改。二者的區(qū)別:1、視圖是已經(jīng)編譯好的sql語句。而表不是2、視圖沒有實際的物理記錄。而表有。3、表是內(nèi)容,視圖是窗口4、表只用物理空間而視圖不占用物理空間,視圖只是邏輯概念的存在,表可以及時四對它進(jìn)行修改,但視圖只能有創(chuàng)建的語句來修改5、表是內(nèi)

54、模式,試圖是外模式6、視圖是查看數(shù)據(jù)表的一種方法,可以查詢數(shù)據(jù)表中某些字段構(gòu)成的數(shù)據(jù),只是一些SQL語句的集合。從安全的角度說,視圖可以不給用戶接觸數(shù)據(jù)表,從而不知道表結(jié)構(gòu)。7、表屬于全局模式中的表,是實表;視圖屬于局部模式的表,是虛表。8、視圖的建立和刪除只影響視圖本身,不影響對應(yīng)的基本表。聯(lián)系:視圖(view)是在基本表之上建立的表,它的結(jié)構(gòu)(即所定義的列)和內(nèi)容(即所有數(shù)據(jù)行)都來自基本表,它依據(jù)基本表存在而存在。一個視圖可以對應(yīng)一個基本表,也可以對應(yīng)多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關(guān)系3. 在教學(xué)管理數(shù)據(jù)庫中完成如下操作:(1) 創(chuàng)建“市場營銷”系的學(xué)生視圖;Cre

55、ate view v-SHICHANGASSELECT *FROM STUDENTWHERE SDEPT=市場營銷(2)創(chuàng)建選修“操作系統(tǒng)”課程的學(xué)生視圖;Create view v-caozuoAs Select *From studentWhere sno in (select sno from sc where cno in (select cno from course where cname=操作系統(tǒng))(3) 在上述視圖的基礎(chǔ)上嘗試是否能插入、刪除、更新記錄。如若不能,請思考原因是什么?答:創(chuàng)建的前一個視圖可以進(jìn)行插入、刪除、更新,第二個不行,因為只有行列子集視圖才能做這些操作。第12章 習(xí)題參考答案1. 假如jack晉升為本部門的主管,想要授予jack查詢“商品銷售”數(shù)據(jù)庫的sales表的權(quán)限,如何完成?答:創(chuàng)建一個部門主管的角色:Create role 部門主管給角色授予權(quán)限:Grant select on sales to 部門主管讓jack擔(dān)當(dāng)這個角色Exec sp_addrolemember 部門主管,jack2. 假如jack調(diào)離本崗位,想要回收jack對sale

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論