數(shù)據(jù)庫(kù)應(yīng)用(SQL Server 2008)課件 趙增敏 項(xiàng)目1-5 初識(shí)SQL Server 2008-檢索數(shù)據(jù)庫(kù)數(shù)據(jù)_第1頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用(SQL Server 2008)課件 趙增敏 項(xiàng)目1-5 初識(shí)SQL Server 2008-檢索數(shù)據(jù)庫(kù)數(shù)據(jù)_第2頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用(SQL Server 2008)課件 趙增敏 項(xiàng)目1-5 初識(shí)SQL Server 2008-檢索數(shù)據(jù)庫(kù)數(shù)據(jù)_第3頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用(SQL Server 2008)課件 趙增敏 項(xiàng)目1-5 初識(shí)SQL Server 2008-檢索數(shù)據(jù)庫(kù)數(shù)據(jù)_第4頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用(SQL Server 2008)課件 趙增敏 項(xiàng)目1-5 初識(shí)SQL Server 2008-檢索數(shù)據(jù)庫(kù)數(shù)據(jù)_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

趙增敏等主編數(shù)據(jù)庫(kù)應(yīng)用

(SQLServer2008)CONTENTS

目錄1項(xiàng)目1初識(shí)SQLServer20082項(xiàng)目2創(chuàng)建和管理數(shù)據(jù)庫(kù)3項(xiàng)目3創(chuàng)建和管理表4項(xiàng)目4操作數(shù)據(jù)庫(kù)數(shù)據(jù)5項(xiàng)目5檢索數(shù)據(jù)庫(kù)數(shù)據(jù)6項(xiàng)目6創(chuàng)建索引和視圖7項(xiàng)目7Transact-SQL程序設(shè)計(jì)8項(xiàng)目8創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器9項(xiàng)目9管理數(shù)據(jù)安全CONTENTS

目錄1項(xiàng)目1初識(shí)SQLServer20082項(xiàng)目2創(chuàng)建和管理數(shù)據(jù)庫(kù)3項(xiàng)目3創(chuàng)建和管理表4項(xiàng)目4操作數(shù)據(jù)庫(kù)數(shù)據(jù)5項(xiàng)目5檢索數(shù)據(jù)庫(kù)數(shù)據(jù)6項(xiàng)目6創(chuàng)建索引和視圖7項(xiàng)目7Transact-SQL程序設(shè)計(jì)8項(xiàng)目8創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器9項(xiàng)目9管理數(shù)據(jù)安全項(xiàng)目1

初識(shí)SQLServer2008CONTENTS

目錄1任務(wù)1了解數(shù)據(jù)庫(kù)2任務(wù)2了解SQLServer20083任務(wù)3安裝SQLServer20084任務(wù)4認(rèn)識(shí)SQLServer2008服務(wù)和管理工具5任務(wù)5管理SQLServer服務(wù)器任務(wù)1了解數(shù)據(jù)庫(kù)相關(guān)知識(shí)數(shù)據(jù)庫(kù)

是為特定目的而組織和表示的信息、表以及其他對(duì)象的集合,數(shù)據(jù)庫(kù)存儲(chǔ)在一個(gè)或多個(gè)文件中。數(shù)據(jù)庫(kù)中的數(shù)據(jù)分為系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)兩類。數(shù)據(jù)庫(kù)可以包含各種各樣的對(duì)象。SQLServer數(shù)據(jù)庫(kù)中包含表、視圖、存儲(chǔ)過(guò)程和函數(shù),也包含觸發(fā)器和程序集、規(guī)則、類型和默認(rèn)值,還包含用戶、角色以及架構(gòu)等。關(guān)系數(shù)據(jù)庫(kù)

在關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)行和數(shù)據(jù)列組成了表;一組表連同其他對(duì)象一起組成了數(shù)據(jù)庫(kù)。在關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)可以存儲(chǔ)在不同的表中。每個(gè)表包含某個(gè)特定主題的數(shù)據(jù)。表中的一列通常也稱為字段,每個(gè)字段用于存儲(chǔ)某種特性的數(shù)據(jù)。表中的一行通常也稱為一條記錄,每條記錄包含表中一項(xiàng)的相關(guān)信息。數(shù)據(jù)庫(kù)管理系統(tǒng)

數(shù)據(jù)庫(kù)管理系統(tǒng)是對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理的軟件系統(tǒng),它提供了用戶與數(shù)據(jù)庫(kù)之間的軟件界面,可以用于創(chuàng)建、管理和維護(hù)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)管理系統(tǒng)通常具有數(shù)據(jù)庫(kù)定義、數(shù)據(jù)庫(kù)操作和數(shù)據(jù)控制功能。SQL語(yǔ)言

SQL即結(jié)構(gòu)化查詢語(yǔ)言,可用于檢索、插入、修改和刪除關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)以及于定義和管理數(shù)據(jù)庫(kù)中的對(duì)象。SQL是一種關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,它具有數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制功能。任務(wù)2了解SQLServer2008相關(guān)知識(shí)SQLServer2008的版本企業(yè)版:全面的數(shù)據(jù)管理和商業(yè)智能平臺(tái)。標(biāo)準(zhǔn)版:完整的數(shù)據(jù)管理和商業(yè)智能平臺(tái)。工作組版:可信賴的數(shù)據(jù)管理和報(bào)表平臺(tái)。網(wǎng)絡(luò)版:提供低成本、大規(guī)模、高度可用的Web應(yīng)用程序或主機(jī)解決方案。移動(dòng)版:免費(fèi)的嵌入式SQLServer數(shù)據(jù)庫(kù)。學(xué)習(xí)版:提供學(xué)習(xí)和創(chuàng)建桌面應(yīng)用程序和小型應(yīng)用程序并可被獨(dú)立軟件廠商重新發(fā)布的免費(fèi)版本。SQLServer2008的新增功能可信賴:提供了最高級(jí)別的可靠性和伸縮性,使得公司可以安全地運(yùn)行最關(guān)鍵任務(wù)的應(yīng)用程序。高效率:減少了開發(fā)和管理應(yīng)用程序的時(shí)間和成本,使得公司可以快速創(chuàng)建和部署數(shù)據(jù)驅(qū)動(dòng)的解決方案,從而抓住當(dāng)今風(fēng)云變幻的商業(yè)機(jī)會(huì)。智能化:提供了全面的數(shù)據(jù)平臺(tái),可在用戶需要的時(shí)候提供發(fā)送信息。任務(wù)3安裝SQLServer2008任務(wù)描述安裝SQLServer2008R2標(biāo)準(zhǔn)版。任務(wù)實(shí)現(xiàn)選擇全新安裝或向現(xiàn)有安裝添加功能安裝安裝程序支持文件輸入產(chǎn)品密鑰;接受許可條款從“功能”列表中選擇所需的功能指定SQLServer實(shí)例的名稱和實(shí)例ID對(duì)每個(gè)SQLServer服務(wù)設(shè)置賬戶名、密碼和啟動(dòng)類型配置數(shù)據(jù)庫(kù)引擎,選擇身份驗(yàn)證模式配置AnalysisServices,指定當(dāng)前用戶對(duì)分析服務(wù)具有管理權(quán)限配置ReportingServices,指定報(bào)表服務(wù)的配置模式完成安裝過(guò)程任務(wù)4認(rèn)識(shí)SQLServer2008服務(wù)和管理工具任務(wù)描述了解SQLServer2008提供的服務(wù)器組件和管理工具相關(guān)知識(shí)SQLServer服務(wù)器組件數(shù)據(jù)庫(kù)引擎:用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。分析服務(wù):用于設(shè)計(jì)、創(chuàng)建和管理多維數(shù)據(jù)。報(bào)表服務(wù):是基于服務(wù)器的報(bào)表平臺(tái),為各種數(shù)據(jù)源提供了完善的報(bào)表功能。集成服務(wù):是一組圖形工具和可編程對(duì)象,用于移動(dòng)、復(fù)制和轉(zhuǎn)換數(shù)據(jù)。SQLServerManagementStudio一個(gè)集成環(huán)境,用于訪問(wèn)、配置、管理和開發(fā)SQLServer的組件。SQLServer配置管理器管理與SQLServer相關(guān)聯(lián)的服務(wù)、配置SQLServer使用的網(wǎng)絡(luò)協(xié)議以及從SQLServer客戶端計(jì)算機(jī)管理網(wǎng)絡(luò)連接配置。SQLServerProfilerSQLServerProfiler是用于從服務(wù)器捕獲SQLServer事件的工具。任務(wù)5管理SQLServer服務(wù)器管理服務(wù)器注冊(cè)SQLServer數(shù)據(jù)庫(kù)引擎服務(wù)器對(duì)于已注冊(cè)的服務(wù)器,可執(zhí)行以下操作。基于服務(wù)器創(chuàng)建查詢將對(duì)象資源管理器連接到服務(wù)器編輯服務(wù)器的注冊(cè)信息將已注冊(cè)的服務(wù)器信息導(dǎo)出到文件更改服務(wù)器的狀態(tài)刪除服務(wù)器的注冊(cè)信息管理服務(wù)器組創(chuàng)建服務(wù)器組對(duì)已注冊(cè)的服務(wù)器組可執(zhí)行以下操作。編輯服務(wù)器組的屬性在服務(wù)器組中注冊(cè)新服務(wù)器將注冊(cè)服務(wù)器移動(dòng)到服務(wù)器組向服務(wù)器組中導(dǎo)入注冊(cè)服務(wù)器刪除服務(wù)器組1項(xiàng)目1初識(shí)SQLServer20082項(xiàng)目2創(chuàng)建和管理數(shù)據(jù)庫(kù)3項(xiàng)目3創(chuàng)建和管理表4項(xiàng)目4操作數(shù)據(jù)庫(kù)數(shù)據(jù)5項(xiàng)目5檢索數(shù)據(jù)庫(kù)數(shù)據(jù)6項(xiàng)目6創(chuàng)建索引和視圖7項(xiàng)目7Transact-SQL程序設(shè)計(jì)8項(xiàng)目8創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器9項(xiàng)目9管理數(shù)據(jù)安全CONTENTS目錄項(xiàng)目2

