版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
趙增敏等主編數(shù)據(jù)庫應(yīng)用
(SQLServer2008)CONTENTS
目錄1項目1初識SQLServer20082項目2創(chuàng)建和管理數(shù)據(jù)庫3項目3創(chuàng)建和管理表4項目4操作數(shù)據(jù)庫數(shù)據(jù)5項目5檢索數(shù)據(jù)庫數(shù)據(jù)6項目6創(chuàng)建索引和視圖7項目7Transact-SQL程序設(shè)計8項目8創(chuàng)建存儲過程和觸發(fā)器9項目9管理數(shù)據(jù)安全CONTENTS
目錄1項目1初識SQLServer20082項目2創(chuàng)建和管理數(shù)據(jù)庫3項目3創(chuàng)建和管理表4項目4操作數(shù)據(jù)庫數(shù)據(jù)5項目5檢索數(shù)據(jù)庫數(shù)據(jù)6項目6創(chuàng)建索引和視圖7項目7Transact-SQL程序設(shè)計8項目8創(chuàng)建存儲過程和觸發(fā)器9項目9管理數(shù)據(jù)安全項目1
初識SQLServer2008CONTENTS
目錄1任務(wù)1了解數(shù)據(jù)庫2任務(wù)2了解SQLServer20083任務(wù)3安裝SQLServer20084任務(wù)4認(rèn)識SQLServer2008服務(wù)和管理工具5任務(wù)5管理SQLServer服務(wù)器任務(wù)1了解數(shù)據(jù)庫相關(guān)知識數(shù)據(jù)庫
是為特定目的而組織和表示的信息、表以及其他對象的集合,數(shù)據(jù)庫存儲在一個或多個文件中。數(shù)據(jù)庫中的數(shù)據(jù)分為系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)兩類。數(shù)據(jù)庫可以包含各種各樣的對象。SQLServer數(shù)據(jù)庫中包含表、視圖、存儲過程和函數(shù),也包含觸發(fā)器和程序集、規(guī)則、類型和默認(rèn)值,還包含用戶、角色以及架構(gòu)等。關(guān)系數(shù)據(jù)庫
在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)行和數(shù)據(jù)列組成了表;一組表連同其他對象一起組成了數(shù)據(jù)庫。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)可以存儲在不同的表中。每個表包含某個特定主題的數(shù)據(jù)。表中的一列通常也稱為字段,每個字段用于存儲某種特性的數(shù)據(jù)。表中的一行通常也稱為一條記錄,每條記錄包含表中一項的相關(guān)信息。數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)是對數(shù)據(jù)庫進(jìn)行管理的軟件系統(tǒng),它提供了用戶與數(shù)據(jù)庫之間的軟件界面,可以用于創(chuàng)建、管理和維護(hù)數(shù)據(jù)庫。數(shù)據(jù)庫管理系統(tǒng)通常具有數(shù)據(jù)庫定義、數(shù)據(jù)庫操作和數(shù)據(jù)控制功能。SQL語言
SQL即結(jié)構(gòu)化查詢語言,可用于檢索、插入、修改和刪除關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)以及于定義和管理數(shù)據(jù)庫中的對象。SQL是一種關(guān)系數(shù)據(jù)庫語言,它具有數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制功能。任務(wù)2了解SQLServer2008相關(guān)知識SQLServer2008的版本企業(yè)版:全面的數(shù)據(jù)管理和商業(yè)智能平臺。標(biāo)準(zhǔn)版:完整的數(shù)據(jù)管理和商業(yè)智能平臺。工作組版:可信賴的數(shù)據(jù)管理和報表平臺。網(wǎng)絡(luò)版:提供低成本、大規(guī)模、高度可用的Web應(yīng)用程序或主機解決方案。移動版:免費的嵌入式SQLServer數(shù)據(jù)庫。學(xué)習(xí)版:提供學(xué)習(xí)和創(chuàng)建桌面應(yīng)用程序和小型應(yīng)用程序并可被獨立軟件廠商重新發(fā)布的免費版本。SQLServer2008的新增功能可信賴:提供了最高級別的可靠性和伸縮性,使得公司可以安全地運行最關(guān)鍵任務(wù)的應(yīng)用程序。高效率:減少了開發(fā)和管理應(yīng)用程序的時間和成本,使得公司可以快速創(chuàng)建和部署數(shù)據(jù)驅(qū)動的解決方案,從而抓住當(dāng)今風(fēng)云變幻的商業(yè)機會。智能化:提供了全面的數(shù)據(jù)平臺,可在用戶需要的時候提供發(fā)送信息。任務(wù)3安裝SQLServer2008任務(wù)描述安裝SQLServer2008R2標(biāo)準(zhǔn)版。任務(wù)實現(xiàn)選擇全新安裝或向現(xiàn)有安裝添加功能安裝安裝程序支持文件輸入產(chǎn)品密鑰;接受許可條款從“功能”列表中選擇所需的功能指定SQLServer實例的名稱和實例ID對每個SQLServer服務(wù)設(shè)置賬戶名、密碼和啟動類型配置數(shù)據(jù)庫引擎,選擇身份驗證模式配置AnalysisServices,指定當(dāng)前用戶對分析服務(wù)具有管理權(quán)限配置ReportingServices,指定報表服務(wù)的配置模式完成安裝過程任務(wù)4認(rèn)識SQLServer2008服務(wù)和管理工具任務(wù)描述了解SQLServer2008提供的服務(wù)器組件和管理工具相關(guān)知識SQLServer服務(wù)器組件數(shù)據(jù)庫引擎:用于存儲、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。分析服務(wù):用于設(shè)計、創(chuàng)建和管理多維數(shù)據(jù)。報表服務(wù):是基于服務(wù)器的報表平臺,為各種數(shù)據(jù)源提供了完善的報表功能。集成服務(wù):是一組圖形工具和可編程對象,用于移動、復(fù)制和轉(zhuǎn)換數(shù)據(jù)。SQLServerManagementStudio一個集成環(huán)境,用于訪問、配置、管理和開發(fā)SQLServer的組件。SQLServer配置管理器管理與SQLServer相關(guān)聯(lián)的服務(wù)、配置SQLServer使用的網(wǎng)絡(luò)協(xié)議以及從SQLServer客戶端計算機管理網(wǎng)絡(luò)連接配置。SQLServerProfilerSQLServerProfiler是用于從服務(wù)器捕獲SQLServer事件的工具。任務(wù)5管理SQLServer服務(wù)器管理服務(wù)器注冊SQLServer數(shù)據(jù)庫引擎服務(wù)器對于已注冊的服務(wù)器,可執(zhí)行以下操作?;诜?wù)器創(chuàng)建查詢將對象資源管理器連接到服務(wù)器編輯服務(wù)器的注冊信息將已注冊的服務(wù)器信息導(dǎo)出到文件更改服務(wù)器的狀態(tài)刪除服務(wù)器的注冊信息管理服務(wù)器組創(chuàng)建服務(wù)器組對已注冊的服務(wù)器組可執(zhí)行以下操作。編輯服務(wù)器組的屬性在服務(wù)器組中注冊新服務(wù)器將注冊服務(wù)器移動到服務(wù)器組向服務(wù)器組中導(dǎo)入注冊服務(wù)器刪除服務(wù)器組1項目1初識SQLServer20082項目2創(chuàng)建和管理數(shù)據(jù)庫3項目3創(chuàng)建和管理表4項目4操作數(shù)據(jù)庫數(shù)據(jù)5項目5檢索數(shù)據(jù)庫數(shù)據(jù)6項目6創(chuàng)建索引和視圖7項目7Transact-SQL程序設(shè)計8項目8創(chuàng)建存儲過程和觸發(fā)器9項目9管理數(shù)據(jù)安全CONTENTS目錄項目2
創(chuàng)建和管理數(shù)據(jù)庫CONTENTS
目錄任務(wù)1初識SQLServer數(shù)據(jù)庫任務(wù)2了解SQLServer系統(tǒng)數(shù)據(jù)庫任務(wù)3認(rèn)識數(shù)據(jù)庫狀態(tài)和文件狀態(tài)任務(wù)4創(chuàng)建數(shù)據(jù)庫任務(wù)5設(shè)置數(shù)據(jù)庫為脫機狀態(tài)任務(wù)6擴展數(shù)據(jù)庫任務(wù)7收縮數(shù)據(jù)庫任務(wù)8擴展事務(wù)日志任務(wù)9創(chuàng)建文件組任務(wù)10分離和附加數(shù)據(jù)庫任務(wù)11重命名數(shù)據(jù)庫項目12更改數(shù)據(jù)庫所有者任務(wù)13刪除數(shù)據(jù)庫任務(wù)14備份數(shù)據(jù)庫任務(wù)15還原數(shù)據(jù)庫任務(wù)1認(rèn)識SQLServer數(shù)據(jù)庫數(shù)據(jù)庫基本概念SQLServer數(shù)據(jù)庫由一個表集合組成。這些表包含數(shù)據(jù)以及為支持對數(shù)據(jù)執(zhí)行的活動而定義的其他對象。表中包含行(也稱為記錄或元組)和列(也稱為字段或?qū)傩裕┑募?。表上有幾種類型的控制,例如約束、觸發(fā)器、默認(rèn)值和自定義用戶數(shù)據(jù)類型,用于保證數(shù)據(jù)的有效性。文件與文件組每個SQLServer數(shù)據(jù)庫至少具有兩個文件:一個數(shù)據(jù)文件和一個日志文件。數(shù)據(jù)文件包含數(shù)據(jù)和對象,例如表、索引、存儲過程和視圖。日志文件包含恢復(fù)數(shù)據(jù)庫中的所有事務(wù)所需的信息。數(shù)據(jù)庫文件分為主要數(shù)據(jù)庫文件、次要數(shù)據(jù)庫文件和事務(wù)日志文件。每個數(shù)據(jù)庫有一個主要文件組。此文件組包含主要數(shù)據(jù)文件和未放入其他文件組的所有次要文件,所有系統(tǒng)表也都被分配到主要文件組中。也可以創(chuàng)建用戶定義的文件組,用于將數(shù)據(jù)文件集合起來,以便于管理、數(shù)據(jù)分配和放置。事務(wù)日志每個SQLServer2008數(shù)據(jù)庫都具有事務(wù)日志,用于記錄所有事務(wù)以及每個事務(wù)對數(shù)據(jù)庫所做的修改。事務(wù)日志是數(shù)據(jù)庫的重要組件,如果系統(tǒng)出現(xiàn)故障,則可能需要使用事務(wù)日志將數(shù)據(jù)庫恢復(fù)到一致狀態(tài)。刪除或移動事務(wù)日志以前,必須完全了解此操作帶來的后果。任務(wù)2了解SQLServer系統(tǒng)數(shù)據(jù)庫master數(shù)據(jù)庫用于記錄SQLServer系統(tǒng)的所有系統(tǒng)級信息,包括實例范圍的元數(shù)據(jù)(例如登錄賬戶)、端點、鏈接服務(wù)器和系統(tǒng)配置設(shè)置。master數(shù)據(jù)庫還記錄了所有其他數(shù)據(jù)庫的存在、數(shù)據(jù)庫文件的位置以及SQLServer的初始化信息。model數(shù)據(jù)庫用作在SQLServer服務(wù)器實例上創(chuàng)建的所有數(shù)據(jù)庫的模板。model數(shù)據(jù)庫必須始終存在于SQLServer系統(tǒng)中。當(dāng)創(chuàng)建數(shù)據(jù)庫時,將通過復(fù)制model數(shù)據(jù)庫中的內(nèi)容來創(chuàng)建數(shù)據(jù)庫的第一部分,然后用空頁填充新數(shù)據(jù)庫的剩余部分。如果修改model數(shù)據(jù)庫,則以后創(chuàng)建的所有數(shù)據(jù)庫都將繼承這些修改。msdb數(shù)據(jù)庫由SQLServer代理用于計劃警報和作業(yè),或由其他功能(如ServiceBroker和數(shù)據(jù)庫郵件)使用。Resource數(shù)據(jù)庫它是只讀數(shù)據(jù)庫,包含SQLServer中的所有系統(tǒng)對象。SQLServer系統(tǒng)對象(如sys.objects)在物理上保留在Resource數(shù)據(jù)庫中,但在邏輯上卻顯示在每個數(shù)據(jù)庫的sys架構(gòu)中。Resource數(shù)據(jù)庫不包含用戶數(shù)據(jù)或用戶元數(shù)據(jù)。tempdb數(shù)據(jù)庫tempdb系統(tǒng)數(shù)據(jù)庫是一個全局資源,可供連接到SQLServer實例的所有用戶使用,可用于保存各種臨時對象。任務(wù)3認(rèn)識數(shù)據(jù)庫狀態(tài)和文件狀態(tài)數(shù)據(jù)庫狀態(tài)數(shù)據(jù)庫總是處于一個特定的狀態(tài)中等。若要確認(rèn)數(shù)據(jù)庫的當(dāng)前狀態(tài),可選擇sys.databases目錄視圖中的state_desc列或DATABASEPROPERTYEX函數(shù)中的Status屬性。ONLINE:在線狀態(tài)或聯(lián)機狀態(tài);OFFLINE:離線狀態(tài)或脫機狀態(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ù)庫使用SQLServerManagementStudio創(chuàng)建數(shù)據(jù)庫在對象資源管理器中,連接并展開SQLServer數(shù)據(jù)庫引擎實例右鍵單擊“數(shù)據(jù)庫”,選擇“新建數(shù)據(jù)庫”命令指定數(shù)據(jù)庫的名稱接受所有默認(rèn)值來創(chuàng)建數(shù)據(jù)庫,或?qū)δJ(rèn)值進(jìn)行修改并創(chuàng)建數(shù)據(jù)庫使用CREATEDATABASE語句按默認(rèn)設(shè)置創(chuàng)建數(shù)據(jù)庫CREATEDATABASEDB02;使用CREATEDATABASE語句按指定要求創(chuàng)建數(shù)據(jù)庫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)知識CREATEDATABASE語句CREATEDATABASEdatabase_name
[ON
[PRIMARY][<filespec>[,...n]
[,<filegroup>[,...n]]
[LOGON{<filespec>[,...n]}]]
[COLLATEcollation_name]][;]Transact-SQL語法約定任務(wù)5
設(shè)置數(shù)據(jù)庫為脫機狀態(tài)任務(wù)實現(xiàn)USEmaster;GOALTERDATABASEDB01SETOFFLINE;GO數(shù)據(jù)庫選項自動選項:控制某些自動行為。如AUTO_CLOSE選項游標(biāo)選項:控制游標(biāo)的行為和范圍。如CURSOR_CLOSE_ON_COMMIT、CURSOR_DEFAULT選項數(shù)據(jù)庫可用性選項:控制數(shù)據(jù)庫是聯(lián)機還是脫機等外部訪問選項:控制是否允許外部資源(如另一個數(shù)據(jù)庫中的對象)訪問數(shù)據(jù)庫。如DB_CHAINING選項參數(shù)化選項PARAMETERIZATION:控制參數(shù)化選項?;謴?fù)選項:控制數(shù)據(jù)庫的恢復(fù)模式。如RECOVERY選項快照隔離選項,確定事務(wù)隔離級別。SQL選項,用于控制ANSI相容性選項。任務(wù)5
擴展數(shù)據(jù)庫任務(wù)實現(xiàn)ALTERDATABASEDB02MODIFYFILE(NAME=DB02,SIZE=5MB);GOALTERDATABASEDB02ADDFILE(NAME=DBData,FILENAME='d:\mssql\MyDBData.ldf',SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=10%);GOALTERDATABASE語句用于修改與數(shù)據(jù)庫關(guān)聯(lián)的文件和文件組,可以在數(shù)據(jù)庫中添加或刪除文件和文件組、更改數(shù)據(jù)庫或其文件和文件組的屬性任務(wù)6收縮數(shù)據(jù)庫(1)使用SQLServerManagementStudio收縮數(shù)據(jù)文件在對象資源管理器中連接到SQLServer數(shù)據(jù)庫引擎實例。右鍵單擊要收縮的數(shù)據(jù)庫,選擇“任務(wù)”→“收縮”→“文件”命令。從“文件類型”列表中選擇“數(shù)據(jù)”,從“文件名”列表中選擇數(shù)據(jù)文件。根據(jù)需要,選中“在釋放未使用的空間前重新組織頁”選項。在“將文件收縮到”框中輸入數(shù)字。單擊“確定”按鈕。從數(shù)據(jù)庫中刪除數(shù)據(jù)文件在ALTERDATABASE語句中使用REMOVEFILE子句從數(shù)據(jù)庫中刪除數(shù)據(jù)文件。任務(wù)6收縮數(shù)據(jù)庫(2)相關(guān)知識自動收縮數(shù)據(jù)庫ALTERDATABASEdatabase_nameSETAUTO_SHRINKON;使用DBCCSHRINKDATABASE收縮數(shù)據(jù)庫DBCCSHRINKDATABASE(database_name|database_id|0,target_percent)使用DBCCSHRINKFILE收縮數(shù)據(jù)庫DBCCSHRINKFILE({file_name|file_id},target_size)任務(wù)7擴展事務(wù)日志任務(wù)實現(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)知識當(dāng)一個數(shù)據(jù)庫增長或數(shù)據(jù)庫修改活動增加時,可能需要對事務(wù)日志進(jìn)行擴展。如果事務(wù)日志使用完了空間,SQLServer便不能記錄事務(wù),也不允許對數(shù)據(jù)進(jìn)行修改。任務(wù)8創(chuàng)建文件組任務(wù)實現(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ù)據(jù)庫中對文件進(jìn)行分組的一種管理機制。文件組不能獨立于數(shù)據(jù)庫文件創(chuàng)建。首次創(chuàng)建數(shù)據(jù)庫或者以后將更多文件添加到數(shù)據(jù)庫時,都可以創(chuàng)建文件組。一旦將文件添加到數(shù)據(jù)庫中,就不可能再將這些文件移到其他文件組。一個文件不能是多個文件組的成員。文件組只能包含數(shù)據(jù)文件。事務(wù)日志文件不能是文件組的一部分。任務(wù)9分離和附加數(shù)據(jù)庫任務(wù)實現(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ù)據(jù)庫
是指將數(shù)據(jù)庫從SQLServer實例中刪除,但使數(shù)據(jù)庫在其數(shù)據(jù)文件和事務(wù)日志文件中保持不變。此后可以使用這些文件將數(shù)據(jù)庫附加到任何SQLServer實例,包括分離該數(shù)據(jù)庫的服務(wù)器。分離數(shù)據(jù)庫既可以使用SQLServerManagementStudio工具來實現(xiàn),也可以通過執(zhí)行sp_detach_db系統(tǒng)存儲過程來實現(xiàn)。附加數(shù)據(jù)庫
若要將分離后的數(shù)據(jù)庫重新附加到SQLServer實例中,可以使用SQLServerManagementStudio來實現(xiàn),也可以通過在CREATEDATABASE語句中使用FORATTACH子句來實現(xiàn)。任務(wù)10重命名數(shù)據(jù)庫任務(wù)實現(xiàn)ALTERDATABASEDB01
SETSINGLE_USER;
GO
ALTERDATABASEDB01
MODIFYNAME=Demo;
GO
ALTERDATABASEDemo
SETMULTI_USER;
GO相關(guān)知識使用SQLServerManagementStudio重命名數(shù)據(jù)庫:在對象資源管理器中右鍵單擊數(shù)據(jù)庫并選擇“重命名”命令,然后輸入新的數(shù)據(jù)庫名稱。在ALTERDATABASE語句中使用MODIFYNAME=new_database_name子句來實現(xiàn)數(shù)據(jù)庫的重命名。任務(wù)11更改數(shù)據(jù)庫所有者任務(wù)實現(xiàn)ALTERAUTHORIZATIONONDATABASE::libraryTO[ABC\Jack];GO相關(guān)知識在SQLServer中,可以更改當(dāng)前數(shù)據(jù)庫的所有者。任何擁有連接到SQLServer的訪問權(quán)限的用戶(SQLServer登錄賬戶或Windows用戶)均可以成為數(shù)據(jù)庫的所有者。無法更改系統(tǒng)數(shù)據(jù)庫的所有權(quán)。更改數(shù)據(jù)庫的所有者使用SQLServerManagementStudio工具來實現(xiàn)用ALTERAUTHORIZATION語句來更改數(shù)據(jù)庫的所有者.任務(wù)12刪除數(shù)據(jù)庫任務(wù)實現(xiàn)DROPDATABASEDB02,Demo相關(guān)知識刪除數(shù)據(jù)庫在SQLServerManagementStudio對象資源管理器中右鍵單擊該數(shù)據(jù)庫,選擇“刪除”命令,當(dāng)出現(xiàn)“刪除對象”對話框時單擊“確定”按鈕。使用DROPDATABASE來刪除數(shù)據(jù)庫,語法格式如下:DROPDATABASEdatabase_name[,...n]示例DROPDATABASESales,NewSales;任務(wù)13備份數(shù)據(jù)庫任務(wù)實現(xiàn)EXECsp_addumpdevice'disk','AdvWorksData',
'd:\mssql\backup\AdvWorksData.bak';
BACKUPDATABASEAdventureWorksTOAdvWorksData;
GO相關(guān)知識備份是數(shù)據(jù)的副本,可用于在系統(tǒng)發(fā)生故障后還原和恢復(fù)數(shù)據(jù)。使用備份可以在發(fā)生故障后還原數(shù)據(jù)。通過適當(dāng)?shù)膫浞菘梢詮亩喾N故障中恢復(fù),包括媒體故障、用戶錯誤(例如誤刪除了某個表)、硬件故障(例如磁盤驅(qū)動器損壞或服務(wù)器報廢)以及自然災(zāi)難等。此外,數(shù)據(jù)庫備份對于例行的工作也很有用,例如,將數(shù)據(jù)庫從一臺服務(wù)器復(fù)制到另一臺服務(wù)器、設(shè)置數(shù)據(jù)庫鏡像、政府機構(gòu)文件歸檔和災(zāi)難恢復(fù)。使用SQLServerManagementStudio備份數(shù)據(jù)庫使用BACKUPDATABASE語句備份數(shù)據(jù)庫任務(wù)14還原數(shù)據(jù)庫任務(wù)實現(xiàn)RESTOREDATABASEAdventureWorksFROMAdvWorksData;相關(guān)知識使用SQLServerManagementStudio還原數(shù)據(jù)庫使用RESTORE語句還原數(shù)據(jù)庫1項目1初識SQLServer20082項目2創(chuàng)建和管理數(shù)據(jù)庫3項目3創(chuàng)建和管理表4項目4操作數(shù)據(jù)庫數(shù)據(jù)5項目5檢索數(shù)據(jù)庫數(shù)據(jù)6項目6創(chuàng)建索引和視圖7項目7Transact-SQL程序設(shè)計8項目8創(chuàng)建存儲過程和觸發(fā)器9項目9管理數(shù)據(jù)安全CONTENTS目錄項目3創(chuàng)建和管理表CONTENTS
目錄任務(wù)1表的設(shè)計任務(wù)2認(rèn)識SQLServer數(shù)據(jù)類型任務(wù)3創(chuàng)建表任務(wù)4在表中添加列任務(wù)5修改列的屬性任務(wù)6在表中創(chuàng)建標(biāo)識列任務(wù)7在表中創(chuàng)建主鍵任務(wù)8在表中創(chuàng)建唯一約束任務(wù)9在表中創(chuàng)建檢查約束任務(wù)10在表中創(chuàng)建列的默認(rèn)值任務(wù)11在表中創(chuàng)建外鍵項目12創(chuàng)建數(shù)據(jù)庫關(guān)系圖任務(wù)13查看表的定義和數(shù)據(jù)任務(wù)14重命名表任務(wù)15從數(shù)據(jù)庫中刪除表任務(wù)1表的設(shè)計任務(wù)實現(xiàn)對相關(guān)部門進(jìn)行調(diào)查,在此基礎(chǔ)上進(jìn)行需求分析,確定數(shù)據(jù)庫中包含的表確定每個表中包含的哪些列、每個列是何種數(shù)據(jù)類型以及在哪個列建立主鍵使用OfficeVisio軟件繪制出數(shù)據(jù)庫模型圖相關(guān)知識制訂表規(guī)劃表要存儲什么對象;表中每一列的數(shù)據(jù)類型和長度表中哪些列允許空值;是否要使用以及在何處使用約束、默認(rèn)值和規(guī)則使用何種索引以及在何處使用索引;哪些列是主鍵或外鍵規(guī)范化邏輯設(shè)計表應(yīng)該有一個標(biāo)識符;表應(yīng)只存儲單一類型實體的數(shù)據(jù)表應(yīng)避免可為空的列;表不應(yīng)有重復(fù)的值或列任務(wù)2認(rèn)識SQLServer數(shù)據(jù)類型(1)任務(wù)實現(xiàn)使用SQLServerManagementStudio創(chuàng)建用戶定義數(shù)據(jù)類型使用CREATETYPE語句創(chuàng)建用戶定義數(shù)據(jù)類型相關(guān)知識數(shù)據(jù)類型概述:數(shù)據(jù)類型是一種屬性,用于指定對象可保存的數(shù)據(jù)的類型:整數(shù)數(shù)據(jù)、字符數(shù)據(jù)、貨幣數(shù)據(jù)、日期和時間數(shù)據(jù)以及二進(jìn)制字符串等。在SQLServer中,每個列、局部變量、表達(dá)式和參數(shù)都具有一個相關(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)識SQLServer數(shù)據(jù)類型(2)字符串?dāng)?shù)據(jù)類型普通字符串:包括固定長度字符串類型char(n)、可變長度字符串類型varchar(n)和文本類型text。Unicode字符串:包括固定長度字符串類型nchar(n)、可變長度字符串類型nvarchar(n)和文本類型ntext。二進(jìn)制數(shù)據(jù)類型:包括固定長度二進(jìn)制數(shù)據(jù)類型binary(n)、可變長度二進(jìn)制數(shù)據(jù)類型varbinary(n)和大量二進(jìn)制數(shù)據(jù)類型image。日期和時間數(shù)據(jù)類型:date、datetime、datetime2、datetimeoffset、smalldatetime以及time。其他數(shù)據(jù)類型:cursor、hierarchyid、sql_variant、table、timestamp、uniqueidetifier以及xml別名數(shù)據(jù)類型:使用SQLServerManagementStudio工具來創(chuàng)建和刪除別名數(shù)據(jù)類型,或者使用CREATETYPE和DROPTYPE語句來創(chuàng)建和刪除別名數(shù)據(jù)類型。任務(wù)3創(chuàng)建表任務(wù)實現(xiàn)USE學(xué)生成績;
GO
CREATETABLE系別(
系別編號dep_numIDENTITY(1,1),系別名稱varchar(50)NOTNULL
);
CREATETABLE班級(
班級編號class_num,系別編號dep_num,專業(yè)名稱varchar(50)NOTNULL
);相關(guān)知識使用表設(shè)計器創(chuàng)建表使用CREATETABLE語句創(chuàng)建表任務(wù)4在表中添加列任務(wù)實現(xiàn)USE學(xué)生成績;
GO
CREATETABLE課程(
課程編號intNOTNULL,課程名稱varchar(20)NOTNULL
);
GO
ALTERTABLE課程
ADD課程類別char(8)NOTNULL,考試類別char(4)NOTNULL;
GO相關(guān)知識使用表設(shè)計器添加或刪除表列使用ALTERTABLE語句中添加或刪除表列任務(wù)5修改列的屬性任務(wù)實現(xiàn)CREATETYPEcourse_num
FROMsmallintNOTNULL;
GO
ALTERTABLE課程
ALTERCOLUMN課程編號course_num;
GO
ALTERTABLE課程
ALTERCOLUMN課程名稱varchar(50)NOTNULL;
GO相關(guān)知識表中的每一列都具有一組屬性,例如名稱、數(shù)據(jù)類型、為空性以及數(shù)據(jù)長度等。列的所有屬性構(gòu)成表中列的定義。創(chuàng)建表時,可以對各列的屬性進(jìn)行設(shè)置。創(chuàng)建表之后,還可以根據(jù)需要對列的屬性進(jìn)行修改。若要設(shè)置列屬性,可使用表設(shè)計器或ALTERTABLE語句來實現(xiàn)。任務(wù)6在表中創(chuàng)建標(biāo)識列任務(wù)實現(xiàn)ALTERTABLE課程
DROPCOLUMN課程編號;
GO
ALTERTABLE課程
ADD課程編號course_numIDENTITY(1,1);
GO相關(guān)知識通過使用IDENTITY屬性可以實現(xiàn)標(biāo)識列,這使得開發(fā)人員可以為表中所插入的第一行指定一個標(biāo)識號(稱為種子),并確定要添加到種子上的增量以確定后面的標(biāo)識號。一個表只能有一個使用IDENTITY屬性定義的列,并且必須通過使用decimal、int、numeric、smallint、bigint或tinyint數(shù)據(jù)類型來定義該列。種子和增量的默認(rèn)值均為1。任務(wù)7在表中創(chuàng)建主鍵任務(wù)實現(xiàn)CREATETABLE教師(
教師編號smallintNOTNULL
IDENTITY(1,1)PRIMARYKEYCLUSTERED,
...
);
GO
ALTERTABLE系別
ADDCONSTRAINTPK_系別PRIMARYKEYCLUSTERED(系別編號);
GO相關(guān)知識表通常具有包含唯一標(biāo)識表中每一行的值的一列或一組列,這樣的一列或多列稱為表的主鍵(PRIMARYKEY,PK),主鍵用于強制表的實體完整性。在創(chuàng)建或修改表時,可以通過定義PRIMARYKEY約束來創(chuàng)建主鍵。一個表只能有一個PRIMARYKEY約束,并且PRIMARYKEY約束中的列不能接受空值。由于PRIMARYKEY約束可保證數(shù)據(jù)的唯一性,因此通常對標(biāo)識列定義這種約束。任務(wù)8在表中創(chuàng)建唯一約束任務(wù)實現(xiàn)ALTERTABLE課程
ADDCONSTRAINTPK_課程PRIMARYKEYCLUSTERED(課程編號);
GO
ALTERTABLE課程
ADDCONSTRAINTUK_課程UNIQUENONCLUSTERED(課程名稱);
GO相關(guān)知識唯一約束即UNIQUE約束。通過創(chuàng)建唯一約束可以確保在非主鍵列中不輸入重復(fù)的值。UNIQUE約束和PRIMARYKEY約束都強制唯一性,但要想強制一列或多列組合(不是主鍵)的唯一性時就應(yīng)該使用UNIQUE約束。對一個表可以定義多個UNIQUE約束,但只能定義一個PRIMARYKEY約束。UNIQUE約束允許NULL值,這一點不同于PRIMARYKEY約束。當(dāng)與參與UNIQUE約束的任何值一起使用時,每列只允許一個空值。FOREIGNKEY約束可以引用UNIQUE約束。任務(wù)9在表中創(chuàng)建檢查約束任務(wù)實現(xiàn)CREATETABLE學(xué)生(
學(xué)號stu_numPRIMARYKEYCHECK(學(xué)號LIKE'[0-9][0-9][0-9][0-9][0-9][0-9]'),
班級編號class_num,姓名name,
性別char(2)NOTNULLCHECK(性別='男'OR性別='女'),
出生日期dateNOTNULL,入學(xué)日期dateNOTNULL,
政治面貌char(8)CHECK(政治面貌='中共黨員'OR政治面貌='共青團(tuán)員'),
...);GO相關(guān)知識檢查約束即CHECK約束。檢查約束通過限制列可接受的值以強制域的完整性。CHECK約束通過不基于其他列中的數(shù)據(jù)的邏輯表達(dá)式來確定有效值。可以通過任何基于邏輯運算符返回TRUE或FALSE的邏輯(布爾)表達(dá)式來創(chuàng)建CHECK約束。任務(wù)10在表中創(chuàng)建列的默認(rèn)值任務(wù)實現(xiàn)ALTERTABLE教師ADDCONSTRAINTdf_教師DEFAULT('大學(xué)')FOR學(xué)歷;GO相關(guān)知識在數(shù)據(jù)庫中,記錄中的每列均必須有值,即使該值是NULL。在實際應(yīng)用中可能會有這種情況:必須向表中加載一行數(shù)據(jù)但不知道某一列的值,或該值尚不存在。如果列允許空值,就可以為行加載空值。由于可能不希望有可為空的列,因此最好是為列定義DEFAULT定義(如果合適)。當(dāng)將某行加載到某列具有DEFAULT定義的表中時,即隱式指示SQLServer2008數(shù)據(jù)庫引擎將默認(rèn)值插入到?jīng)]有指定值的列中。如果列不允許空值且沒有DEFAULT定義,就必須為該列顯式指定值,否則數(shù)據(jù)庫引擎會返回錯誤,指出該列不允許空值。任務(wù)11在表中創(chuàng)建外鍵任務(wù)實現(xiàn)CREATETABLE成績(
學(xué)號stu_numFOREIGNKEYREFERENCES學(xué)生(學(xué)號),
課程編號course_numFOREIGNKEYREFERENCES課程(課程編號),
成績tinyintNULLCHECK(成績>=0AND成績<=100),CONSTRAINTPK_成績PRIMARYKEY(學(xué)號,課程編號));相關(guān)知識外鍵(FOREIGNKEY,F(xiàn)K)是用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列。在外鍵引用中,當(dāng)A表的列引用作為B表的主鍵值的列時,便在兩表之間創(chuàng)建了鏈接,該列就成為A表的外鍵。使用表設(shè)計器創(chuàng)建外鍵約束使用CREATETABLE語句創(chuàng)建外鍵約束任務(wù)12創(chuàng)建數(shù)據(jù)庫關(guān)系圖任務(wù)實現(xiàn)展開數(shù)據(jù)庫,右鍵單擊“數(shù)據(jù)庫關(guān)系圖”,選擇“新建數(shù)據(jù)庫關(guān)系圖”;在“添加表”對話框中選擇并添加表;將主鍵表的主鍵拖到外鍵表的外鍵上。相關(guān)任務(wù)數(shù)據(jù)庫關(guān)系圖是數(shù)據(jù)庫中對象的圖形表示形式。數(shù)據(jù)庫關(guān)系圖既可以是整個數(shù)據(jù)庫結(jié)構(gòu)的圖片,也可以是部分?jǐn)?shù)據(jù)庫結(jié)構(gòu)的圖片,包括表、表中的列以及各個表之間的關(guān)系。使用數(shù)據(jù)庫關(guān)系圖可以創(chuàng)建和修改表、列、關(guān)系和鍵,也可以修改索引和約束。任務(wù)13查看表的定義和數(shù)據(jù)任務(wù)實現(xiàn)USE學(xué)生成績;GOEXECsp_help學(xué)生;GOSELECT*FROM學(xué)生;GO相關(guān)知識在數(shù)據(jù)庫中創(chuàng)建表之后,可能需要查找有關(guān)表屬性的信息,例如列的名稱、數(shù)據(jù)類型或其約束的名稱等,最為常見的任務(wù)是查看表中的數(shù)據(jù)。此外,還可以通過顯示表的依賴關(guān)系來確定哪些對象(例如視圖、存儲過程和觸發(fā)器)是由表決定的。在更改表時,相關(guān)的對象可能會受到影響。在對象資源管理器中展開一個表下方的“列”、“鍵”、“約束”結(jié)點,就可以查看該表的相關(guān)信息。也可以使用系統(tǒng)存儲過程、目錄視圖或查詢語句來查看表的相關(guān)信息。任務(wù)14重命名表任務(wù)實現(xiàn)USEAdventureWorks2008R2;GOEXECsp_rename'Sales.SalesTerritory','SalesTerr';GO相關(guān)知識若要更改表的名稱,可在對象資源管理器中右鍵單擊該表,然后選擇“重命名”,輸入新的名稱。也可以使用sp_rename系統(tǒng)存儲過程在當(dāng)前數(shù)據(jù)庫中更改用戶創(chuàng)建對象的名稱,此對象可以是表、索引、列、別名數(shù)據(jù)類型。任務(wù)15從數(shù)據(jù)庫中刪除表任務(wù)實現(xiàn)USETest;GOCREATETABLETest(colaintPRIMARYKEY,colbchar(10)NOTNULL);GODROPTABLETest相關(guān)知識刪除表時,該表的結(jié)構(gòu)定義、數(shù)據(jù)、全文索引、約束和索引都從數(shù)據(jù)庫中永久刪除??墒褂脤ο筚Y源管理器來從數(shù)據(jù)庫中刪除表,操作方法是:展開數(shù)據(jù)庫下方的“表”結(jié)點,右鍵單擊要刪除的表,然后選擇“刪除”命令,單擊“確定”按鈕。也可以使用DROPTABLE語句從數(shù)據(jù)庫中刪除表。1項目1初識SQLServer20082項目2創(chuàng)建和管理數(shù)據(jù)庫3項目3創(chuàng)建和管理表4項目4操作數(shù)據(jù)庫數(shù)據(jù)5項目5檢索數(shù)據(jù)庫數(shù)據(jù)6項目6創(chuàng)建索引和視圖7項目7Transact-SQL程序設(shè)計8項目8創(chuàng)建存儲過程和觸發(fā)器9項目9管理數(shù)據(jù)安全CONTENTS目錄項目4
操作數(shù)據(jù)庫數(shù)據(jù)CONTENTS
目錄任務(wù)1使用結(jié)果窗格插入表數(shù)據(jù)任務(wù)2使用INSERT語句插入數(shù)據(jù)任務(wù)3使用BULKINSERT語句復(fù)制數(shù)據(jù)任務(wù)4使用INSERT...SELECT語句插入表數(shù)據(jù)任務(wù)5使用結(jié)果窗格編輯表數(shù)據(jù)任務(wù)6使用UPDATE語句更新數(shù)據(jù)任務(wù)7在UPDATE語句中使用FROM子句任務(wù)8使用TOP子句限制更新的數(shù)據(jù)任務(wù)9使用結(jié)果窗格刪除數(shù)據(jù)任務(wù)10使用DELETE語句刪除數(shù)據(jù)任務(wù)11使用TOP子句限制刪除的行
項目12使用TRUNCATETABLE語句刪除所有行任務(wù)13向SQLServer數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)任務(wù)14從SQLServer數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)任務(wù)1使用結(jié)果窗格插入表數(shù)據(jù)任務(wù)實現(xiàn)展開數(shù)據(jù)庫,展開數(shù)據(jù)庫下方的“表”右鍵單擊表,選擇“編輯前200行”在“結(jié)果”窗格中,定位到添加新數(shù)據(jù)行的空白行,輸入各列的值,按Tab鍵移到下一個單元格離開當(dāng)前行會將其提交到數(shù)據(jù)庫相關(guān)知識添加數(shù)據(jù)的方法使用查詢編輯器的“結(jié)果”窗格向該表中添加數(shù)據(jù)使用INSERT語句向該表中添加數(shù)據(jù)使用BULKINSERT語句以用戶指定的格式添加數(shù)據(jù)使用INSERT和SELECT將來自其他表的數(shù)據(jù)添加到該表中?!敖Y(jié)果”窗格是查詢設(shè)計器的一個組成部分,用于顯示最近執(zhí)行的SELECT查詢的結(jié)果。如果看不到“結(jié)果”窗格,可選擇“查詢設(shè)計器”→“窗格”→“結(jié)果”命令。任務(wù)2使用INSERT語句插入表數(shù)據(jù)任務(wù)實現(xiàn)USE學(xué)生成績;INSERTINTO課程(課程名稱,課程類別,考試類別)VALUES('計算機應(yīng)用基礎(chǔ)','公共基礎(chǔ)','考試'),('辦公軟件','公共基礎(chǔ)','考查'),...GOINSERTINTO教師(系別編號,姓名,性別,出生日期,參加工作時間,學(xué)歷,職稱,政治面貌)VALUES(1,'何曉明','女','1975-8-18','1999-7-12','大學(xué)','講師','中共黨員'),...相關(guān)知識使用INSERT語句可以將一個或多個新行添加到表中。如果列滿足以下條件,則自動為列提供值:若具有IDENTITY屬性,則使用下一個增量標(biāo)識值;若指定有默認(rèn)值,則使用列的默認(rèn)值;若具有timestamp數(shù)據(jù)類型,則使用當(dāng)前時間戳值;若可為空值,則使用空值任務(wù)3使用BULKINSERT語句復(fù)制數(shù)據(jù)任務(wù)實現(xiàn)在記事本程序中錄入學(xué)生信息并保存為文本文件,要求每行結(jié)束時按Enter鍵,各列之間用逗號分隔,所有列值都不需要使用定界符,但這些值必須與相應(yīng)列的數(shù)據(jù)類型兼容。在查詢編輯窗口中編寫以下語句:BULKINSERT學(xué)生成績.dbo.學(xué)生FROM'd:\mssql\第4章\學(xué)生信息.txt'WITH(FIELDTERMINATOR=',',ROWTERMINATOR='\n);GO相關(guān)知識使用BULKINSERT語句可以按用戶指定的格式將數(shù)據(jù)文件加載到數(shù)據(jù)庫表中database_name為包含指定表的數(shù)據(jù)庫的名稱schema_name指定表的名稱data_file指定數(shù)據(jù)文件的完整路徑FIELDTERMINATOR指定數(shù)據(jù)文件的字段終止符任務(wù)4使用INSERT...SELECT語句插入表數(shù)據(jù)任務(wù)實現(xiàn)USE學(xué)生成績;INSERTINTO成績(學(xué)號,課程編號)SELECT學(xué)生.學(xué)號,授課.課程編號FROM學(xué)生,授課WHERE(學(xué)生.學(xué)號NOTIN(SELECT學(xué)號FROM成績)AND授課.班級編號=學(xué)生.班級編號);GO相關(guān)知識在INSERT語句中,可以使用SELECT子查詢將一個或多個表或視圖中的值添加到另一個表中。使用SELECT子查詢可以同時在表中插入多行數(shù)據(jù)。子查詢的選擇列表必須與INSERT語句的列列表匹配。如果沒有指定列列表,則選擇列表必須與正在其中執(zhí)行插入操作的表或視圖的列匹配。任務(wù)5使用結(jié)果窗格編輯表數(shù)據(jù)任務(wù)實現(xiàn)展開數(shù)據(jù)庫,展開表,右鍵單擊包含數(shù)據(jù)的表,選擇“編輯前200行”在“結(jié)果”窗格中,為列填寫新值按向下箭頭鍵把光標(biāo)移到下一行若要顯示更多的行,可在“SQL”窗格中更改TOP關(guān)鍵字后的數(shù)字;若要顯示表中的全部行,可刪除TOP關(guān)鍵字及其后面的數(shù)字相關(guān)知識對表中已有的數(shù)據(jù)進(jìn)行修改的方法使用“結(jié)果”窗格對表中數(shù)據(jù)進(jìn)行編輯使用UPDATE語句對表中的一行或多行數(shù)據(jù)進(jìn)行修改使用FROM子句對UPDATE語句進(jìn)行擴展使用TOP子句來限制UPDATE語句中修改的行數(shù)任務(wù)6使用UPDATE語句更新數(shù)據(jù)任務(wù)實現(xiàn)USE學(xué)生成績;UPDATE成績SET成績=86WHERE學(xué)號='120101'AND課程編號=1;UPDATE成績SET成績=92WHERE學(xué)號='120102'AND課程編號=1;UPDATE成績SET成績=87WHERE學(xué)號='120103'AND課程編號=1;...相關(guān)知識UPDATE語句用于更改表或視圖中單行、行組或所有行的數(shù)據(jù)值。database_name指定數(shù)據(jù)庫的名稱,table_orview_name指定要更新行的表或視圖的名稱。SET子句包含要更新的列和每個列的新值的列表(用逗號分隔)。column_name指定包含要更改的數(shù)據(jù)的列,column_name必須已經(jīng)存在于table_orview_name中,不能更新標(biāo)識列。expression指定返回單個值的變量、文字值、表達(dá)式或嵌套SELECT語句,expression返回的值替換column_name中的現(xiàn)有值。任務(wù)7在UPDATE語句中使用FROM子句任務(wù)實現(xiàn)UPDATE成績SET成績=92FROM學(xué)生,課程WHERE學(xué)生.姓名='馮岱若'AND課程.課程名稱='網(wǎng)頁設(shè)計'AND學(xué)生.學(xué)號=成績.學(xué)號AND課程.課程編號=成績.課程編號;GO相關(guān)知識在UPDATE語句中使用了FROM子句,可以將數(shù)據(jù)從一個或多個表或視圖拉入要更新的表中table_name指定UPDATE要更新的目標(biāo)表。SET子句指定要更新的列和所使用的數(shù)據(jù),expression的值中可以同時包含目標(biāo)表和FROM子句指定的表中的列。WHERE子句執(zhí)行以下功能:指定要在目標(biāo)表中更新的行;指定源表中可以為更新提供值的行。任務(wù)8使用TOP限制更新的數(shù)據(jù)任務(wù)實現(xiàn)USEAdventureWorks;UPDATETOP(10)Sales.StoreSETSalesPersonID=276WHERESalesPersonID=275;GO相關(guān)知識在UPDATE語句中,可以使用TOP子句來限制修改的行數(shù)使用TOP(n)子句時,將基于隨機選擇n行來執(zhí)行更新操作任務(wù)9使用結(jié)果窗格刪除表數(shù)據(jù)相關(guān)知識刪除數(shù)據(jù)的方法:在“結(jié)果”窗框中刪除數(shù)據(jù)使用DELETE語句從表中刪除滿足指定條件的若干行數(shù)據(jù)使用TOP語句限制刪除的行數(shù)使用TRUNCATETABLE語句從表中快速刪除所有行。在“結(jié)果”窗格中刪除數(shù)據(jù)的操作步驟右鍵單擊數(shù)據(jù)表,選擇“編輯前200行”。單擊待刪除行左側(cè)的選擇框。若要選擇多行,可按住Ctrl鍵或Shift鍵單擊各行的選擇框,或在這些行的選擇框上拖動鼠標(biāo);若要選擇全部行,可單擊列標(biāo)題行中的選擇框。按Delete鍵。在確認(rèn)消息框中單擊“是”。任務(wù)10使用DELETE語句刪除數(shù)據(jù)任務(wù)實現(xiàn)USE學(xué)生成績;DELETEFROM成績
FROM學(xué)生
WHERE學(xué)生.姓名='劉春明'AND學(xué)生.學(xué)號=成績.學(xué)號;相關(guān)知識DELETE語句用于刪除表或視圖中的一行或多行從一個表中刪除所有行后,該表仍會保留在數(shù)據(jù)庫中。DELETE語句只從表中刪除行,若要從數(shù)據(jù)庫中刪除表,可使用DROPTABLE語句。任務(wù)11使用TOP限制刪除的行任務(wù)實現(xiàn)USEAdventureWorks;GODELETETOP(20)FROMPurchasing.PurchaseOrderDetailWHEREDueDate<'20020701';GOUSEAdventureWorks2008R2;GODELETETOP(2.5)PERCENTFROMProduction.ProductInventory;相關(guān)知識在DELETE語句中,可以使用TOP(expression)[PERCENT]子句來指定將要刪除的任意行數(shù)或任意行的百分比,其中expression可以為行數(shù)或行的百分比。與INSERT、UPDATE或DELETE一起使用的TOP表達(dá)式中被引用行將不按任何順序排列。任務(wù)12使用TRUNCATETABLE刪除所有行任務(wù)實現(xiàn)USEAdventureWorks;GOTRUNCATETABLEHumanResources.JobCandidate;GO相關(guān)知識使用TRUNCATETABLE語句可以從表中刪除所有行,而不記錄單個行刪除操作。該語句在功能上與沒有WHERE子句的DELETE語句相同;TRUNCATETABLE速度更快,使用的系統(tǒng)資源和事務(wù)日志資源更少。任務(wù)13向SQLServer數(shù)據(jù)庫中導(dǎo)入數(shù)據(jù)任務(wù)實現(xiàn)右鍵單擊接受數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫,選擇“任務(wù)”→“導(dǎo)入數(shù)據(jù)”啟動SQLServer導(dǎo)入和導(dǎo)出向?qū)?,選擇數(shù)據(jù)源,如選擇Access數(shù)據(jù)庫文件選擇目標(biāo),指定要將數(shù)據(jù)復(fù)制到何處;選擇源表和源視圖保存并運行包相關(guān)知識導(dǎo)入數(shù)據(jù)是指將外部數(shù)據(jù)源中的數(shù)據(jù)復(fù)制到SQLServer數(shù)據(jù)庫中。導(dǎo)入數(shù)據(jù)過程可在向?qū)У奶崾鞠峦瓿?,包括選擇提供數(shù)據(jù)的數(shù)據(jù)源和接受數(shù)據(jù)的SQLServer目標(biāo)數(shù)據(jù)庫、指定表復(fù)制或查詢選項、選擇源表和源視圖以及設(shè)置是否保存SSIS包等。任務(wù)14從SQLServer數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)任務(wù)實現(xiàn)右鍵單擊要導(dǎo)出數(shù)據(jù)的數(shù)據(jù)庫,選擇“任務(wù)”→“導(dǎo)出數(shù)據(jù)”命令啟動SQLServer導(dǎo)入和導(dǎo)出向?qū)?,指定要從中?fù)制數(shù)據(jù)的SQLServer數(shù)據(jù)庫。選擇目標(biāo),例如選擇Accesss數(shù)據(jù)庫文件選擇源表和源視圖,保存并執(zhí)行包相關(guān)知識導(dǎo)出數(shù)據(jù)是指將存儲在SQLServer數(shù)據(jù)庫中的數(shù)據(jù)復(fù)制到其他數(shù)據(jù)庫、電子表格或文本文件中。導(dǎo)出數(shù)據(jù)的整個操作過程可以在向?qū)崾鞠峦瓿桑饕襟E包括選擇提供數(shù)據(jù)的數(shù)據(jù)源和接受數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫或文件、指定表復(fù)制或查詢選項、選擇源表和源視圖以及設(shè)置是否保存SSIS包等。1項目1初識SQLServer20082項目2創(chuàng)建和管理數(shù)據(jù)庫3項目3創(chuàng)建和管理表4項目4操作數(shù)據(jù)庫數(shù)據(jù)5項目5檢索數(shù)據(jù)庫數(shù)據(jù)6項目6創(chuàng)建索引和視圖7項目7Transact-SQL程序設(shè)計8項目8創(chuàng)建存儲過程和觸發(fā)器9項目9管理數(shù)據(jù)安全CONTENTS目錄項目5
檢索數(shù)據(jù)庫數(shù)據(jù)CONTENTS
目錄(一)任務(wù)1認(rèn)識SELECT語句任務(wù)2從表中選擇所有列任務(wù)3從表中選擇特定列任務(wù)4從表中選擇特殊列任務(wù)5設(shè)置結(jié)果集列的名稱任務(wù)6在選擇列表中進(jìn)行計算任務(wù)7使用DISTINCT消除重復(fù)項任務(wù)8使用TOP限制結(jié)果集任務(wù)9使用沒有FROM子句的SELECT語句任務(wù)10在FROM子句中使用內(nèi)部聯(lián)接任務(wù)11在FROM子句中使用外部數(shù)據(jù)項目12在選擇表查詢中使用交叉聯(lián)接任務(wù)13在選擇查詢中使用比較搜索條件任務(wù)14使用范圍搜索條件任務(wù)15在選擇查詢中使用列表搜索條件任務(wù)16在搜索條件中使用模式匹配CONTENTS
目錄(二)任務(wù)17在選擇查詢中使用邏輯運算符任務(wù)18使用ORDERBY對數(shù)據(jù)排序任務(wù)19將TOP...WITHTIES與ORDERBY聯(lián)用任務(wù)20使用GROUPBY對數(shù)據(jù)分組任務(wù)21在分組操作中應(yīng)用搜索條件任務(wù)22使用聚合函數(shù)匯總數(shù)據(jù)任務(wù)23使用公用表表達(dá)式檢索數(shù)據(jù)任務(wù)24使用PIVOT運算符生成交叉表查詢?nèi)蝿?wù)25將查詢結(jié)果保存到表中任務(wù)26使用子查詢進(jìn)行集成員測試任務(wù)27使用子查詢進(jìn)行比較測試項目28使用子查詢進(jìn)行存在性測試任務(wù)29使用子查詢替代表達(dá)式任務(wù)1認(rèn)識SELECT語句任務(wù)實現(xiàn)在命令提示符下輸入sqlcmd,然后輸入要執(zhí)行的SQL語句:USE學(xué)生成績;GOSELECT學(xué)號,姓名,性別,出生日期FROM學(xué)生WHERE性別='女'ORDERBY出生日期;GO輸入QUIT命令,退出sqlcmd實用工具。相關(guān)知識SELECT語句的組成SELECT語句用于從數(shù)據(jù)庫中檢索行,并允許從一個或多個表中選擇一個或多個行或列。查詢工具介紹查詢編輯器sqlcmd實用工具bcp實用工具任務(wù)2從表中選擇所有列任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT*FROM系別;GO相關(guān)知識SELECT子句是SELECT語句的第一部分。該子句用于指定查詢返回的選擇列表,用于定義SELECT語句的結(jié)果集中的列。選擇列表是一系列以逗號分隔的表達(dá)式,每個表達(dá)式定義結(jié)果集中的一列。結(jié)果集中列的排列順序與選擇列表中表達(dá)式的排列順序相同。在SELECT子句中使用星號(*)可選擇表或視圖中的所有列。如果沒有使用限定符指定,則星號將被解析為對FROM子句中指定的所有表或視圖中的所有列的引用。如果使用表或視圖名稱進(jìn)行限定,則星號將被解析為對指定表或視圖中的所有列的引用。任務(wù)3從表中選擇特定列任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT班級編號,學(xué)號,姓名,性別,出生日期,政治面貌FROM學(xué)生;GO相關(guān)知識若要選擇表中的特定列作為SELECT查詢的輸出列,則應(yīng)當(dāng)在選擇列表中明確地列出每一列,各列之間用逗號分隔。如果創(chuàng)建表時在表名或列名中使用了空格(不符合標(biāo)識符命名規(guī)則),則編寫SELECT語句時需要使用方括號將表名或列名括起來,否則會出現(xiàn)錯誤信息。如果在FROM子句中指定了多個表,而這些表中又有同名的列,則在使用這些列時需要在列名前面冠以表名,以指明該列屬于哪個表。任務(wù)4從表中選擇特殊列任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT系別編號,$IDENTITY,姓名,性別,參加工作時間FROM教師;GO相關(guān)知識對于表中的標(biāo)識符列,可使用$IDENTITY關(guān)鍵字來引用。對于具有ROWGUIDCOL屬性的列,可使用$ROWGUID關(guān)鍵字來引用。如果在SELECT語句選取多個表作為查詢的數(shù)據(jù)來源,則必須在$IDENTITY和$ROWGUID關(guān)鍵字前面冠以表名,以指示這些列屬于哪個表。例如,Table1.$IDENTITY和Table1.$ROWGUID。任務(wù)5設(shè)置結(jié)果集列的名稱任務(wù)實現(xiàn)USEAdventureWorks;GOSELECTEmployeeIDAS雇員編號,TitleAS頭銜,BirthDateAS出生日期,HireDateAS雇用日期FROMHumanResources.Employee;GO相關(guān)知識使用AS子句來更改結(jié)果集列的名稱或為派生列分配名稱:column_nameAScolumn_aliasresult_column_expressionASderived_column_namecolumn_alias=column_namederived_column_name=result_column_expression任務(wù)6在選擇列表中進(jìn)行計算任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT班級編號,學(xué)號,姓名,DATEDIFF(yy,出生日期,GETDATE())AS年齡FROM學(xué)生;GO相關(guān)知識在SELECT語句的選擇列表中,可以包含通過對一個或多個簡單表達(dá)式應(yīng)用運算符而生成的表達(dá)式。這樣可使結(jié)果集中包含基表中不存在、但是根據(jù)基表中存儲的值計算得到的值,這些結(jié)果集列被稱為派生列。在派生列中,可以對數(shù)值列或常量使用算術(shù)運算符或函數(shù)進(jìn)行的計算和運算,也可以進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,還可以使用子查詢。所謂子查詢,就是一個嵌套在SELECT、INSERT、UPDATE或DELETE語句或其他子查詢中的查詢。任務(wù)7使用DISTINCT消除重復(fù)項任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECTDISTINCT課程編號FROM成績;GO相關(guān)知識使用DISTINCT關(guān)鍵字可以從SELECT語句的結(jié)果集中消除重復(fù)的行。對于DISTINCT關(guān)鍵字來說,空值將被認(rèn)為是相互重復(fù)的內(nèi)容。如果沒有指定DISTINCT,將返回包括重復(fù)行在內(nèi)的所有行。當(dāng)SELECT語句中包括DISTINCT時,不論遇到多少個空值,結(jié)果中只返回一個NULL。任務(wù)8使用TOP限制結(jié)果集任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECTTOP(10)學(xué)號,姓名,性別,出生日期FROM學(xué)生;GO相關(guān)知識在SELECT語句中,可以使用TOP子句限制結(jié)果集中返回的行數(shù)。語法格式如下:TOP(expression)[PERCENT][WITHTIES]其中expression是一個數(shù)值表達(dá)式,用于指定返回的行數(shù)。如果指定了PERCENT,則是指返回的結(jié)果集行的百分比(由expression指定)。如果在SELECT語句中同時使用了TOP和ORDERBY子句,則返回的行將會從排序后的結(jié)果集中選擇。整個結(jié)果集按照指定的順序排列,并且返回排序后結(jié)果集前面的若干行(由expression指定)。如果同時還指定了WITHTIES選項,則返回包含ORDERBY子句返回的最后一個值的所有行,即便這樣會超過expression指定的數(shù)量。任務(wù)9使用沒有FROM子句的SELECT語句任務(wù)實現(xiàn)SELECT'歡迎您使用SQLServer2008'AS歡迎信息,GETDATE()AS'現(xiàn)在時間',@@SERVERNAMEAS'SQLServer服務(wù)器名稱',@@VERSIONAS[SQLServer版本號]相關(guān)知識在SELECT語句中,F(xiàn)ROM子句用于指定選擇查詢的數(shù)據(jù)來源。如果在SELECT語句中不需要訪問表中的列,則不必使用FROM子句。若要使用SELCET語句從表或視圖中檢索數(shù)據(jù),就必須使用FROM子句。FROM子句是用逗號分隔的表名、視圖名和JOIN子句的列表,使用FROM子句可以列出選擇列表和WHERE子句中所引用的列所在的表和視圖,也可以使用AS子句為表和視圖的名稱指定別名。使用FROM子句還可以指定一個或多個表或視圖并在兩個或多個表或視圖之間創(chuàng)建各種類型的連接。在SELECT語句中,F(xiàn)ROM子句是一個可選項。如果要使用SELECT語句從數(shù)據(jù)庫內(nèi)的表或視圖中選擇數(shù)據(jù),就必須使用FROM子句。任務(wù)10在FROM子句中使用內(nèi)部連接任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT學(xué)生.學(xué)號,姓名,課程.課程名稱,成績FROM成績INNERJOIN學(xué)生ON成績.學(xué)號=學(xué)生.學(xué)號
INNERJOIN課程ON成績.課程編號=課程.課程編號;GO相關(guān)知識使用SELECT語句從多個表或視圖中檢索數(shù)據(jù)時,可通過在FROM子句中使用各種連接運算符來實現(xiàn)。連接指明了SQLServer應(yīng)當(dāng)如何使用一個表中的數(shù)據(jù)來選擇另一個表中的行,通過連接可以從兩個或多個表中根據(jù)各個表之間的邏輯關(guān)系來檢索數(shù)據(jù)。內(nèi)部連接是一種最常用的連接類型,它使用比較運算符對要連接列中的值進(jìn)行比較。若兩個來源表的相關(guān)列滿足連接條件,則內(nèi)部連接從這兩個表中提取數(shù)據(jù)并組成新的行。內(nèi)部連接通常通過在FROM子句中使用INNERJOIN運算符來實現(xiàn)。任務(wù)11在FROM子句中使用外部連接任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT學(xué)號,課程名稱,成績FROM成績RIGHTJOIN課程ON成績.課程編號=課程.課程編號;GO相關(guān)知識外部連接回FROM子句中指定的至少一個表或視圖中的所有行,只要這些行符合任何WHERE或HAVING搜索條件。外部連接分為左外部連接LEFT[OUTER]JOIN、右外部連接RIGHT[OUTER]JOIN和完全外部連接FULL[OUTER]JOIN。若要在結(jié)果集中包括左表中的所有行,而不考慮右表中是否存在匹配的行,可使用左外部連接。若要在結(jié)果集中包括右表中的所有行,而不考慮左表中是否存在匹配的行,可使用右外部連接。若要通過在連接的結(jié)果中包括不匹配的行來保留不匹配信息,可使用完全外部連接。任務(wù)12在選擇查詢中使用交叉連接任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT班級編號,姓名FROM學(xué)生CROSSJOIN班級;GO相關(guān)知識使用CROSSJOIN運算符可實現(xiàn)兩個來源表之間的交叉連接,語法格式如下:FROMtable1CROSSJOINtable2如果沒有在SELECT語句中使用WHERE子句,則交叉連接將產(chǎn)生連接所涉及的表的笛卡兒積。笛卡兒積結(jié)果集的大小等于第一個表的行數(shù)乘以第二個表的行數(shù)。如果在SELECT語句中添加一個WHERE子句,則交叉連接的作用與內(nèi)連接相同。任務(wù)13在選擇查詢中使用比較搜索條件任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT教師編號,姓名,性別,學(xué)歷,職稱,政治面貌FROM教師WHERE學(xué)歷='研究生';GO相關(guān)知識通過在SELECT語句中使用WHERE子句可以設(shè)置對行的篩選條件,從而保證查詢集中僅僅包含所需要的行,而將不需要的行排除在結(jié)果集之外。在SELECT語句中WHERE子句是可選的,使用時應(yīng)放在FROM子句后面,語法如下:[WHERE<search_condition>]任務(wù)14使用范圍搜索條件任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT學(xué)生.學(xué)號,姓名,課程名稱,成績FROM成績INNERJOIN學(xué)生ON學(xué)生.學(xué)號=成績.學(xué)號INNERJOIN課程ON課程.課程編號=成績.課程編號WHERE成績BETWEEN80AND90;GO相關(guān)知識范圍搜索返回介于兩個指定值之間的所有值,包括范圍返回與兩個指定值匹配的所有值,排他范圍不返回與兩個指定值匹配的任何值。在WHERE子句中,可以使用BETWEEN運算符來指定要搜索的包括范圍,也可以使用NOTBETWEEN來查找指定范圍之外的所有行,語法格式如下:test_expression[NOT]BETWEENbegin_expressionANDend_expression任務(wù)15在選擇查詢中使用列表搜索條件任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT班級編號,學(xué)號,姓名,性別,出生日期FROM學(xué)生WHERESUBSTRING(姓名,1,1)IN('張','王','李','趙');GO相關(guān)知識在WHERE子句中使用IN運算符可以選擇與列表中的任意值匹配的行。IN運算符用于確定指定的值是否與子查詢或列表中的值相匹配,語法格式如下:test_expression[NOT]IN(subquery|expression[,...n])如果測試表達(dá)式test_expression的值與子查詢subquery所返回的任何值相等,或者與逗號分隔的列表中的某個expression相等,則結(jié)果值為TRUE;否則結(jié)果值為FALSE。使用NOTIN可以對返回值求反。任務(wù)16在搜索條件中使用模式匹配任務(wù)實現(xiàn)USE學(xué)生成績;GOSELECT*FROM學(xué)生WHERE姓名LIKE'[張王李趙]%';GOSELECT*FROM學(xué)生WHERE姓名LIKE'%建%';GO相關(guān)知識在WHERE子句中,可以使用LIKE運算符來搜索與指定模式匹配的字符串、日期或時間值。LIKE運算符用于確定特定字符串是否與指定模式相匹配,語法格式如下:match_expression[NOT]LIKEpattern[ESCAPEescape_character]通配符:%表示包含零個或多個字符的任意字符串;_表示任何單個字符;[]指定一個范圍內(nèi)的任何單個字符;[^]表示不在指定范圍內(nèi)的任何單個字符。任務(wù)17在選擇查詢中使用邏輯運算符
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《認(rèn)識并戰(zhàn)勝冠心病》課件
- 收廢品職務(wù)勞務(wù)合同(2篇)
- 2024年版高壓洗車設(shè)備銷售協(xié)議2篇
- 《LED的熱學(xué)特性》課件
- 2025年濱州貨運資格證題庫在線練習(xí)
- 2025年西藏從業(yè)資格證500道題速記
- 2025年安康貨運從業(yè)資格證考試試題及答案
- 2025年玉樹道路運輸從業(yè)資格證考哪些項目
- 2024年牛肉供貨商協(xié)議范本3篇
- 2025年石家莊貨運從業(yè)資格考試題目大全及答案
- 工程倫理智慧樹知到期末考試答案章節(jié)答案2024年武漢科技大學(xué)
- 銀行轉(zhuǎn)賬截圖生成器制作你想要的轉(zhuǎn)賬截圖
- 食管早癌的內(nèi)鏡診斷
- 舞臺舞美拆除方案
- 機器學(xué)習(xí)課件周志華Chap08集成學(xué)習(xí)
- 輔助生殖科輔助生殖技術(shù)診療規(guī)范與技術(shù)操作規(guī)范
- 幼兒園保健醫(yī)生家長會課件
- 2.3.2茶紅頸天牛識別與防治
- 吉蘭巴雷綜合癥的護(hù)理
- 第19課資本主義國家的新變化【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 中醫(yī)病歷書寫基本規(guī)范
評論
0/150
提交評論