創(chuàng)建和管理數(shù)據(jù)庫(kù)CONTENTS

目錄任務(wù)1初識(shí)SQLServer數(shù)據(jù)庫(kù)任務(wù)2了解SQLServer系統(tǒng)數(shù)據(jù)庫(kù)任務(wù)3認(rèn)識(shí)數(shù)據(jù)庫(kù)狀態(tài)和文件狀態(tài)任務(wù)4創(chuàng)建數(shù)據(jù)庫(kù)任務(wù)5設(shè)置數(shù)據(jù)庫(kù)為脫機(jī)狀態(tài)任務(wù)6擴(kuò)展數(shù)據(jù)庫(kù)任務(wù)7收縮數(shù)據(jù)庫(kù)任務(wù)8擴(kuò)展事務(wù)日志任務(wù)9創(chuàng)建文件組任務(wù)10分離和附加數(shù)據(jù)庫(kù)任務(wù)11重命名數(shù)據(jù)庫(kù)項(xiàng)目12更改數(shù)據(jù)庫(kù)所有者任務(wù)13刪除數(shù)據(jù)庫(kù)任務(wù)14備份數(shù)據(jù)庫(kù)任務(wù)15還原數(shù)據(jù)庫(kù)任務(wù)1認(rèn)識(shí)SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)基本概念SQLServer數(shù)據(jù)庫(kù)由一個(gè)表集合組成。這些表包含數(shù)據(jù)以及為支持對(duì)數(shù)據(jù)執(zhí)行的活動(dòng)而定義的其他對(duì)象。表中包含行(也稱為記錄或元組)和列(也稱為字段或?qū)傩裕┑募?。表上有幾種類型的控制,例如約束、觸發(fā)器、默認(rèn)值和自定義用戶數(shù)據(jù)類型,用于保證數(shù)據(jù)的有效性。文件與文件組每個(gè)SQLServer數(shù)據(jù)庫(kù)至少具有兩個(gè)文件:一個(gè)數(shù)據(jù)文件和一個(gè)日志文件。數(shù)據(jù)文件包含數(shù)據(jù)和對(duì)象,例如表、索引、存儲(chǔ)過(guò)程和視圖。日志文件包含恢復(fù)數(shù)據(jù)庫(kù)中的所有事務(wù)所需的信息。數(shù)據(jù)庫(kù)文件分為主要數(shù)據(jù)庫(kù)文件、次要數(shù)據(jù)庫(kù)文件和事務(wù)日志文件。每個(gè)數(shù)據(jù)庫(kù)有一個(gè)主要文件組。此文件組包含主要數(shù)據(jù)文件和未放入其他文件組的所有次要文件,所有系統(tǒng)表也都被分配到主要文件組中。也可以創(chuàng)建用戶定義的文件組,用于將數(shù)據(jù)文件集合起來(lái),以便于管理、數(shù)據(jù)分配和放置。事務(wù)日志每個(gè)SQLServer2008數(shù)據(jù)庫(kù)都具有事務(wù)日志,用于記錄所有事務(wù)以及每個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改。事務(wù)日志是數(shù)據(jù)庫(kù)的重要組件,如果系統(tǒng)出現(xiàn)故障,則可能需要使用事務(wù)日志將數(shù)據(jù)庫(kù)恢復(fù)到一致狀態(tài)。刪除或移動(dòng)事務(wù)日志以前,必須完全了解此操作帶來(lái)的后果。任務(wù)2了解SQLServer系統(tǒng)數(shù)據(jù)庫(kù)master數(shù)據(jù)庫(kù)用于記錄SQLServer系統(tǒng)的所有系統(tǒng)級(jí)信息,包括實(shí)例范圍的元數(shù)據(jù)(例如登錄賬戶)、端點(diǎn)、鏈接服務(wù)器和系統(tǒng)配置設(shè)置。master數(shù)據(jù)庫(kù)還記錄了所有其他數(shù)據(jù)庫(kù)的存在、數(shù)據(jù)庫(kù)文件的位置以及SQLServer的初始化信息。model數(shù)據(jù)庫(kù)用作在SQLServer服務(wù)器實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫(kù)的模板。model數(shù)據(jù)庫(kù)必須始終存在于SQLServer系統(tǒng)中。當(dāng)創(chuàng)建數(shù)據(jù)庫(kù)時(shí),將通過(guò)復(fù)制model數(shù)據(jù)庫(kù)中的內(nèi)容來(lái)創(chuàng)建數(shù)據(jù)庫(kù)的第一部分,然后用空頁(yè)填充新數(shù)據(jù)庫(kù)的剩余部分。如果修改model數(shù)據(jù)庫(kù),則以后創(chuàng)建的所有數(shù)據(jù)庫(kù)都將繼承這些修改。msdb數(shù)據(jù)庫(kù)由SQLServer代理用于計(jì)劃警報(bào)和作業(yè),或由其他功能(如ServiceBroker和數(shù)據(jù)庫(kù)郵件)使用。Resource數(shù)據(jù)庫(kù)它是只讀數(shù)據(jù)庫(kù),包含SQLServer中的所有系統(tǒng)對(duì)象。SQLServer系統(tǒng)對(duì)象(如sys.objects)在物理上保留在Resource數(shù)據(jù)庫(kù)中,但在邏輯上卻顯示在每個(gè)數(shù)據(jù)庫(kù)的sys架構(gòu)中。Resource數(shù)據(jù)庫(kù)不包含用戶數(shù)據(jù)或用戶元數(shù)據(jù)。tempdb數(shù)據(jù)庫(kù)tempdb系統(tǒng)數(shù)據(jù)庫(kù)是一個(gè)全局資源,可供連接到SQLServer實(shí)例的所有用戶使用,可用于保存各種臨時(shí)對(duì)象。任務(wù)3認(rèn)識(shí)數(shù)據(jù)庫(kù)狀態(tài)和文件狀態(tài)數(shù)據(jù)庫(kù)狀態(tài)數(shù)據(jù)庫(kù)總是處于一個(gè)特定的狀態(tài)中等。若要確認(rèn)數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài),可選擇sys.databases目錄視圖中的state_desc列或DATABASEPROPERTYEX函數(shù)中的Status屬性。ONLINE:在線狀態(tài)或聯(lián)機(jī)狀態(tài);OFFLINE:離線狀態(tài)或脫機(jī)狀態(tài);RESTORING:恢復(fù)狀態(tài);RECOVERING:還原狀態(tài);RECOVERYPENDING:恢復(fù)未完成狀態(tài);SUSPECT:可疑狀態(tài);EMERGENCY:緊急狀態(tài)文件狀態(tài)ONLINE:在線狀態(tài);OFFLINE:離線狀態(tài);RESTORING:還原狀態(tài);RECOVERYPENDING:恢復(fù)未完成狀態(tài);SUSPECT:可疑狀態(tài)任務(wù)4創(chuàng)建數(shù)據(jù)庫(kù)使用SQLServerManagementStudio創(chuàng)建數(shù)據(jù)庫(kù)在對(duì)象資源管理器中,連接并展開SQLServer數(shù)據(jù)庫(kù)引擎實(shí)例右鍵單擊“數(shù)據(jù)庫(kù)”,選擇“新建數(shù)據(jù)庫(kù)”命令指定數(shù)據(jù)庫(kù)的名稱接受所有默認(rèn)值來(lái)創(chuàng)建數(shù)據(jù)庫(kù),或?qū)δJ(rèn)值進(jìn)行修改并創(chuàng)建數(shù)據(jù)庫(kù)使用CREATEDATABASE語(yǔ)句按默認(rèn)設(shè)置創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEDB02;使用CREATEDATABASE語(yǔ)句按指定要求創(chuàng)建數(shù)據(jù)庫(kù)CREATEDATABASEgoodsONPRIMARY(NAME=goods_data,FILENAME='d:\mssql\goods.mdf',SIZE=3MB,MAXSIZE=50MB,FILEGROWTH=1MB)LOGON(

NAME=goods_log,FILENAME='d:\mssql\goods.ldf',

SIZE=1MB,MAXSIZE=25MB,FILEGROWTH=5%);相關(guān)知識(shí)CREATEDATABASE語(yǔ)句CREATEDATABASEdatabase_name

[ON

[PRIMARY][<filespec>[,...n]

[,<filegroup>[,...n]]

[LOGON{<filespec>[,...n]}]]

[COLLATEcollation_name]][;]Transact-SQL語(yǔ)法約定任務(wù)5

設(shè)置數(shù)據(jù)庫(kù)為脫機(jī)狀態(tài)任務(wù)實(shí)現(xiàn)USEmaster;GOALTERDATABASEDB01SETOFFLINE;GO數(shù)據(jù)庫(kù)選項(xiàng)自動(dòng)選項(xiàng):控制某些自動(dòng)行為。如AUTO_CLOSE選項(xiàng)游標(biāo)選項(xiàng):控制游標(biāo)的行為和范圍。如CURSOR_CLOSE_ON_COMMIT、CURSOR_DEFAULT選項(xiàng)數(shù)據(jù)庫(kù)可用性選項(xiàng):控制數(shù)據(jù)庫(kù)是聯(lián)機(jī)還是脫機(jī)等外部訪問(wèn)選項(xiàng):控制是否允許外部資源(如另一個(gè)數(shù)據(jù)庫(kù)中的對(duì)象)訪問(wèn)數(shù)據(jù)庫(kù)。如DB_CHAINING選項(xiàng)參數(shù)化選項(xiàng)PARAMETERIZATION:控制參數(shù)化選項(xiàng)?;謴?fù)選項(xiàng):控制數(shù)據(jù)庫(kù)的恢復(fù)模式。如RECOVERY選項(xiàng)快照隔離選項(xiàng),確定事務(wù)隔離級(jí)別。SQL選項(xiàng),用于控制ANSI相容性選項(xiàng)。任務(wù)5

擴(kuò)展數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)ALTERDATABASEDB02MODIFYFILE(NAME=DB02,SIZE=5MB);GOALTERDATABASEDB02ADDFILE(NAME=DBData,FILENAME='d:\mssql\MyDBData.ldf',SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=10%);GOALTERDATABASE語(yǔ)句用于修改與數(shù)據(jù)庫(kù)關(guān)聯(lián)的文件和文件組,可以在數(shù)據(jù)庫(kù)中添加或刪除文件和文件組、更改數(shù)據(jù)庫(kù)或其文件和文件組的屬性任務(wù)6收縮數(shù)據(jù)庫(kù)(1)使用SQLServerManagementStudio收縮數(shù)據(jù)文件在對(duì)象資源管理器中連接到SQLServer數(shù)據(jù)庫(kù)引擎實(shí)例。右鍵單擊要收縮的數(shù)據(jù)庫(kù),選擇“任務(wù)”→“收縮”→“文件”命令。從“文件類型”列表中選擇“數(shù)據(jù)”,從“文件名”列表中選擇數(shù)據(jù)文件。根據(jù)需要,選中“在釋放未使用的空間前重新組織頁(yè)”選項(xiàng)。在“將文件收縮到”框中輸入數(shù)字。單擊“確定”按鈕。從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)文件在ALTERDATABASE語(yǔ)句中使用REMOVEFILE子句從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)文件。任務(wù)6收縮數(shù)據(jù)庫(kù)(2)相關(guān)知識(shí)自動(dòng)收縮數(shù)據(jù)庫(kù)ALTERDATABASEdatabase_nameSETAUTO_SHRINKON;使用DBCCSHRINKDATABASE收縮數(shù)據(jù)庫(kù)DBCCSHRINKDATABASE(database_name|database_id|0,target_percent)使用DBCCSHRINKFILE收縮數(shù)據(jù)庫(kù)DBCCSHRINKFILE({file_name|file_id},target_size)任務(wù)7擴(kuò)展事務(wù)日志任務(wù)實(shí)現(xiàn)CREATEDATABASElibrary;GOALTERDATABASElibraryADDLOGFILE(NAME='library_log2',FILENAME='d:\mssql\library_log2.ldf',SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=10%);GOALTERDATABASElibraryMODIFYFILE(NAME='library_log',SIZE=10MB);相關(guān)知識(shí)當(dāng)一個(gè)數(shù)據(jù)庫(kù)增長(zhǎng)或數(shù)據(jù)庫(kù)修改活動(dòng)增加時(shí),可能需要對(duì)事務(wù)日志進(jìn)行擴(kuò)展。如果事務(wù)日志使用完了空間,SQLServer便不能記錄事務(wù),也不允許對(duì)數(shù)據(jù)進(jìn)行修改。任務(wù)8創(chuàng)建文件組任務(wù)實(shí)現(xiàn)ALTERDATABASElibrary

ADDFILEGROUPlibrary_fg

GO

ALTERDATABASElibrary

ADDFILE

(NAME=library_data2,FILENAME='d:\mssql\library_data3.ndf',SIZE=10MB,MAXSIZE=20MB,FILEGROWTH=1MB),

(NAME=library_data3,FILENAME='d:\mssql\library_data4.ndf',SIZE=10MB,MAXSIZE=20MB,FILEGROWTH=1MB)

TOFILEGROUPlibrary_fg

GO

ALTERDATABASElibrary

MODIFYFILEGROUPlibrary_fgDEFAULT

GO相關(guān)知識(shí)文件組是在數(shù)據(jù)庫(kù)中對(duì)文件進(jìn)行分組的一種管理機(jī)制。文件組不能獨(dú)立于數(shù)據(jù)庫(kù)文件創(chuàng)建。首次創(chuàng)建數(shù)據(jù)庫(kù)或者以后將更多文件添加到數(shù)據(jù)庫(kù)時(shí),都可以創(chuàng)建文件組。一旦將文件添加到數(shù)據(jù)庫(kù)中,就不可能再將這些文件移到其他文件組。一個(gè)文件不能是多個(gè)文件組的成員。文件組只能包含數(shù)據(jù)文件。事務(wù)日志文件不能是文件組的一部分。任務(wù)9分離和附加數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)CREATEDATABASETest

ONPRIMARY(NAME=Test,FILENAME='d:\mssql\test.mdf')

LOGON(NAME=Test_Log,FILENAME='d:\mssql\test.ldf')

GO

EXECsp_detach_dbTest;

GO

CREATEDATABASETest

ON(FILENAME='d:\mssql\test.mdf')FORATTACH;GO相關(guān)知識(shí)分離數(shù)據(jù)庫(kù)

是指將數(shù)據(jù)庫(kù)從SQLServer實(shí)例中刪除,但使數(shù)據(jù)庫(kù)在其數(shù)據(jù)文件和事務(wù)日志文件中保持不變。此后可以使用這些文件將數(shù)據(jù)庫(kù)附加到任何SQLServer實(shí)例,包括分離該數(shù)據(jù)庫(kù)的服務(wù)器。分離數(shù)據(jù)庫(kù)既可以使用SQLServerManagementStudio工具來(lái)實(shí)現(xiàn),也可以通過(guò)執(zhí)行sp_detach_db系統(tǒng)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)。附加數(shù)據(jù)庫(kù)

若要將分離后的數(shù)據(jù)庫(kù)重新附加到SQLServer實(shí)例中,可以使用SQLServerManagementStudio來(lái)實(shí)現(xiàn),也可以通過(guò)在CREATEDATABASE語(yǔ)句中使用FORATTACH子句來(lái)實(shí)現(xiàn)。任務(wù)10重命名數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)ALTERDATABASEDB01

SETSINGLE_USER;

GO

ALTERDATABASEDB01

MODIFYNAME=Demo;

GO

ALTERDATABASEDemo

SETMULTI_USER;

GO相關(guān)知識(shí)使用SQLServerManagementStudio重命名數(shù)據(jù)庫(kù):在對(duì)象資源管理器中右鍵單擊數(shù)據(jù)庫(kù)并選擇“重命名”命令,然后輸入新的數(shù)據(jù)庫(kù)名稱。在ALTERDATABASE語(yǔ)句中使用MODIFYNAME=new_database_name子句來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的重命名。任務(wù)11更改數(shù)據(jù)庫(kù)所有者任務(wù)實(shí)現(xiàn)ALTERAUTHORIZATIONONDATABASE::libraryTO[ABC\Jack];GO相關(guān)知識(shí)在SQLServer中,可以更改當(dāng)前數(shù)據(jù)庫(kù)的所有者。任何擁有連接到SQLServer的訪問(wèn)權(quán)限的用戶(SQLServer登錄賬戶或Windows用戶)均可以成為數(shù)據(jù)庫(kù)的所有者。無(wú)法更改系統(tǒng)數(shù)據(jù)庫(kù)的所有權(quán)。更改數(shù)據(jù)庫(kù)的所有者使用SQLServerManagementStudio工具來(lái)實(shí)現(xiàn)用ALTERAUTHORIZATION語(yǔ)句來(lái)更改數(shù)據(jù)庫(kù)的所有者.任務(wù)12刪除數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)DROPDATABASEDB02,Demo相關(guān)知識(shí)刪除數(shù)據(jù)庫(kù)在SQLServerManagementStudio對(duì)象資源管理器中右鍵單擊該數(shù)據(jù)庫(kù),選擇“刪除”命令,當(dāng)出現(xiàn)“刪除對(duì)象”對(duì)話框時(shí)單擊“確定”按鈕。使用DROPDATABASE來(lái)刪除數(shù)據(jù)庫(kù),語(yǔ)法格式如下:DROPDATABASEdatabase_name[,...n]示例DROPDATABASESales,NewSales;任務(wù)13備份數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)EXECsp_addumpdevice'disk','AdvWorksData',

'd:\mssql\backup\AdvWorksData.bak';

BACKUPDATABASEAdventureWorksTOAdvWorksData;

GO相關(guān)知識(shí)備份是數(shù)據(jù)的副本,可用于在系統(tǒng)發(fā)生故障后還原和恢復(fù)數(shù)據(jù)。使用備份可以在發(fā)生故障后還原數(shù)據(jù)。通過(guò)適當(dāng)?shù)膫浞菘梢詮亩喾N故障中恢復(fù),包括媒體故障、用戶錯(cuò)誤(例如誤刪除了某個(gè)表)、硬件故障(例如磁盤驅(qū)動(dòng)器損壞或服務(wù)器報(bào)廢)以及自然災(zāi)難等。此外,數(shù)據(jù)庫(kù)備份對(duì)于例行的工作也很有用,例如,將數(shù)據(jù)庫(kù)從一臺(tái)服務(wù)器復(fù)制到另一臺(tái)服務(wù)器、設(shè)置數(shù)據(jù)庫(kù)鏡像、政府機(jī)構(gòu)文件歸檔和災(zāi)難恢復(fù)。使用SQLServerManagementStudio備份數(shù)據(jù)庫(kù)使用BACKUPDATABASE語(yǔ)句備份數(shù)據(jù)庫(kù)任務(wù)14還原數(shù)據(jù)庫(kù)任務(wù)實(shí)現(xiàn)RESTOREDATABASEAdventureWorksFROMAdvWorksData;相關(guān)知識(shí)使用SQLServerManagementStudio還原數(shù)據(jù)庫(kù)使用RESTORE語(yǔ)句還原數(shù)據(jù)庫(kù)1項(xiàng)目1初識(shí)SQLServer20082項(xiàng)目2創(chuàng)建和管理數(shù)據(jù)庫(kù)3項(xiàng)目3創(chuàng)建和管理表4項(xiàng)目4操作數(shù)據(jù)庫(kù)數(shù)據(jù)5項(xiàng)目5檢索數(shù)據(jù)庫(kù)數(shù)據(jù)6項(xiàng)目6創(chuàng)建索引和視圖7項(xiàng)目7Transact-SQL程序設(shè)計(jì)8項(xiàng)目8創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器9項(xiàng)目9管理數(shù)據(jù)安全CONTENTS目錄項(xiàng)目3創(chuàng)建和管理表CONTENTS

目錄任務(wù)1表的設(shè)計(jì)任務(wù)2認(rèn)識(shí)SQLServer數(shù)據(jù)類型任務(wù)3創(chuàng)建表任務(wù)4在表中添加列任務(wù)5修改列的屬性任務(wù)6在表中創(chuàng)建標(biāo)識(shí)列任務(wù)7在表中創(chuàng)建主鍵任務(wù)8在表中創(chuàng)建唯一約束任務(wù)9在表中創(chuàng)建檢查約束任務(wù)10在表中創(chuàng)建列的默認(rèn)值任務(wù)11在表中創(chuàng)建外鍵項(xiàng)目12創(chuàng)建數(shù)據(jù)庫(kù)關(guān)系圖任務(wù)13查看表的定義和數(shù)據(jù)任務(wù)14重命名表任務(wù)15從數(shù)據(jù)庫(kù)中刪除表任務(wù)1表的設(shè)計(jì)任務(wù)實(shí)現(xiàn)對(duì)相關(guān)部門進(jìn)行調(diào)查,在此基礎(chǔ)上進(jìn)行需求分析,確定數(shù)據(jù)庫(kù)中包含的表確定每個(gè)表中包含的哪些列、每個(gè)列是何種數(shù)據(jù)類型以及在哪個(gè)列建立主鍵使用OfficeVisio軟件繪制出數(shù)據(jù)庫(kù)模型圖相關(guān)知識(shí)制訂表規(guī)劃表要存儲(chǔ)什么對(duì)象;表中每一列的數(shù)據(jù)類型和長(zhǎng)度表中哪些列允許空值;是否要使用以及在何處使用約束、默認(rèn)值和規(guī)則使用何種索引以及在何處使用索引;哪些列是主鍵或外鍵規(guī)范化邏輯設(shè)計(jì)表應(yīng)該有一個(gè)標(biāo)識(shí)符;表應(yīng)只存儲(chǔ)單一類型實(shí)體的數(shù)據(jù)表應(yīng)避免可為空的列;表不應(yīng)有重復(fù)的值或列任務(wù)2認(rèn)識(shí)SQLServer數(shù)據(jù)類型(1)任務(wù)實(shí)現(xiàn)使用SQLServerManagementStudio創(chuàng)建用戶定義數(shù)據(jù)類型使用CREATETYPE語(yǔ)句創(chuàng)建用戶定義數(shù)據(jù)類型相關(guān)知識(shí)數(shù)據(jù)類型概述:數(shù)據(jù)類型是一種屬性,用于指定對(duì)象可保存的數(shù)據(jù)的類型:整數(shù)數(shù)據(jù)、字符數(shù)據(jù)、貨幣數(shù)據(jù)、日期和時(shí)間數(shù)據(jù)以及二進(jìn)制字符串等。在SQLServer中,每個(gè)列、局部變量、表達(dá)式和參數(shù)都具有一個(gè)相關(guān)的數(shù)據(jù)類型。數(shù)字?jǐn)?shù)據(jù)類型:bigint、int、smallint、tinyint和bit。小數(shù)類型:近似數(shù)字類型float(n)和real、精確數(shù)字類型decimal(p,s)和numeric(p,s)以及貨幣數(shù)字類型money和smallmoney。任務(wù)2認(rèn)識(shí)SQLServer數(shù)據(jù)類型(2)字符串?dāng)?shù)據(jù)類型普通字符串:包括固定長(zhǎng)度字符串類型char(n)、可變長(zhǎng)度字符串類型varchar(n)和文本類型text。Unicode字符串:包括固定長(zhǎng)度字符串類型nchar(n)、可變長(zhǎng)度字符串類型nvarchar(n)和文本類型ntext。二進(jìn)制數(shù)據(jù)類型:包括固定長(zhǎng)度二進(jìn)制數(shù)據(jù)類型binary(n)、可變長(zhǎng)度二進(jìn)制數(shù)據(jù)類型varbinary(n)和大量二進(jìn)制數(shù)據(jù)類型image。日期和時(shí)間數(shù)據(jù)類型:date、datetime、datetime2、datetimeoffset、smalldatetime以及time。其他數(shù)據(jù)類型:cursor、hierarchyid、sql_variant、table、timestamp、uniqueidetifier以及xml別名數(shù)據(jù)類型:使用SQLServerManagementStudio工具來(lái)創(chuàng)建和刪除別名數(shù)據(jù)類型,或者使用CREATETYPE和DROPTYPE語(yǔ)句來(lái)創(chuàng)建和刪除別名數(shù)據(jù)類型。任務(wù)3創(chuàng)建表任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);

GO

CREATETABLE系別(

系別編號(hào)dep_numIDENTITY(1,1),系別名稱varchar(50)NOTNULL

);

CREATETABLE班級(jí)(

班級(jí)編號(hào)class_num,系別編號(hào)dep_num,專業(yè)名稱varchar(50)NOTNULL

);相關(guān)知識(shí)使用表設(shè)計(jì)器創(chuàng)建表使用CREATETABLE語(yǔ)句創(chuàng)建表任務(wù)4在表中添加列任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);

GO

CREATETABLE課程(

課程編號(hào)intNOTNULL,課程名稱varchar(20)NOTNULL

);

GO

ALTERTABLE課程

ADD課程類別char(8)NOTNULL,考試類別char(4)NOTNULL;

GO相關(guān)知識(shí)使用表設(shè)計(jì)器添加或刪除表列使用ALTERTABLE語(yǔ)句中添加或刪除表列任務(wù)5修改列的屬性任務(wù)實(shí)現(xiàn)CREATETYPEcourse_num

FROMsmallintNOTNULL;

GO

ALTERTABLE課程

ALTERCOLUMN課程編號(hào)course_num;

GO

ALTERTABLE課程

ALTERCOLUMN課程名稱varchar(50)NOTNULL;

GO相關(guān)知識(shí)表中的每一列都具有一組屬性,例如名稱、數(shù)據(jù)類型、為空性以及數(shù)據(jù)長(zhǎng)度等。列的所有屬性構(gòu)成表中列的定義。創(chuàng)建表時(shí),可以對(duì)各列的屬性進(jìn)行設(shè)置。創(chuàng)建表之后,還可以根據(jù)需要對(duì)列的屬性進(jìn)行修改。若要設(shè)置列屬性,可使用表設(shè)計(jì)器或ALTERTABLE語(yǔ)句來(lái)實(shí)現(xiàn)。任務(wù)6在表中創(chuàng)建標(biāo)識(shí)列任務(wù)實(shí)現(xiàn)ALTERTABLE課程

DROPCOLUMN課程編號(hào);

GO

ALTERTABLE課程

ADD課程編號(hào)course_numIDENTITY(1,1);

GO相關(guān)知識(shí)通過(guò)使用IDENTITY屬性可以實(shí)現(xiàn)標(biāo)識(shí)列,這使得開發(fā)人員可以為表中所插入的第一行指定一個(gè)標(biāo)識(shí)號(hào)(稱為種子),并確定要添加到種子上的增量以確定后面的標(biāo)識(shí)號(hào)。一個(gè)表只能有一個(gè)使用IDENTITY屬性定義的列,并且必須通過(guò)使用decimal、int、numeric、smallint、bigint或tinyint數(shù)據(jù)類型來(lái)定義該列。種子和增量的默認(rèn)值均為1。任務(wù)7在表中創(chuàng)建主鍵任務(wù)實(shí)現(xiàn)CREATETABLE教師(

教師編號(hào)smallintNOTNULL

IDENTITY(1,1)PRIMARYKEYCLUSTERED,

...

);

GO

ALTERTABLE系別

ADDCONSTRAINTPK_系別PRIMARYKEYCLUSTERED(系別編號(hào));

GO相關(guān)知識(shí)表通常具有包含唯一標(biāo)識(shí)表中每一行的值的一列或一組列,這樣的一列或多列稱為表的主鍵(PRIMARYKEY,PK),主鍵用于強(qiáng)制表的實(shí)體完整性。在創(chuàng)建或修改表時(shí),可以通過(guò)定義PRIMARYKEY約束來(lái)創(chuàng)建主鍵。一個(gè)表只能有一個(gè)PRIMARYKEY約束,并且PRIMARYKEY約束中的列不能接受空值。由于PRIMARYKEY約束可保證數(shù)據(jù)的唯一性,因此通常對(duì)標(biāo)識(shí)列定義這種約束。任務(wù)8在表中創(chuàng)建唯一約束任務(wù)實(shí)現(xiàn)ALTERTABLE課程

ADDCONSTRAINTPK_課程PRIMARYKEYCLUSTERED(課程編號(hào));

GO

ALTERTABLE課程

ADDCONSTRAINTUK_課程UNIQUENONCLUSTERED(課程名稱);

GO相關(guān)知識(shí)唯一約束即UNIQUE約束。通過(guò)創(chuàng)建唯一約束可以確保在非主鍵列中不輸入重復(fù)的值。UNIQUE約束和PRIMARYKEY約束都強(qiáng)制唯一性,但要想強(qiáng)制一列或多列組合(不是主鍵)的唯一性時(shí)就應(yīng)該使用UNIQUE約束。對(duì)一個(gè)表可以定義多個(gè)UNIQUE約束,但只能定義一個(gè)PRIMARYKEY約束。UNIQUE約束允許NULL值,這一點(diǎn)不同于PRIMARYKEY約束。當(dāng)與參與UNIQUE約束的任何值一起使用時(shí),每列只允許一個(gè)空值。FOREIGNKEY約束可以引用UNIQUE約束。任務(wù)9在表中創(chuàng)建檢查約束任務(wù)實(shí)現(xiàn)CREATETABLE學(xué)生(

學(xué)號(hào)stu_numPRIMARYKEYCHECK(學(xué)號(hào)LIKE'[0-9][0-9][0-9][0-9][0-9][0-9]'),

班級(jí)編號(hào)class_num,姓名name,

性別char(2)NOTNULLCHECK(性別='男'OR性別='女'),

出生日期dateNOTNULL,入學(xué)日期dateNOTNULL,

政治面貌char(8)CHECK(政治面貌='中共黨員'OR政治面貌='共青團(tuán)員'),

...);GO相關(guān)知識(shí)檢查約束即CHECK約束。檢查約束通過(guò)限制列可接受的值以強(qiáng)制域的完整性。CHECK約束通過(guò)不基于其他列中的數(shù)據(jù)的邏輯表達(dá)式來(lái)確定有效值??梢酝ㄟ^(guò)任何基于邏輯運(yùn)算符返回TRUE或FALSE的邏輯(布爾)表達(dá)式來(lái)創(chuàng)建CHECK約束。任務(wù)10在表中創(chuàng)建列的默認(rèn)值任務(wù)實(shí)現(xiàn)ALTERTABLE教師ADDCONSTRAINTdf_教師DEFAULT('大學(xué)')FOR學(xué)歷;GO相關(guān)知識(shí)在數(shù)據(jù)庫(kù)中,記錄中的每列均必須有值,即使該值是NULL。在實(shí)際應(yīng)用中可能會(huì)有這種情況:必須向表中加載一行數(shù)據(jù)但不知道某一列的值,或該值尚不存在。如果列允許空值,就可以為行加載空值。由于可能不希望有可為空的列,因此最好是為列定義DEFAULT定義(如果合適)。當(dāng)將某行加載到某列具有DEFAULT定義的表中時(shí),即隱式指示SQLServer2008數(shù)據(jù)庫(kù)引擎將默認(rèn)值插入到?jīng)]有指定值的列中。如果列不允許空值且沒(méi)有DEFAULT定義,就必須為該列顯式指定值,否則數(shù)據(jù)庫(kù)引擎會(huì)返回錯(cuò)誤,指出該列不允許空值。任務(wù)11在表中創(chuàng)建外鍵任務(wù)實(shí)現(xiàn)CREATETABLE成績(jī)(

學(xué)號(hào)stu_numFOREIGNKEYREFERENCES學(xué)生(學(xué)號(hào)),

課程編號(hào)course_numFOREIGNKEYREFERENCES課程(課程編號(hào)),

成績(jī)tinyintNULLCHECK(成績(jī)>=0AND成績(jī)<=100),CONSTRAINTPK_成績(jī)PRIMARYKEY(學(xué)號(hào),課程編號(hào)));相關(guān)知識(shí)外鍵(FOREIGNKEY,F(xiàn)K)是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。在外鍵引用中,當(dāng)A表的列引用作為B表的主鍵值的列時(shí),便在兩表之間創(chuàng)建了鏈接,該列就成為A表的外鍵。使用表設(shè)計(jì)器創(chuàng)建外鍵約束使用CREATETABLE語(yǔ)句創(chuàng)建外鍵約束任務(wù)12創(chuàng)建數(shù)據(jù)庫(kù)關(guān)系圖任務(wù)實(shí)現(xiàn)展開數(shù)據(jù)庫(kù),右鍵單擊“數(shù)據(jù)庫(kù)關(guān)系圖”,選擇“新建數(shù)據(jù)庫(kù)關(guān)系圖”;在“添加表”對(duì)話框中選擇并添加表;將主鍵表的主鍵拖到外鍵表的外鍵上。相關(guān)任務(wù)數(shù)據(jù)庫(kù)關(guān)系圖是數(shù)據(jù)庫(kù)中對(duì)象的圖形表示形式。數(shù)據(jù)庫(kù)關(guān)系圖既可以是整個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)的圖片,也可以是部分?jǐn)?shù)據(jù)庫(kù)結(jié)構(gòu)的圖片,包括表、表中的列以及各個(gè)表之間的關(guān)系。使用數(shù)據(jù)庫(kù)關(guān)系圖可以創(chuàng)建和修改表、列、關(guān)系和鍵,也可以修改索引和約束。任務(wù)13查看表的定義和數(shù)據(jù)任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOEXECsp_help學(xué)生;GOSELECT*FROM學(xué)生;GO相關(guān)知識(shí)在數(shù)據(jù)庫(kù)中創(chuàng)建表之后,可能需要查找有關(guān)表屬性的信息,例如列的名稱、數(shù)據(jù)類型或其約束的名稱等,最為常見的任務(wù)是查看表中的數(shù)據(jù)。此外,還可以通過(guò)顯示表的依賴關(guān)系來(lái)確定哪些對(duì)象(例如視圖、存儲(chǔ)過(guò)程和觸發(fā)器)是由表決定的。在更改表時(shí),相關(guān)的對(duì)象可能會(huì)受到影響。在對(duì)象資源管理器中展開一個(gè)表下方的“列”、“鍵”、“約束”結(jié)點(diǎn),就可以查看該表的相關(guān)信息。也可以使用系統(tǒng)存儲(chǔ)過(guò)程、目錄視圖或查詢語(yǔ)句來(lái)查看表的相關(guān)信息。任務(wù)14重命名表任務(wù)實(shí)現(xiàn)USEAdventureWorks2008R2;GOEXECsp_rename'Sales.SalesTerritory','SalesTerr';GO相關(guān)知識(shí)若要更改表的名稱,可在對(duì)象資源管理器中右鍵單擊該表,然后選擇“重命名”,輸入新的名稱。也可以使用sp_rename系統(tǒng)存儲(chǔ)過(guò)程在當(dāng)前數(shù)據(jù)庫(kù)中更改用戶創(chuàng)建對(duì)象的名稱,此對(duì)象可以是表、索引、列、別名數(shù)據(jù)類型。任務(wù)15從數(shù)據(jù)庫(kù)中刪除表任務(wù)實(shí)現(xiàn)USETest;GOCREATETABLETest(colaintPRIMARYKEY,colbchar(10)NOTNULL);GODROPTABLETest相關(guān)知識(shí)刪除表時(shí),該表的結(jié)構(gòu)定義、數(shù)據(jù)、全文索引、約束和索引都從數(shù)據(jù)庫(kù)中永久刪除??墒褂脤?duì)象資源管理器來(lái)從數(shù)據(jù)庫(kù)中刪除表,操作方法是:展開數(shù)據(jù)庫(kù)下方的“表”結(jié)點(diǎn),右鍵單擊要?jiǎng)h除的表,然后選擇“刪除”命令,單擊“確定”按鈕。也可以使用DROPTABLE語(yǔ)句從數(shù)據(jù)庫(kù)中刪除表。1項(xiàng)目1初識(shí)SQLServer20082項(xiàng)目2創(chuàng)建和管理數(shù)據(jù)庫(kù)3項(xiàng)目3創(chuàng)建和管理表4項(xiàng)目4操作數(shù)據(jù)庫(kù)數(shù)據(jù)5項(xiàng)目5檢索數(shù)據(jù)庫(kù)數(shù)據(jù)6項(xiàng)目6創(chuàng)建索引和視圖7項(xiàng)目7Transact-SQL程序設(shè)計(jì)8項(xiàng)目8創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器9項(xiàng)目9管理數(shù)據(jù)安全CONTENTS目錄項(xiàng)目4

操作數(shù)據(jù)庫(kù)數(shù)據(jù)CONTENTS

目錄任務(wù)1使用結(jié)果窗格插入表數(shù)據(jù)任務(wù)2使用INSERT語(yǔ)句插入數(shù)據(jù)任務(wù)3使用BULKINSERT語(yǔ)句復(fù)制數(shù)據(jù)任務(wù)4使用INSERT...SELECT語(yǔ)句插入表數(shù)據(jù)任務(wù)5使用結(jié)果窗格編輯表數(shù)據(jù)任務(wù)6使用UPDATE語(yǔ)句更新數(shù)據(jù)任務(wù)7在UPDATE語(yǔ)句中使用FROM子句任務(wù)8使用TOP子句限制更新的數(shù)據(jù)任務(wù)9使用結(jié)果窗格刪除數(shù)據(jù)任務(wù)10使用DELETE語(yǔ)句刪除數(shù)據(jù)任務(wù)11使用TOP子句限制刪除的行

項(xiàng)目12使用TRUNCATETABLE語(yǔ)句刪除所有行任務(wù)13向SQLServer數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù)任務(wù)14從SQLServer數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)任務(wù)1使用結(jié)果窗格插入表數(shù)據(jù)任務(wù)實(shí)現(xiàn)展開數(shù)據(jù)庫(kù),展開數(shù)據(jù)庫(kù)下方的“表”右鍵單擊表,選擇“編輯前200行”在“結(jié)果”窗格中,定位到添加新數(shù)據(jù)行的空白行,輸入各列的值,按Tab鍵移到下一個(gè)單元格離開當(dāng)前行會(huì)將其提交到數(shù)據(jù)庫(kù)相關(guān)知識(shí)添加數(shù)據(jù)的方法使用查詢編輯器的“結(jié)果”窗格向該表中添加數(shù)據(jù)使用INSERT語(yǔ)句向該表中添加數(shù)據(jù)使用BULKINSERT語(yǔ)句以用戶指定的格式添加數(shù)據(jù)使用INSERT和SELECT將來(lái)自其他表的數(shù)據(jù)添加到該表中?!敖Y(jié)果”窗格是查詢?cè)O(shè)計(jì)器的一個(gè)組成部分,用于顯示最近執(zhí)行的SELECT查詢的結(jié)果。如果看不到“結(jié)果”窗格,可選擇“查詢?cè)O(shè)計(jì)器”→“窗格”→“結(jié)果”命令。任務(wù)2使用INSERT語(yǔ)句插入表數(shù)據(jù)任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);INSERTINTO課程(課程名稱,課程類別,考試類別)VALUES('計(jì)算機(jī)應(yīng)用基礎(chǔ)','公共基礎(chǔ)','考試'),('辦公軟件','公共基礎(chǔ)','考查'),...GOINSERTINTO教師(系別編號(hào),姓名,性別,出生日期,參加工作時(shí)間,學(xué)歷,職稱,政治面貌)VALUES(1,'何曉明','女','1975-8-18','1999-7-12','大學(xué)','講師','中共黨員'),...相關(guān)知識(shí)使用INSERT語(yǔ)句可以將一個(gè)或多個(gè)新行添加到表中。如果列滿足以下條件,則自動(dòng)為列提供值:若具有IDENTITY屬性,則使用下一個(gè)增量標(biāo)識(shí)值;若指定有默認(rèn)值,則使用列的默認(rèn)值;若具有timestamp數(shù)據(jù)類型,則使用當(dāng)前時(shí)間戳值;若可為空值,則使用空值任務(wù)3使用BULKINSERT語(yǔ)句復(fù)制數(shù)據(jù)任務(wù)實(shí)現(xiàn)在記事本程序中錄入學(xué)生信息并保存為文本文件,要求每行結(jié)束時(shí)按Enter鍵,各列之間用逗號(hào)分隔,所有列值都不需要使用定界符,但這些值必須與相應(yīng)列的數(shù)據(jù)類型兼容。在查詢編輯窗口中編寫以下語(yǔ)句:BULKINSERT學(xué)生成績(jī).dbo.學(xué)生FROM'd:\mssql\第4章\學(xué)生信息.txt'WITH(FIELDTERMINATOR=',',ROWTERMINATOR='\n);GO相關(guān)知識(shí)使用BULKINSERT語(yǔ)句可以按用戶指定的格式將數(shù)據(jù)文件加載到數(shù)據(jù)庫(kù)表中database_name為包含指定表的數(shù)據(jù)庫(kù)的名稱schema_name指定表的名稱data_file指定數(shù)據(jù)文件的完整路徑FIELDTERMINATOR指定數(shù)據(jù)文件的字段終止符任務(wù)4使用INSERT...SELECT語(yǔ)句插入表數(shù)據(jù)任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);INSERTINTO成績(jī)(學(xué)號(hào),課程編號(hào))SELECT學(xué)生.學(xué)號(hào),授課.課程編號(hào)FROM學(xué)生,授課WHERE(學(xué)生.學(xué)號(hào)NOTIN(SELECT學(xué)號(hào)FROM成績(jī))AND授課.班級(jí)編號(hào)=學(xué)生.班級(jí)編號(hào));GO相關(guān)知識(shí)在INSERT語(yǔ)句中,可以使用SELECT子查詢將一個(gè)或多個(gè)表或視圖中的值添加到另一個(gè)表中。使用SELECT子查詢可以同時(shí)在表中插入多行數(shù)據(jù)。子查詢的選擇列表必須與INSERT語(yǔ)句的列列表匹配。如果沒(méi)有指定列列表,則選擇列表必須與正在其中執(zhí)行插入操作的表或視圖的列匹配。任務(wù)5使用結(jié)果窗格編輯表數(shù)據(jù)任務(wù)實(shí)現(xiàn)展開數(shù)據(jù)庫(kù),展開表,右鍵單擊包含數(shù)據(jù)的表,選擇“編輯前200行”在“結(jié)果”窗格中,為列填寫新值按向下箭頭鍵把光標(biāo)移到下一行若要顯示更多的行,可在“SQL”窗格中更改TOP關(guān)鍵字后的數(shù)字;若要顯示表中的全部行,可刪除TOP關(guān)鍵字及其后面的數(shù)字相關(guān)知識(shí)對(duì)表中已有的數(shù)據(jù)進(jìn)行修改的方法使用“結(jié)果”窗格對(duì)表中數(shù)據(jù)進(jìn)行編輯使用UPDATE語(yǔ)句對(duì)表中的一行或多行數(shù)據(jù)進(jìn)行修改使用FROM子句對(duì)UPDATE語(yǔ)句進(jìn)行擴(kuò)展使用TOP子句來(lái)限制UPDATE語(yǔ)句中修改的行數(shù)任務(wù)6使用UPDATE語(yǔ)句更新數(shù)據(jù)任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);UPDATE成績(jī)SET成績(jī)=86WHERE學(xué)號(hào)='120101'AND課程編號(hào)=1;UPDATE成績(jī)SET成績(jī)=92WHERE學(xué)號(hào)='120102'AND課程編號(hào)=1;UPDATE成績(jī)SET成績(jī)=87WHERE學(xué)號(hào)='120103'AND課程編號(hào)=1;...相關(guān)知識(shí)UPDATE語(yǔ)句用于更改表或視圖中單行、行組或所有行的數(shù)據(jù)值。database_name指定數(shù)據(jù)庫(kù)的名稱,table_orview_name指定要更新行的表或視圖的名稱。SET子句包含要更新的列和每個(gè)列的新值的列表(用逗號(hào)分隔)。column_name指定包含要更改的數(shù)據(jù)的列,column_name必須已經(jīng)存在于table_orview_name中,不能更新標(biāo)識(shí)列。expression指定返回單個(gè)值的變量、文字值、表達(dá)式或嵌套SELECT語(yǔ)句,expression返回的值替換column_name中的現(xiàn)有值。任務(wù)7在UPDATE語(yǔ)句中使用FROM子句任務(wù)實(shí)現(xiàn)UPDATE成績(jī)SET成績(jī)=92FROM學(xué)生,課程WHERE學(xué)生.姓名='馮岱若'AND課程.課程名稱='網(wǎng)頁(yè)設(shè)計(jì)'AND學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)AND課程.課程編號(hào)=成績(jī).課程編號(hào);GO相關(guān)知識(shí)在UPDATE語(yǔ)句中使用了FROM子句,可以將數(shù)據(jù)從一個(gè)或多個(gè)表或視圖拉入要更新的表中table_name指定UPDATE要更新的目標(biāo)表。SET子句指定要更新的列和所使用的數(shù)據(jù),expression的值中可以同時(shí)包含目標(biāo)表和FROM子句指定的表中的列。WHERE子句執(zhí)行以下功能:指定要在目標(biāo)表中更新的行;指定源表中可以為更新提供值的行。任務(wù)8使用TOP限制更新的數(shù)據(jù)任務(wù)實(shí)現(xiàn)USEAdventureWorks;UPDATETOP(10)Sales.StoreSETSalesPersonID=276WHERESalesPersonID=275;GO相關(guān)知識(shí)在UPDATE語(yǔ)句中,可以使用TOP子句來(lái)限制修改的行數(shù)使用TOP(n)子句時(shí),將基于隨機(jī)選擇n行來(lái)執(zhí)行更新操作任務(wù)9使用結(jié)果窗格刪除表數(shù)據(jù)相關(guān)知識(shí)刪除數(shù)據(jù)的方法:在“結(jié)果”窗框中刪除數(shù)據(jù)使用DELETE語(yǔ)句從表中刪除滿足指定條件的若干行數(shù)據(jù)使用TOP語(yǔ)句限制刪除的行數(shù)使用TRUNCATETABLE語(yǔ)句從表中快速刪除所有行。在“結(jié)果”窗格中刪除數(shù)據(jù)的操作步驟右鍵單擊數(shù)據(jù)表,選擇“編輯前200行”。單擊待刪除行左側(cè)的選擇框。若要選擇多行,可按住Ctrl鍵或Shift鍵單擊各行的選擇框,或在這些行的選擇框上拖動(dòng)鼠標(biāo);若要選擇全部行,可單擊列標(biāo)題行中的選擇框。按Delete鍵。在確認(rèn)消息框中單擊“是”。任務(wù)10使用DELETE語(yǔ)句刪除數(shù)據(jù)任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);DELETEFROM成績(jī)

FROM學(xué)生

WHERE學(xué)生.姓名='劉春明'AND學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào);相關(guān)知識(shí)DELETE語(yǔ)句用于刪除表或視圖中的一行或多行從一個(gè)表中刪除所有行后,該表仍會(huì)保留在數(shù)據(jù)庫(kù)中。DELETE語(yǔ)句只從表中刪除行,若要從數(shù)據(jù)庫(kù)中刪除表,可使用DROPTABLE語(yǔ)句。任務(wù)11使用TOP限制刪除的行任務(wù)實(shí)現(xiàn)USEAdventureWorks;GODELETETOP(20)FROMPurchasing.PurchaseOrderDetailWHEREDueDate<'20020701';GOUSEAdventureWorks2008R2;GODELETETOP(2.5)PERCENTFROMProduction.ProductInventory;相關(guān)知識(shí)在DELETE語(yǔ)句中,可以使用TOP(expression)[PERCENT]子句來(lái)指定將要?jiǎng)h除的任意行數(shù)或任意行的百分比,其中expression可以為行數(shù)或行的百分比。與INSERT、UPDATE或DELETE一起使用的TOP表達(dá)式中被引用行將不按任何順序排列。任務(wù)12使用TRUNCATETABLE刪除所有行任務(wù)實(shí)現(xiàn)USEAdventureWorks;GOTRUNCATETABLEHumanResources.JobCandidate;GO相關(guān)知識(shí)使用TRUNCATETABLE語(yǔ)句可以從表中刪除所有行,而不記錄單個(gè)行刪除操作。該語(yǔ)句在功能上與沒(méi)有WHERE子句的DELETE語(yǔ)句相同;TRUNCATETABLE速度更快,使用的系統(tǒng)資源和事務(wù)日志資源更少。任務(wù)13向SQLServer數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù)任務(wù)實(shí)現(xiàn)右鍵單擊接受數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù),選擇“任務(wù)”→“導(dǎo)入數(shù)據(jù)”啟動(dòng)SQLServer導(dǎo)入和導(dǎo)出向?qū)?,選擇數(shù)據(jù)源,如選擇Access數(shù)據(jù)庫(kù)文件選擇目標(biāo),指定要將數(shù)據(jù)復(fù)制到何處;選擇源表和源視圖保存并運(yùn)行包相關(guān)知識(shí)導(dǎo)入數(shù)據(jù)是指將外部數(shù)據(jù)源中的數(shù)據(jù)復(fù)制到SQLServer數(shù)據(jù)庫(kù)中。導(dǎo)入數(shù)據(jù)過(guò)程可在向?qū)У奶崾鞠峦瓿?,包括選擇提供數(shù)據(jù)的數(shù)據(jù)源和接受數(shù)據(jù)的SQLServer目標(biāo)數(shù)據(jù)庫(kù)、指定表復(fù)制或查詢選項(xiàng)、選擇源表和源視圖以及設(shè)置是否保存SSIS包等。任務(wù)14從SQLServer數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)任務(wù)實(shí)現(xiàn)右鍵單擊要導(dǎo)出數(shù)據(jù)的數(shù)據(jù)庫(kù),選擇“任務(wù)”→“導(dǎo)出數(shù)據(jù)”命令啟動(dòng)SQLServer導(dǎo)入和導(dǎo)出向?qū)?,指定要從中?fù)制數(shù)據(jù)的SQLServer數(shù)據(jù)庫(kù)。選擇目標(biāo),例如選擇Accesss數(shù)據(jù)庫(kù)文件選擇源表和源視圖,保存并執(zhí)行包相關(guān)知識(shí)導(dǎo)出數(shù)據(jù)是指將存儲(chǔ)在SQLServer數(shù)據(jù)庫(kù)中的數(shù)據(jù)復(fù)制到其他數(shù)據(jù)庫(kù)、電子表格或文本文件中。導(dǎo)出數(shù)據(jù)的整個(gè)操作過(guò)程可以在向?qū)崾鞠峦瓿?,主要步驟包括選擇提供數(shù)據(jù)的數(shù)據(jù)源和接受數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù)或文件、指定表復(fù)制或查詢選項(xiàng)、選擇源表和源視圖以及設(shè)置是否保存SSIS包等。1項(xiàng)目1初識(shí)SQLServer20082項(xiàng)目2創(chuàng)建和管理數(shù)據(jù)庫(kù)3項(xiàng)目3創(chuàng)建和管理表4項(xiàng)目4操作數(shù)據(jù)庫(kù)數(shù)據(jù)5項(xiàng)目5檢索數(shù)據(jù)庫(kù)數(shù)據(jù)6項(xiàng)目6創(chuàng)建索引和視圖7項(xiàng)目7Transact-SQL程序設(shè)計(jì)8項(xiàng)目8創(chuàng)建存儲(chǔ)過(guò)程和觸發(fā)器9項(xiàng)目9管理數(shù)據(jù)安全CONTENTS目錄項(xiàng)目5

檢索數(shù)據(jù)庫(kù)數(shù)據(jù)CONTENTS

目錄(一)任務(wù)1認(rèn)識(shí)SELECT語(yǔ)句任務(wù)2從表中選擇所有列任務(wù)3從表中選擇特定列任務(wù)4從表中選擇特殊列任務(wù)5設(shè)置結(jié)果集列的名稱任務(wù)6在選擇列表中進(jìn)行計(jì)算任務(wù)7使用DISTINCT消除重復(fù)項(xiàng)任務(wù)8使用TOP限制結(jié)果集任務(wù)9使用沒(méi)有FROM子句的SELECT語(yǔ)句任務(wù)10在FROM子句中使用內(nèi)部聯(lián)接任務(wù)11在FROM子句中使用外部數(shù)據(jù)項(xiàng)目12在選擇表查詢中使用交叉聯(lián)接任務(wù)13在選擇查詢中使用比較搜索條件任務(wù)14使用范圍搜索條件任務(wù)15在選擇查詢中使用列表搜索條件任務(wù)16在搜索條件中使用模式匹配CONTENTS

目錄(二)任務(wù)17在選擇查詢中使用邏輯運(yùn)算符任務(wù)18使用ORDERBY對(duì)數(shù)據(jù)排序任務(wù)19將TOP...WITHTIES與ORDERBY聯(lián)用任務(wù)20使用GROUPBY對(duì)數(shù)據(jù)分組任務(wù)21在分組操作中應(yīng)用搜索條件任務(wù)22使用聚合函數(shù)匯總數(shù)據(jù)任務(wù)23使用公用表表達(dá)式檢索數(shù)據(jù)任務(wù)24使用PIVOT運(yùn)算符生成交叉表查詢?nèi)蝿?wù)25將查詢結(jié)果保存到表中任務(wù)26使用子查詢進(jìn)行集成員測(cè)試任務(wù)27使用子查詢進(jìn)行比較測(cè)試項(xiàng)目28使用子查詢進(jìn)行存在性測(cè)試任務(wù)29使用子查詢替代表達(dá)式任務(wù)1認(rèn)識(shí)SELECT語(yǔ)句任務(wù)實(shí)現(xiàn)在命令提示符下輸入sqlcmd,然后輸入要執(zhí)行的SQL語(yǔ)句:USE學(xué)生成績(jī);GOSELECT學(xué)號(hào),姓名,性別,出生日期FROM學(xué)生WHERE性別='女'ORDERBY出生日期;GO輸入QUIT命令,退出sqlcmd實(shí)用工具。相關(guān)知識(shí)SELECT語(yǔ)句的組成SELECT語(yǔ)句用于從數(shù)據(jù)庫(kù)中檢索行,并允許從一個(gè)或多個(gè)表中選擇一個(gè)或多個(gè)行或列。查詢工具介紹查詢編輯器sqlcmd實(shí)用工具bcp實(shí)用工具任務(wù)2從表中選擇所有列任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT*FROM系別;GO相關(guān)知識(shí)SELECT子句是SELECT語(yǔ)句的第一部分。該子句用于指定查詢返回的選擇列表,用于定義SELECT語(yǔ)句的結(jié)果集中的列。選擇列表是一系列以逗號(hào)分隔的表達(dá)式,每個(gè)表達(dá)式定義結(jié)果集中的一列。結(jié)果集中列的排列順序與選擇列表中表達(dá)式的排列順序相同。在SELECT子句中使用星號(hào)(*)可選擇表或視圖中的所有列。如果沒(méi)有使用限定符指定,則星號(hào)將被解析為對(duì)FROM子句中指定的所有表或視圖中的所有列的引用。如果使用表或視圖名稱進(jìn)行限定,則星號(hào)將被解析為對(duì)指定表或視圖中的所有列的引用。任務(wù)3從表中選擇特定列任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT班級(jí)編號(hào),學(xué)號(hào),姓名,性別,出生日期,政治面貌FROM學(xué)生;GO相關(guān)知識(shí)若要選擇表中的特定列作為SELECT查詢的輸出列,則應(yīng)當(dāng)在選擇列表中明確地列出每一列,各列之間用逗號(hào)分隔。如果創(chuàng)建表時(shí)在表名或列名中使用了空格(不符合標(biāo)識(shí)符命名規(guī)則),則編寫SELECT語(yǔ)句時(shí)需要使用方括號(hào)將表名或列名括起來(lái),否則會(huì)出現(xiàn)錯(cuò)誤信息。如果在FROM子句中指定了多個(gè)表,而這些表中又有同名的列,則在使用這些列時(shí)需要在列名前面冠以表名,以指明該列屬于哪個(gè)表。任務(wù)4從表中選擇特殊列任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT系別編號(hào),$IDENTITY,姓名,性別,參加工作時(shí)間FROM教師;GO相關(guān)知識(shí)對(duì)于表中的標(biāo)識(shí)符列,可使用$IDENTITY關(guān)鍵字來(lái)引用。對(duì)于具有ROWGUIDCOL屬性的列,可使用$ROWGUID關(guān)鍵字來(lái)引用。如果在SELECT語(yǔ)句選取多個(gè)表作為查詢的數(shù)據(jù)來(lái)源,則必須在$IDENTITY和$ROWGUID關(guān)鍵字前面冠以表名,以指示這些列屬于哪個(gè)表。例如,Table1.$IDENTITY和Table1.$ROWGUID。任務(wù)5設(shè)置結(jié)果集列的名稱任務(wù)實(shí)現(xiàn)USEAdventureWorks;GOSELECTEmployeeIDAS雇員編號(hào),TitleAS頭銜,BirthDateAS出生日期,HireDateAS雇用日期FROMHumanResources.Employee;GO相關(guān)知識(shí)使用AS子句來(lái)更改結(jié)果集列的名稱或?yàn)榕缮蟹峙涿Q:column_nameAScolumn_aliasresult_column_expressionASderived_column_namecolumn_alias=column_namederived_column_name=result_column_expression任務(wù)6在選擇列表中進(jìn)行計(jì)算任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT班級(jí)編號(hào),學(xué)號(hào),姓名,DATEDIFF(yy,出生日期,GETDATE())AS年齡FROM學(xué)生;GO相關(guān)知識(shí)在SELECT語(yǔ)句的選擇列表中,可以包含通過(guò)對(duì)一個(gè)或多個(gè)簡(jiǎn)單表達(dá)式應(yīng)用運(yùn)算符而生成的表達(dá)式。這樣可使結(jié)果集中包含基表中不存在、但是根據(jù)基表中存儲(chǔ)的值計(jì)算得到的值,這些結(jié)果集列被稱為派生列。在派生列中,可以對(duì)數(shù)值列或常量使用算術(shù)運(yùn)算符或函數(shù)進(jìn)行的計(jì)算和運(yùn)算,也可以進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,還可以使用子查詢。所謂子查詢,就是一個(gè)嵌套在SELECT、INSERT、UPDATE或DELETE語(yǔ)句或其他子查詢中的查詢。任務(wù)7使用DISTINCT消除重復(fù)項(xiàng)任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECTDISTINCT課程編號(hào)FROM成績(jī);GO相關(guān)知識(shí)使用DISTINCT關(guān)鍵字可以從SELECT語(yǔ)句的結(jié)果集中消除重復(fù)的行。對(duì)于DISTINCT關(guān)鍵字來(lái)說(shuō),空值將被認(rèn)為是相互重復(fù)的內(nèi)容。如果沒(méi)有指定DISTINCT,將返回包括重復(fù)行在內(nèi)的所有行。當(dāng)SELECT語(yǔ)句中包括DISTINCT時(shí),不論遇到多少個(gè)空值,結(jié)果中只返回一個(gè)NULL。任務(wù)8使用TOP限制結(jié)果集任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECTTOP(10)學(xué)號(hào),姓名,性別,出生日期FROM學(xué)生;GO相關(guān)知識(shí)在SELECT語(yǔ)句中,可以使用TOP子句限制結(jié)果集中返回的行數(shù)。語(yǔ)法格式如下:TOP(expression)[PERCENT][WITHTIES]其中expression是一個(gè)數(shù)值表達(dá)式,用于指定返回的行數(shù)。如果指定了PERCENT,則是指返回的結(jié)果集行的百分比(由expression指定)。如果在SELECT語(yǔ)句中同時(shí)使用了TOP和ORDERBY子句,則返回的行將會(huì)從排序后的結(jié)果集中選擇。整個(gè)結(jié)果集按照指定的順序排列,并且返回排序后結(jié)果集前面的若干行(由expression指定)。如果同時(shí)還指定了WITHTIES選項(xiàng),則返回包含ORDERBY子句返回的最后一個(gè)值的所有行,即便這樣會(huì)超過(guò)expression指定的數(shù)量。任務(wù)9使用沒(méi)有FROM子句的SELECT語(yǔ)句任務(wù)實(shí)現(xiàn)SELECT'歡迎您使用SQLServer2008'AS歡迎信息,GETDATE()AS'現(xiàn)在時(shí)間',@@SERVERNAMEAS'SQLServer服務(wù)器名稱',@@VERSIONAS[SQLServer版本號(hào)]相關(guān)知識(shí)在SELECT語(yǔ)句中,F(xiàn)ROM子句用于指定選擇查詢的數(shù)據(jù)來(lái)源。如果在SELECT語(yǔ)句中不需要訪問(wèn)表中的列,則不必使用FROM子句。若要使用SELCET語(yǔ)句從表或視圖中檢索數(shù)據(jù),就必須使用FROM子句。FROM子句是用逗號(hào)分隔的表名、視圖名和JOIN子句的列表,使用FROM子句可以列出選擇列表和WHERE子句中所引用的列所在的表和視圖,也可以使用AS子句為表和視圖的名稱指定別名。使用FROM子句還可以指定一個(gè)或多個(gè)表或視圖并在兩個(gè)或多個(gè)表或視圖之間創(chuàng)建各種類型的連接。在SELECT語(yǔ)句中,F(xiàn)ROM子句是一個(gè)可選項(xiàng)。如果要使用SELECT語(yǔ)句從數(shù)據(jù)庫(kù)內(nèi)的表或視圖中選擇數(shù)據(jù),就必須使用FROM子句。任務(wù)10在FROM子句中使用內(nèi)部連接任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT學(xué)生.學(xué)號(hào),姓名,課程.課程名稱,成績(jī)FROM成績(jī)INNERJOIN學(xué)生ON成績(jī).學(xué)號(hào)=學(xué)生.學(xué)號(hào)

INNERJOIN課程ON成績(jī).課程編號(hào)=課程.課程編號(hào);GO相關(guān)知識(shí)使用SELECT語(yǔ)句從多個(gè)表或視圖中檢索數(shù)據(jù)時(shí),可通過(guò)在FROM子句中使用各種連接運(yùn)算符來(lái)實(shí)現(xiàn)。連接指明了SQLServer應(yīng)當(dāng)如何使用一個(gè)表中的數(shù)據(jù)來(lái)選擇另一個(gè)表中的行,通過(guò)連接可以從兩個(gè)或多個(gè)表中根據(jù)各個(gè)表之間的邏輯關(guān)系來(lái)檢索數(shù)據(jù)。內(nèi)部連接是一種最常用的連接類型,它使用比較運(yùn)算符對(duì)要連接列中的值進(jìn)行比較。若兩個(gè)來(lái)源表的相關(guān)列滿足連接條件,則內(nèi)部連接從這兩個(gè)表中提取數(shù)據(jù)并組成新的行。內(nèi)部連接通常通過(guò)在FROM子句中使用INNERJOIN運(yùn)算符來(lái)實(shí)現(xiàn)。任務(wù)11在FROM子句中使用外部連接任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT學(xué)號(hào),課程名稱,成績(jī)FROM成績(jī)RIGHTJOIN課程ON成績(jī).課程編號(hào)=課程.課程編號(hào);GO相關(guān)知識(shí)外部連接回FROM子句中指定的至少一個(gè)表或視圖中的所有行,只要這些行符合任何WHERE或HAVING搜索條件。外部連接分為左外部連接LEFT[OUTER]JOIN、右外部連接RIGHT[OUTER]JOIN和完全外部連接FULL[OUTER]JOIN。若要在結(jié)果集中包括左表中的所有行,而不考慮右表中是否存在匹配的行,可使用左外部連接。若要在結(jié)果集中包括右表中的所有行,而不考慮左表中是否存在匹配的行,可使用右外部連接。若要通過(guò)在連接的結(jié)果中包括不匹配的行來(lái)保留不匹配信息,可使用完全外部連接。任務(wù)12在選擇查詢中使用交叉連接任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT班級(jí)編號(hào),姓名FROM學(xué)生CROSSJOIN班級(jí);GO相關(guān)知識(shí)使用CROSSJOIN運(yùn)算符可實(shí)現(xiàn)兩個(gè)來(lái)源表之間的交叉連接,語(yǔ)法格式如下:FROMtable1CROSSJOINtable2如果沒(méi)有在SELECT語(yǔ)句中使用WHERE子句,則交叉連接將產(chǎn)生連接所涉及的表的笛卡兒積。笛卡兒積結(jié)果集的大小等于第一個(gè)表的行數(shù)乘以第二個(gè)表的行數(shù)。如果在SELECT語(yǔ)句中添加一個(gè)WHERE子句,則交叉連接的作用與內(nèi)連接相同。任務(wù)13在選擇查詢中使用比較搜索條件任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT教師編號(hào),姓名,性別,學(xué)歷,職稱,政治面貌FROM教師WHERE學(xué)歷='研究生';GO相關(guān)知識(shí)通過(guò)在SELECT語(yǔ)句中使用WHERE子句可以設(shè)置對(duì)行的篩選條件,從而保證查詢集中僅僅包含所需要的行,而將不需要的行排除在結(jié)果集之外。在SELECT語(yǔ)句中WHERE子句是可選的,使用時(shí)應(yīng)放在FROM子句后面,語(yǔ)法如下:[WHERE<search_condition>]任務(wù)14使用范圍搜索條件任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT學(xué)生.學(xué)號(hào),姓名,課程名稱,成績(jī)FROM成績(jī)INNERJOIN學(xué)生ON學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)INNERJOIN課程ON課程.課程編號(hào)=成績(jī).課程編號(hào)WHERE成績(jī)BETWEEN80AND90;GO相關(guān)知識(shí)范圍搜索返回介于兩個(gè)指定值之間的所有值,包括范圍返回與兩個(gè)指定值匹配的所有值,排他范圍不返回與兩個(gè)指定值匹配的任何值。在WHERE子句中,可以使用BETWEEN運(yùn)算符來(lái)指定要搜索的包括范圍,也可以使用NOTBETWEEN來(lái)查找指定范圍之外的所有行,語(yǔ)法格式如下:test_expression[NOT]BETWEENbegin_expressionANDend_expression任務(wù)15在選擇查詢中使用列表搜索條件任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT班級(jí)編號(hào),學(xué)號(hào),姓名,性別,出生日期FROM學(xué)生WHERESUBSTRING(姓名,1,1)IN('張','王','李','趙');GO相關(guān)知識(shí)在WHERE子句中使用IN運(yùn)算符可以選擇與列表中的任意值匹配的行。IN運(yùn)算符用于確定指定的值是否與子查詢或列表中的值相匹配,語(yǔ)法格式如下:test_expression[NOT]IN(subquery|expression[,...n])如果測(cè)試表達(dá)式test_expression的值與子查詢subquery所返回的任何值相等,或者與逗號(hào)分隔的列表中的某個(gè)expression相等,則結(jié)果值為TRUE;否則結(jié)果值為FALSE。使用NOTIN可以對(duì)返回值求反。任務(wù)16在搜索條件中使用模式匹配任務(wù)實(shí)現(xiàn)USE學(xué)生成績(jī);GOSELECT*FROM學(xué)生WHERE姓名LIKE'[張王李趙]%';GOSELECT*FROM學(xué)生WHERE姓名LIKE'%建%';GO相關(guān)知識(shí)在WHERE子句中,可以使用LIKE運(yùn)算符來(lái)搜索與指定模式匹配的字符串、日期或時(shí)間值。LIKE運(yùn)算符用于確定特定字符串是否與指定模式相匹配,語(yǔ)法格式如下:match_expression[NOT]LIKEpattern[ESCAPEescape_character]通配符:%表示包含零個(gè)或多個(gè)字符的任意字符串;_表示任何單個(gè)字符;[]指定一個(gè)范圍內(nèi)的任何單個(gè)字符;[^]表示不在指定范圍內(nèi)的任何單個(gè)字符。任務(wù)17在選擇查詢中使用邏輯運(yùn)算符

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論