SQL Server 2022數(shù)據(jù)庫技術項目教程高職全套教學課件_第1頁
SQL Server 2022數(shù)據(jù)庫技術項目教程高職全套教學課件_第2頁
SQL Server 2022數(shù)據(jù)庫技術項目教程高職全套教學課件_第3頁
SQL Server 2022數(shù)據(jù)庫技術項目教程高職全套教學課件_第4頁
SQL Server 2022數(shù)據(jù)庫技術項目教程高職全套教學課件_第5頁
已閱讀5頁,還剩425頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目一數(shù)據(jù)庫技術導論全套可編輯PPT課件項目1-數(shù)據(jù)庫技術導論.pptx項目2-數(shù)據(jù)庫創(chuàng)建與管理.pptx項目3-數(shù)據(jù)庫表的創(chuàng)建與管理.pptx項目4-數(shù)據(jù)基本操作.pptx項目5-數(shù)據(jù)查詢.pptx項目6-數(shù)據(jù)庫的編程操作.pptx項目7-數(shù)據(jù)庫安全管理.pptx項目8-數(shù)據(jù)庫應用程序開發(fā)項目實戰(zhàn).pptx任務1.1了解數(shù)據(jù)庫技術任務1.2配置SQLServer2022運行環(huán)境任務1.3結構化查詢語句T-SQL的使用123主要知識點數(shù)據(jù)庫管理員(DBA)職業(yè)崗位的技能需求數(shù)據(jù)庫主要類型,關系數(shù)據(jù)庫的特點數(shù)據(jù)庫、表、記錄、字段的含義及相互關系SQLServer2022數(shù)據(jù)庫界面組成及簡單用法學習目標數(shù)據(jù)庫的概念與類型關鍵數(shù)據(jù)庫模型及特點SQLServer2022運行環(huán)境的安裝與配置運用SQLServer2022建立數(shù)據(jù)庫和數(shù)據(jù)表掌握數(shù)據(jù)庫和表的簡單修改方法及結構化查詢語句T-SQL的使用任務1.1了解數(shù)據(jù)庫技術1.1.1數(shù)據(jù)庫技術概述1.1.2配置SQLServer2022運行環(huán)境1.1.3結構化查詢語句T-SQL的使用數(shù)據(jù)庫技術概述1.1.1數(shù)據(jù)庫技術概述數(shù)據(jù)庫是按照一定結構來組織、存儲和管理數(shù)據(jù)的倉庫,是一個長期存儲在計算機內、有組織、可共享、能統(tǒng)一管理的大量數(shù)據(jù)集合,可以多個用戶共享,具有較小的冗余度和較高的獨立性。數(shù)據(jù)庫技術是軟件領域的一個重要分支,產生于20世紀60年代,它的出現(xiàn)使計算機應用到了工農業(yè)生產、商業(yè)、行政管理、科學研究、工程技術以及國防軍事等各個領域。它以數(shù)據(jù)庫管理系統(tǒng)(DBMS)為核心,以數(shù)據(jù)存儲和處理為主要功能,涵蓋DBMS產品、數(shù)據(jù)挖掘、開發(fā)工具、應用系統(tǒng)解決方案等多個內容。任務1.1數(shù)據(jù)庫技術概述1、數(shù)據(jù)庫分類主要包括關系型數(shù)據(jù)庫和非關系型數(shù)據(jù)庫兩種類型。123關系型數(shù)據(jù)庫采用關系模型來組織數(shù)據(jù),由二維表及各張表之間關聯(lián)關系所組成,容易理解,容易使用,容易維護。主要有:MySQL,MSAccess、MSSQLServer、Oracle、INFORMIX、Sybase、DB2。非關系型數(shù)據(jù)庫主要指非結構化數(shù)據(jù)庫(NoSQL),是一種數(shù)據(jù)存儲方法的集合,可以是文檔或者鍵(Key)值(Value)對,字段長度可變,支持重復字段、子字段及變長字段,能處理變長數(shù)據(jù)和重復字段,實現(xiàn)數(shù)據(jù)項的變主要NoSQL產品有MongoDB、HBase、redis、Memcache、BigTable等。優(yōu)點:格式靈活,速度快,容易擴展,成本低。數(shù)據(jù)庫的兩種類型任務1.11.1.1數(shù)據(jù)庫技術概述2、關系數(shù)據(jù)庫的基本概念關系:就是一張二維表,簡稱表,每個關系都有一個關系名,即表名。元組:是二維表中的一行,在數(shù)據(jù)表中稱為記錄。屬性:二維表中的一列,在數(shù)據(jù)表中稱為字段。域:屬性的取值范圍,也就是數(shù)據(jù)表中某一列的取值范圍。關鍵字:一組可以唯一標識元組的屬性,數(shù)據(jù)表中常稱為主鍵,由一個或多個列組成。關系模式:即對關系的描述。格式為:關系名(屬性1,屬性2,......,屬性N),稱為表結構。數(shù)據(jù)庫管理系統(tǒng)(DBMS):是位于應用軟件與操作系統(tǒng)之間,用以管理和維護數(shù)據(jù)庫中數(shù)據(jù)的軟件集合。按功能劃分,DBMS可分為三大部分:數(shù)據(jù)描述語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL。數(shù)據(jù)庫系統(tǒng)(DBS):由數(shù)據(jù)庫及其管理軟件組成的系統(tǒng)。數(shù)據(jù)獨立性:指存儲數(shù)據(jù)的數(shù)據(jù)庫獨立于調用數(shù)據(jù)的軟件。任務1.1數(shù)據(jù)庫技術概述1.1.1數(shù)據(jù)庫技術概述3、國產數(shù)據(jù)庫:數(shù)據(jù)庫國產化時間雖然不長,但通過吸收和創(chuàng)新開源軟件優(yōu)勢,成效顯著,典型產品有:達夢數(shù)據(jù)庫(DM):武漢達夢數(shù)據(jù)庫股份有限公司。思極有容:國網(wǎng)信息通信產業(yè)集團為主研發(fā)。OceanBase:阿里推出的完全自主研發(fā)品牌。TDSQL:騰訊產品。KingbaseES:北京人大金倉信息技術股份有限公司產品。GaussDB:華為數(shù)據(jù)庫產品。任務1.1數(shù)據(jù)庫技術概述1.1.1數(shù)據(jù)庫技術概述數(shù)據(jù)庫課程直接對應的職業(yè)技能崗位是數(shù)據(jù)庫管理員(DBA),間接崗位是軟件開發(fā)工程師(程序員)。DBA是負責數(shù)據(jù)庫的建立、使用和維護的專門人員。任務1.1數(shù)據(jù)庫技術概述1.1.2數(shù)據(jù)庫職業(yè)崗位技能需求分析1、數(shù)據(jù)庫管理員:2、數(shù)據(jù)庫開發(fā)工程師任務1.1數(shù)據(jù)庫技術概述1.1.2數(shù)據(jù)庫職業(yè)崗位技能需求分析3、

Java軟件開發(fā)工程師任務1.1數(shù)據(jù)庫技術概述1.1.2數(shù)據(jù)庫職業(yè)崗位技能需求分析本教材共安排了兩個案例數(shù)據(jù)庫高校圖書館圖書借閱管理系統(tǒng)libsys,是圖書館工作人員對新購圖書分類、入庫登記、辦理和發(fā)放讀者借書證、圖書借閱與歸還管理的軟件,用于課堂教學。學生成績管理系統(tǒng)scoresys,用于知識拓展和實習實訓,其功能學生基本信息登記、課程信息登錄、任課教師信息登錄和成績管理,供任課教師和教務管理人員使用,用于實踐環(huán)節(jié)。圖書館圖書資料借閱管理系統(tǒng)(簡稱圖書管理系統(tǒng)),包括前臺借閱和歸還管理功能以及后臺登記入庫管理功能,采購人員購進圖書后,采編人員首先根據(jù)圖書類別登記入庫,然后分門別類放進不同位置的書架上。任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計表1-6bookinfo表的記錄任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計表1-8ReaderInfo表的記錄任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計任務1.1數(shù)據(jù)庫技術概述1.1.3案例數(shù)據(jù)庫及表設計表1-8ReaderInfo表的記錄配置SQLServer2022運行環(huán)境SQLServer2022是微軟公司2022年底推出的最新關系型數(shù)據(jù)庫軟件,它既包含以往各個版本的全部功能,還具有更好的云服務功能。SQLServer的主要版本:SQLSERVER7.0SQLSERVER

2000SQLSERVER

2003SQLSERVER

2005SQLSERVER2008SQLSERVER

2012SQLSERVER2014SQLSERVER2016SQLSERVER2017SQLSERVER2019任務1.2配置SQLServer2022運行環(huán)境1.2.1下載SQLServer2022安裝包1、SQLServer2022的主要版本:Enterprise:企業(yè)版Standard:標準版Web:Web版Developer:開發(fā)者版Express:快速版任務1.2配置SQLServer2022運行環(huán)境1.2.1下載SQLServer2022安裝包2、SQLServer2022下載內核在線安裝包和SSMS可視化工具安裝包,用于安裝SQLServer2022內核,文件名是SQL2022-SSEI-Dev.exe。SSMS安裝包用于安裝SQLServerManagementStudio(SSMS),提供數(shù)據(jù)庫操作的可視化界面,文件名是SSMS-Setup-CHS.exe。任務1.23、硬件和軟件要求硬件要求:X64處理器且主頻2.0GHz以上,硬盤可用空間6G以上,內存2G以上軟件要求:Windows10TH11507或更高版本,建議安裝在Windows11上不支持Windows7及以下版本配置SQLServer2022運行環(huán)境1.2.2安裝SQLServer2022任務1.2SQLServer2022安裝順序先安排內核SQL2022-SSEI-Dev.exe。再安裝可視化界面SSMS-Setup-CHS.exe。1、安裝內核(1)以管理員身份運行SQL2022-SSEI-Dev.exe文件配置SQLServer2022運行環(huán)境1.2.2安裝SQLServer2022任務1.2SQLServer2022安裝順序先安排內核SQL2022-SSEI-Dev.exe。再安裝可視化界面SSMS-Setup-CHS.exe。1、安裝內核(2)選擇語言,默認中文簡體配置SQLServer2022運行環(huán)境1.2.2安裝SQLServer2022任務1.2SQLServer2022安裝順序先安排內核SQL2022-SSEI-Dev.exe。再安裝可視化界面SSMS-Setup-CHS.exe。1、安裝內核(3)確定安裝路徑配置SQLServer2022運行環(huán)境1.2.2安裝SQLServer2022任務1.2SQLServer2022安裝順序先安排內核SQL2022-SSEI-Dev.exe。再安裝可視化界面SSMS-Setup-CHS.exe。1、安裝內核(4)系統(tǒng)會自動從網(wǎng)站下載相關文件,啟動安裝過程,直到安裝完成。配置SQLServer2022運行環(huán)境1.2.2安裝SQLServer2022任務1.2SQLServer2022安裝順序先安排內核SQL2022-SSEI-Dev.exe。再安裝可視化界面SSMS-Setup-CHS.exe。2、安裝可視化工具SSMS配置SQLServer2022運行環(huán)境1.2.3SQLServer工作界面任務1.2【開始】-【所有應用】-【MicrosoftSQLServerTools19】-【SQLServerManagementStudio19】,進入SQLServer服務器登錄界面兩種身份驗證方式Windows身份驗證:默認方式,建議使用SQLServer身份驗證:輸入用戶名和密碼,DBA有權限設置登錄用戶。配置SQLServer2022運行環(huán)境1.2.3SQLServer工作界面任務1.2SQLServer工作界面配置SQLServer2022運行環(huán)境1.2.4SQLServer工作環(huán)境的使用任務1.2MicrosoftSQLServer2022的主要功能數(shù)據(jù)庫引擎(SSDE):用于存儲、處理和保護數(shù)據(jù)的核心服務,是一個集成環(huán)境,窗口是SSMS集成服務(SSIS)):是一個用于提取、轉換和加載(ETL)操作的平臺分析服務(SSAS):針對個人、團隊和公司商業(yè)智能的分析數(shù)據(jù)平臺和工具集報表服務(SSRS):是數(shù)據(jù)輸出的報表解決方案,提供企業(yè)級的Web報表功能分析服務(SSAS):提供了數(shù)據(jù)建模和分析的功能主數(shù)據(jù)服務(MDS):針對主數(shù)據(jù)管理的SQLServer解決方案配置管理器:為SQLServer服務、服務器協(xié)議、客戶端協(xié)議提供配置管理事件探查器:監(jiān)視數(shù)據(jù)庫引擎實例或AnalysisServices實例的圖形用戶界面數(shù)據(jù)庫引擎優(yōu)化顧問:協(xié)助創(chuàng)建索引、索引視圖和分區(qū)的最佳組合連接組件:安裝用于客戶端和服務器之間通信的組件代理服務:MicrosoftWindows服務,允許自動執(zhí)行某些管理任務結構化查詢語句T-SQL的使用1.3.1T-SQL簡介任務1.3T-SQL,是在SQLServer中的國際SQL3標準的實現(xiàn),是微軟公司對SQL的擴展,具有SQL的主要特點,同時增加了變量、運算符、函數(shù)、流程控制和注釋等元素。T-SQL語句不分區(qū)大小寫,可分為數(shù)據(jù)定義語句DDL、數(shù)據(jù)操作語句DML、數(shù)據(jù)控制語句DCL和附加語句四大類。結構化查詢語句T-SQL的使用1.3.1T-SQL簡介任務1.3結構化查詢語句T-SQL的使用1.3.2T-SQL語法基礎任務1.31、數(shù)據(jù)類型(1)字符型(2)整數(shù)型結構化查詢語句T-SQL的使用1.3.2T-SQL語法基礎任務1.31、數(shù)據(jù)類型(3)精確實數(shù)型decimal(n,m):十進制型,格式是decimal(n,m),n表示總長度,m表示小數(shù)位數(shù)。如:decimal(10,5),表示總長度是10位,其中小數(shù)位數(shù)是5位,整數(shù)位數(shù)5位,小數(shù)點不占位數(shù)。numeric:數(shù)值型,其用法與decimal相同,如:numeric(10)表示長度是10位,不允許有小數(shù),實際上就是整數(shù),而numeric(10,5)表示最多5位小數(shù),5位整數(shù)。(4)近似實數(shù)型存儲精度不是很高,但數(shù)據(jù)的取值范圍卻又非常大的數(shù)據(jù),其長度是固定的,用戶不可以改變,可以用普通方法和科學計數(shù)法表示。包括2種:real:實數(shù),可以表示的數(shù)值范圍是–3.40E+38~–1.18E–38,0,1.18E–38~3.40E+38float:浮點數(shù),可以表示的數(shù)值范圍是–1.79E+308~–2.23E–308,0,2.23E–308~1.79E+308結構化查詢語句T-SQL的使用1.3.2T-SQL語法基礎任務1.3(5)貨幣型money:長度為8字節(jié),如$326779.1234,精確到萬分之一。smallmoney:長度為4字節(jié),如$23.333,3.51e8,$3.51e8。(6)日期時間型:其值要以字符串的形式表示,即要用單引號引起來,包括四種類型:date:日期型可以只精確到月,系統(tǒng)自動填寫為當月的1日。time:時間型。格式:hh:mm:ssAM/PM,datetime:日期和時間的結合體。格式是:MM/DD/YYYYhh:mm:ssAM/PMsmalldatetime:小日期時間型(7)文本型:用于存儲超大長度的文本內容,長度固定,用戶不可以修改,包括兩種類型:text:字符型,用來存儲大量的非統(tǒng)一編碼型字符數(shù)據(jù),最多可以有231-1或20億個字符。nchar:統(tǒng)一編碼字符型,用來存儲定長統(tǒng)一編碼字符型數(shù)據(jù)。(8)二進制型binary:二進制數(shù)據(jù)類型,存儲最長8000字節(jié),其存儲空間的大小是n+4個字節(jié)。varbinary:可變長二進制數(shù)據(jù)類型,用來存儲最長8000字節(jié)的二進制數(shù)據(jù),用戶可以設置長度。image:圖像型,用來存儲變長的二進制數(shù)據(jù),最大可達231-1或大約20億字節(jié)結構化查詢語句T-SQL的使用1.3.2T-SQL語法基礎任務1.3(9)特殊數(shù)據(jù)類型timestamp:時間戳類型,相當于一個單向遞增的計數(shù)器,表示SQLServer活動的先后順序,Timestamp數(shù)據(jù)與插入數(shù)據(jù)的日期和時間沒有關系。當所定義的列在更新或插入新行時,此列值系統(tǒng)自動填寫。如果表中列名為Timestamp,系統(tǒng)自動設置為Timestamp類型。Uniqueidentifier:唯一標識型類型,長度為16,是根據(jù)網(wǎng)卡地址和CPU時鐘產生的,通過函數(shù)newid()獲得,全球各地機器產生的此值都不同,但用戶可以修改。當表的記錄行要求唯一時,用uniqueidentifier類型最實用。T-SQL沒有專門的邏輯型,用bit表示邏輯數(shù)據(jù)類型,占用1個字節(jié),其值為真值時,用0表示,為假時用1表示,如果輸入0或1以外的值,將被視為1。結構化查詢語句T-SQL的使用1.3.2T-SQL語法基礎任務1.32、變量T-SQL提供了系統(tǒng)變量和用戶自定義變量系統(tǒng)變量:由系統(tǒng)定義,用戶不能修改,以@@變量名的形式出現(xiàn),如:@@VERSION、@@SERVERNAME、@@LANGUAGE、@@ERROR、@@ROWCOUNT。系統(tǒng)變量的作用域是全局的,在整個會話層都是有效的。自定義變量:聲明用戶的語法是:

DECLARE@變量名

數(shù)據(jù)類型一個@符號是用戶自定義變量的標志,在聲明和使用時都不能省略,用SET語句給變量賦值。示例:DECLARE@student_namechar(10)SET@student_name='歐陽輝宇'SELECT@student_nameSELECT@@VERSIONSELECT@@SERVERNAMESELECT@@LANGUAGESELECT@@ERRORSELECT@@ROWCOUNT結構化查詢語句T-SQL的使用1.3.2T-SQL語法基礎任務1.33、運算符數(shù)學運算符:加(+)減(-)乘(*)除(/)和求余(%)。邏輯運算符:與(AND)、或(OR)、非(NOT),其結果是一個邏輯值。賦值運算符:=,格式是:變量名=表達式。比較運算符:表達大小關系,包括6種:=、<>、>、<、>=、<=,結果是一個邏輯值。字符串連接運算符:+,將2個字符串串聯(lián)起來。4、批處理用戶編寫的一個或多個語句的集合,以go作為批處理結束的標志5、系統(tǒng)內嵌函數(shù)系統(tǒng)內嵌函數(shù)包括日期時間函數(shù)、數(shù)學函數(shù)、聚合函數(shù)和字符串函數(shù)。以日期時間函數(shù)為例:getdate():獲取系統(tǒng)當前日期和時間day(日期表達式):返回日期中的日。month(日期表達式):返回日期中的月。year(日期表達式):返回日期中的年。結構化查詢語句T-SQL的使用1.3.3流程控制語句任務1.31、注釋語句單行注釋:--注釋內容,從此處開始到本行結束為注釋內容多行注釋:/*注釋內容*/3、條件判斷語句用IF條件ELSE語句表示,格式:IF條件語句1ELSE語句22、語句塊用BEGIN……END定義語句塊,表示這個語句塊將被作為一個整體。如:BEGINSELECT*FROMbookInfoEND條件判斷語句應用舉例:根據(jù)變量sex的值,輸出一行信息,假設sex為男,輸出“性別為男,明天的體育課踢足球”,如果sex不為男,輸出“性別為女,明天的體育課跳健美操”。DECLARE@sexchar(2)SET@sex='女'IF@sex='男'PRINT

'性別為男,明天的體育課踢足球'ELSEPRINT

'性別為女,明天的體育課跳健美操'結構化查詢語句T-SQL的使用1.3.3流程控制語句任務1.34、多分支條件語句:CASE語句,有2種格式第一種格式是:CASE表達式WHEN值1THEN表達式1WHEN值2THEN表達式2...WHEN值NTHEN表達式NELSE表達式N+1END多分支條件語句應用舉例要求:假定用0-6表示星期天到星期六,根據(jù)星期幾輸出當天的電影預告。DECLARE@dayint,@infochar(50)SET@day=5SET@info=CASE@dayWHEN0THEN'周日電影《大決戰(zhàn)之遼沈戰(zhàn)役》’WHEN1THEN'周一電影《大決戰(zhàn)之平津戰(zhàn)役》’WHEN2THEN'周二電影《大決戰(zhàn)之淮海戰(zhàn)役》’WHEN3THEN'周三電影《可愛的中國》’WHEN4THEN'周四電影《小兵張嘎》’WHEN5THEN'周五電影《地道戰(zhàn)》’WHEN6THEN'周六電影《四渡赤水》’ELSE'周日電影《地雷戰(zhàn)》'ENDPRINT@info結構化查詢語句T-SQL的使用1.3.3流程控制語句任務1.34、多分支條件語句:CASE語句,有2種格式第二種格式是:CASEWHEN表達式1THEN表達式1

WHEN表達式2THEN表達式2...

WHEN表達式NTHEN表達式NELSE表達式N+1END多分支條件語句應用舉例要求:假定用salary表示月工資,根據(jù)工資多少輸出工資收入的檔次。DECLARE@salaryfloat,@infochar(50)SET@salary=5766.9SET@info=CASEWHEN@salary<=5000THEN'工資1檔,收入偏低'WHEN@salary>5000AND@salary<=6000THEN'工資2檔'WHEN@salary>6000AND@salary<=8000THEN'工資3檔'WHEN@salary>8000AND@salary<=10000THEN'工資4檔'ELSE'高收入群體'

ENDPRINT@info結構化查詢語句T-SQL的使用1.3.3流程控制語句任務1.35、循環(huán)語句用WHILE語句表示,表示循環(huán)執(zhí)行直到條件不成立為止。其格式是:WHILE條件BEGIN循環(huán)體語句END循環(huán)語句應用舉例例1:求1到100之和。結構化查詢語句T-SQL的使用1.3.3流程控制語句任務1.35、循環(huán)語句用WHILE語句表示,表示循環(huán)執(zhí)行直到條件不成立為止。其格式是:WHILE條件BEGIN循環(huán)體語句END代碼如下:DECLARE@nINT,@aINT,@bINT,@cINT--@a,@b,@c分別表示個位數(shù),十位數(shù),百位數(shù)SET@n=100WHILE(@n<1000)BEGINSET@a=@n/100;SET@b=@n/10%10;SET@c=@n%10;IF(@n=@a*@a*@a+@b*@b*@b+@c*@c*@c)BEGINPRINT@n;ENDSET@n=@n+1;END循環(huán)語句應用舉例例2:輸出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個“水仙花數(shù)”,因為153=13+53+33。結構化查詢語句T-SQL的使用1.3.3流程控制語句任務1.35、循環(huán)語句用WHILE語句表示,表示循環(huán)執(zhí)行直到條件不成立為止。其格式是:WHILE條件BEGIN循環(huán)體語句END代碼如下:DECLARE@nINT,@iINT--@n表示整數(shù),@i表示循環(huán)變量SET@n=991SET@i=2WHILE(@i<=@n)BEGINIF@n%@i=0--若有因子,肯定不是素數(shù),直接中止循環(huán)BREAKELSESET@i=@i+1ENDIF@i=@nSELECT@n,'是素數(shù)'ELSESELECT@n,'不是素數(shù)'在循環(huán)語句中,可以用CONTINUE語句忽略循環(huán)過程中的剩余語句,直接進入下一輪循環(huán),用BREAK語句強制中止循環(huán)(退出循環(huán)),轉到執(zhí)行循環(huán)語句后面的語句。例3:判斷991是否是素數(shù)。數(shù)據(jù)庫技術導論項目總結項目一1、主要內容任務1.1了解數(shù)據(jù)庫技術任務1.2配置SQLServer2022運行環(huán)境任務1.3結構化查詢語句T-SQL的使用2、自測數(shù)據(jù)庫技術課程對應的職業(yè)崗位有哪些?SQLServer2022工作界面由哪些部分構成?如何用SQLServer2022編寫簡單程序?用SQLServer2022編程,輸出100-1000內所有素數(shù)。項目二數(shù)據(jù)庫創(chuàng)建與管理任務2.1查看數(shù)據(jù)庫服務器信息任務2.2創(chuàng)建數(shù)據(jù)庫任務2.3管理數(shù)據(jù)庫123主要知識點SQLSERVER2022數(shù)據(jù)庫的基本組成運用SSMS創(chuàng)建和管理數(shù)據(jù)庫使用T-SQL命令創(chuàng)建和管理數(shù)據(jù)庫數(shù)據(jù)庫的分離和附加學習目標SQLSERVER2022數(shù)據(jù)庫的組成各個系統(tǒng)數(shù)據(jù)庫的功能會創(chuàng)建數(shù)據(jù)庫會查看和修改數(shù)據(jù)庫屬性會管理數(shù)據(jù)庫會分離數(shù)據(jù)庫會附加數(shù)據(jù)庫任務2.1查看數(shù)據(jù)庫服務器信息2.1.1

SQLServer2022體系結構2.1.2SQLServer2022的數(shù)據(jù)庫組成2.1.3SQLSERVER2022服務器身份驗證模式查看數(shù)據(jù)庫服務器信息2.1.1SQLServer2022體系結構SQLServer以數(shù)據(jù)庫引擎為基礎,通過集成界面提供數(shù)據(jù)存儲與分析、報表服務、數(shù)據(jù)挖掘、云存儲、人工智能等全方位服務。數(shù)據(jù)庫引擎SSDE是SQLServer的核心服務,負責完成業(yè)務數(shù)據(jù)的存儲、處理、查詢和安全管理,創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、執(zhí)行各種數(shù)據(jù)查詢、訪問數(shù)據(jù)庫等基礎操作,均由數(shù)據(jù)庫引擎完成,很多時候,使用數(shù)據(jù)庫系統(tǒng)主要是使用數(shù)據(jù)庫引擎服務。任務2.1查看數(shù)據(jù)庫服務器信息2.1.1SQLServer2022體系結構集成服務(SSIS):用于提取、轉換和加載(ETL)操作的平臺,使操作數(shù)據(jù)倉庫與其同步,數(shù)據(jù)倉庫里的數(shù)據(jù)來源于企業(yè)商業(yè)應用所使用的孤立數(shù)據(jù)源。分析服務(SSAS):針對個人、團隊和公司商業(yè)智能的分析數(shù)據(jù)平臺和工具集,提供了用于聯(lián)機分析處理(OnlineAnalyticalProcessing,OLAP)的引擎。報表服務(SSRS):數(shù)據(jù)輸出的報表解決方案,提供企業(yè)級Web報表功能,可以創(chuàng)建從多個數(shù)據(jù)源提取數(shù)據(jù)的表。分析服務(SSAS):用于數(shù)據(jù)建模和分析,根據(jù)數(shù)據(jù)倉庫表格設計、創(chuàng)建和管理多維數(shù)據(jù)集的功能,是商業(yè)智能戰(zhàn)略的基礎。主數(shù)據(jù)服務(MDS):針對主數(shù)據(jù)管理的SQLServer解決方案,通過配置MDS來管理任何領域,可包括層次結構、各種級別的安全性、事務、數(shù)據(jù)版本控制和業(yè)務規(guī)則,可用于管理數(shù)據(jù)的Excel外接程序。SQLServer配置管理器:為SQLServer服務、服務器協(xié)議、客戶端協(xié)議和客戶端別名提供基本配置管理。數(shù)據(jù)庫引擎優(yōu)化顧問:用于優(yōu)化數(shù)據(jù)庫引擎,協(xié)助創(chuàng)建索引、索引視圖和分區(qū)。SQLServer代理服務:是一項MicrosoftWindows服務,允許自動執(zhí)行某些管理任務??纱磉\行作業(yè)、監(jiān)視SQLServer并警報。任務2.1查看數(shù)據(jù)庫服務器信息2.1.2SQLServer2022數(shù)據(jù)庫的組成安裝SQLServer2022軟件的機器稱為數(shù)據(jù)庫服務器,SQLServer2022的數(shù)據(jù)庫包括三類:系統(tǒng)數(shù)據(jù)庫、數(shù)據(jù)庫快照和用戶數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫是安裝后系統(tǒng)自動建立的數(shù)據(jù)庫,存放系統(tǒng)的核心信息,SQLServer2022使用這些信息來管理和控制整個數(shù)據(jù)庫服務器系統(tǒng)。master:最重要的系統(tǒng)數(shù)據(jù)庫,記錄SQLServer系統(tǒng)的所有系統(tǒng)級信息包括登錄賬號、密碼、用戶和角色、權限設置、鏈接服務器和系統(tǒng)配置信息。model:模板數(shù)據(jù)庫,存儲可以作為模板的數(shù)據(jù)庫對象和數(shù)據(jù),用戶在創(chuàng)建數(shù)據(jù)庫時,系統(tǒng)自動調用此數(shù)據(jù)庫中的相關信息。msdb:與代理服務有關的數(shù)據(jù)庫,主要完成定時、預處理等操作,記錄有關作業(yè)、警報、操作員、調度等信息。tempdb:臨時數(shù)據(jù)庫,存儲查詢過程中所形成的中間數(shù)據(jù)或結果。任務2.1查看數(shù)據(jù)庫服務器信息2.1.2SQLServer2022數(shù)據(jù)庫的組成安裝SQLServer2022軟件的機器稱為數(shù)據(jù)庫服務器,SQLServer2022的數(shù)據(jù)庫包括三類:系統(tǒng)數(shù)據(jù)庫、數(shù)據(jù)庫快照和用戶數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫是安裝后系統(tǒng)自動建立的數(shù)據(jù)庫,存放系統(tǒng)的核心信息,SQLServer2022使用這些信息來管理和控制整個數(shù)據(jù)庫服務器系統(tǒng)。系統(tǒng)數(shù)據(jù)庫的組成與用戶數(shù)據(jù)庫基本相同,包括表、視圖、同義詞、可編程性、ServiceBroker、存儲、安全性。數(shù)據(jù)庫快照SQLServer數(shù)據(jù)庫的只讀靜態(tài)視圖。自創(chuàng)建快照起,數(shù)據(jù)庫快照在事務上與源數(shù)據(jù)庫一致,始終與其源數(shù)據(jù)庫位于同一服務器實例上。數(shù)據(jù)庫快照在數(shù)據(jù)頁級運行。在第一次修改源數(shù)據(jù)庫頁之前,先將原始頁從源數(shù)據(jù)庫復制到快照??煺沾鎯υ柬?,保留它們在創(chuàng)建快照時的數(shù)據(jù)記錄。用戶數(shù)據(jù)庫是用戶通過SSMS窗口或T-SQL命令創(chuàng)建的數(shù)據(jù)庫,用戶可以創(chuàng)建多個數(shù)據(jù)庫。任務2.1查看數(shù)據(jù)庫服務器信息2.1.3SQLServer2022服務器驗證模式系統(tǒng)提供Windows身份驗證、SQLSERVER身份驗證、Azure活動目錄等8種身份驗證模式,最常用的前兩種。(1)Windows身份驗證:適合于域內連接,SQLServer使用Windows用戶信息驗證賬戶名和密碼,即SQLSERVER信任Windows用戶(2)SQLSERVER身份驗證:是一種混合驗證模式,允許用戶使用Windows身份驗證,也允許遠程用戶通過SQLServer身份驗證進行連接,這時需要輸入登錄名和密碼。任務2.1查看數(shù)據(jù)庫服務器信息2.1.3SQLServer2022服務器驗證模式設置登錄賬號的方法是:右擊服務器名--【屬性】--【安全性】選項卡,在服務器身份驗證方式欄中選擇一種驗證模式。任務2.1創(chuàng)建數(shù)據(jù)庫2.2.1

文件與文件組創(chuàng)建數(shù)據(jù)庫有2種方法:通過SSMS管理器窗口的交互方式命令方式,命令方式用途更廣,適合于程序員開發(fā)軟件使用數(shù)據(jù)庫包括邏輯結構和物理結構兩部分,對應的文件也有邏輯文件和物理文件之分。一個數(shù)據(jù)庫對應的物理文件主要有3種類型。(1)主數(shù)據(jù)庫文件:類型名是.mdf,是最重要的數(shù)據(jù)庫文件,存儲數(shù)據(jù)庫啟動信息和全部數(shù)據(jù),一個數(shù)據(jù)庫至少要有一個mdf文件。(2)輔助數(shù)據(jù)庫文件:也稱次要數(shù)據(jù)庫文件.ndf,用于存儲除了主數(shù)據(jù)庫文件之外的其它文件信息,保存主庫中沒有存貯的數(shù)據(jù),一個數(shù)據(jù)庫可以有一個或者多個.ndf文件,也可以沒有.ndf文件。(3)事務日志文件:記錄對數(shù)據(jù)庫的操作情況,類型名是.ldf。一個數(shù)據(jù)庫至少包含一個主數(shù)據(jù)庫文件和一個事務日志文件。當一個數(shù)據(jù)庫數(shù)據(jù)內容非常多時,數(shù)據(jù)文件也會有多個,為方便管理,可以將文件分成若干組,稱為文件組filegroup,每一個數(shù)據(jù)文件必須屬于且只能屬于一個組,系統(tǒng)默認的文件組是PRIMARY,即主文件組,主數(shù)據(jù)庫文件就放在這個組中,用戶還可以建立新文件組,并將其它文件存入進來。日志文件不適用于文件組,它獨立存在。任務2.2創(chuàng)建數(shù)據(jù)庫2.2.2用SSMS管理器窗口建立數(shù)據(jù)庫新建數(shù)據(jù)庫時,需指定數(shù)據(jù)庫名,對應的邏輯名,物理文件名及存儲位置,初始大小,最大存儲容量及增長速度等參數(shù),同一數(shù)據(jù)庫服務器的數(shù)據(jù)庫名不允許相同,物理文件存放的文件夾要事先建立好。任務2.2例2-1:利用管理器窗口建立libsys數(shù)據(jù)庫。主要參數(shù)有:(1)主數(shù)據(jù)文件的邏輯名為libsys,對應的物理文件存放在d:\data文件夾中,文件名為libsys_data.mdf,初始大小為10MB,最大容量是100MB,增長速度為10MB。(2)日志文件的邏輯名為libsys_log,對應的物理文件名libsys_log.ldf,初始容量5MB,增長速度15%,最大容量50MB。創(chuàng)建數(shù)據(jù)庫2.2.2用SSMS管理器窗口建立數(shù)據(jù)庫說明:數(shù)據(jù)文件和日志文件最好保存在同一個文件夾,便于管理。文件大小的默認單位是MB,必須為整數(shù)值,如果用MB作為容量單位,則MB可以省略,還可以用GB、TB作為單位。數(shù)據(jù)庫不允許重名,如果數(shù)據(jù)庫已經存在,必須先刪除后才能建立。數(shù)據(jù)庫名和邏輯名都必須符合標識符的規(guī)定,以英文字母或者漢字開頭,后面可以跟英文字母、數(shù)字、漢字、下劃線,最長128個字符,不可用數(shù)字開頭,標識符中不可出現(xiàn)其它標點符號。任務2.2練習:利用管理器窗口建立AddressBook(通信錄)數(shù)據(jù)庫。主要參數(shù):(1)主數(shù)據(jù)文件邏輯名為ABMIS,對應的物理文件存放在d:\abdata文件夾中,文件名為ab_data.mdf,最大容量是150MB。(2)日志文件的邏輯名為ABMIS_log,對應的物理文件名ab_log.ldf,初始容量15MB,增長速度12%,最大容量75MB。(3)缺省參數(shù)全部取默認值。創(chuàng)建數(shù)據(jù)庫2.2.3用SQL命令建立數(shù)據(jù)庫建立數(shù)據(jù)庫的SQL命令格式是:CREATEDATABASE數(shù)據(jù)庫名[ON[PRIMARY](主數(shù)據(jù)文件標識)……][LOGON(日志文件標識)……]其中:<文件標識>包括5個參數(shù),即[NAME=邏輯名][,F(xiàn)ILENAME='磁盤文件名'][,SIZE=初始容量][,MAXSIZE={最大容量|UNLIMITED}][,F(xiàn)ILEGROWTH=增長速度]任務2.2說明:(1)命令格式中的方括號[]表示本項可以缺省,但有和沒有的結果不同,缺省時,系統(tǒng)會取默認值,否則就是指定的值。(2)PRIMARY表示主數(shù)據(jù)庫文件,因為是默認值,可以省略。(3)“……”表示可以有多個文件,各個文件的格式相同。(4)常量UNLIMITED表示最大容量無限制。(5)磁盤文件中可以帶路徑,表示存儲位置,如果不帶路徑,則存儲到默認文件夾中。(6)增長速度可以用百分數(shù)n%表示,也可以是nMB。創(chuàng)建數(shù)據(jù)庫2.2.3用SQL命令建立數(shù)據(jù)庫例2-4建立一個庫company,主文件邏輯名為company_data,磁盤文件為company.mdf,初始大小為20M,最大不限,日志文件邏輯名為company_log,物理文件為company.ldf,初始大小為2M,最大10M,增加速度為1M。物理文件放在d:\mydb中,寫出SQL命令。先檢查D盤下有無mydb文件夾,若無,則建立。輸入建庫代碼。任務2.2CREATEDATABASEcompanyON(NAME=company_data,FILENAME='d:\mydb\company.mdf',SIZE=20,MAXSIZE=UNLIMITED)LOGON(NAME=company_log,FILENAME='d:\mydb\company.ldf',SIZE=2MB,FILEGROWTH=1,MAXSIZE=10)創(chuàng)建數(shù)據(jù)庫2.2.3用SQL命令建立數(shù)據(jù)庫練習:建立數(shù)據(jù)庫libsys,主文件邏輯名為libsys,磁盤文件為libsysdata.mdf,初始大小為100M,增長速度10MB,最大不限,日志文件邏輯名為libsyslog,物理文件為libsyslog.ldf,初始大小為20M,最大1GB,增加速度為默認值,物理文件放在d:\data中,寫出SQL命令。任務2.2管理數(shù)據(jù)庫2.3.1修改數(shù)據(jù)庫修改數(shù)據(jù)庫是指修改數(shù)據(jù)庫名、修改物理文件對應的參數(shù)、向數(shù)據(jù)庫添加文件及文件組、刪除文件及文件組等參數(shù)。修改數(shù)據(jù)庫有2種方法:用SSMS管理器的菜單方式+用命令方式。任務2.31、用SSMS管理器窗口方式修改數(shù)據(jù)庫在SSMS管理器窗口中,找到要修改的數(shù)據(jù)庫名,在其【屬性】對話框中修改。管理數(shù)據(jù)庫2.3.1修改數(shù)據(jù)庫任務2.32、用命令修改數(shù)據(jù)庫格式是:ALTERDATABASE<數(shù)據(jù)庫名>{ADDFILE<文件標識>[,…n]|ADDLOGFILE<文件標識>[,…n]|REMOVEFILE邏輯文件名|MODIFYFILE<文件標識>|MODIFYNAME=新數(shù)據(jù)庫名}參數(shù)說明:(1)ADDFILE:指定要添加的主數(shù)據(jù)文件。(2)ADDLOGFILE:將日志文件添加到指定的數(shù)據(jù)庫。(3)REMOVEFILE:從數(shù)據(jù)庫系統(tǒng)表中刪除文件。(4)MODIFYFILE:指定要更改給定的文件,包括邏輯名、初始大小、增長速度、最大容量和存儲位置。(5)不能夠在一個命令中同時修改2個文件的屬性,如果要修改兩個文件的屬性,要兩次使用ALTERDATABASE命令,每個命令只修改一個文件的屬性。(6)若要更改數(shù)據(jù)文件或日志文件的邏輯名稱,應在NAME選項中指定要改名的邏輯文件名稱,并在NEWNAME選項中指定文件的新邏輯名稱。其格式是:ALTERDATABASE<數(shù)據(jù)庫名>MODIFYFILE(NAME=原邏輯名,NEWNAME=新邏輯名)管理數(shù)據(jù)庫2.3.1修改數(shù)據(jù)庫2、用命令修改數(shù)據(jù)庫例2-6:將數(shù)據(jù)庫company改名為comp,寫出SQL命令。ALTERDATABASEcompanyMODIFYNAME=comp任務2.3例2-7對于例2-3中建立的數(shù)據(jù)庫student,將數(shù)據(jù)文件的最大容量修改為200MB;每次以10MB的空間增長;日志文件修改為每次以15%的空間增長。在寫SQL命令前,必須了解數(shù)據(jù)文件和日志文件的邏輯名(分別為student_data和student_log)。1. ALTERDATABASEstudent2. MODIFYFILE3. (NAME='student_data',4. MAXSIZE=200MB,5. FILEGROWTH=10MB6. )7. GO8. ALTERDATABASEstudent--此行不能省略9. MODIFYFILE

--此行也不能省略10. (NAME='student_log',11. FILEGROWTH=15%12. )管理數(shù)據(jù)庫2.3.2刪除數(shù)據(jù)庫1、用SSMS窗口刪除數(shù)據(jù)庫在SSMS管理器窗口中,找到要修改的數(shù)據(jù)庫名,右擊它,在彈出的快捷菜單中選擇【刪除】。任務2.32、用命令刪除數(shù)據(jù)庫命令是:DROPDATABASE數(shù)據(jù)庫名[,…n]可以用一條命令同時刪除多個數(shù)據(jù)庫。例2-9刪除用戶數(shù)據(jù)庫test。USEmasterGODROPDATABASEtestGO例2-10同時刪除數(shù)據(jù)庫test1和test2,假設test1和test2都已經存在。DROPDATABASEtest,test2管理數(shù)據(jù)庫2.3.3查看數(shù)據(jù)庫1、用SSMS窗口查看數(shù)據(jù)庫在SSMS管理器窗口中,在指定數(shù)據(jù)庫的屬性窗口即可查看。任務2.32、用命令查看數(shù)據(jù)庫查看數(shù)據(jù)庫屬性的命令是sp_helpdb,格式是:EXECUTEsp_helpdb[數(shù)據(jù)庫名]例2-11查看數(shù)據(jù)庫libsys的屬性。

sp_helpdblibsys例2-12查看所有數(shù)據(jù)庫的屬性。EXECUTEsp_helpdb管理數(shù)據(jù)庫2.3.4分離與附加數(shù)據(jù)庫1、分離數(shù)據(jù)庫例2-13分離數(shù)據(jù)庫libsys。(1)用SSMS窗口實現(xiàn):在數(shù)據(jù)庫屬性窗口中,依次執(zhí)行【任務】-【分離】。任務2.3(2)用命令分離數(shù)據(jù)庫使用系統(tǒng)存儲過程sp_detach_db,其格式是:EXECUTEsp_detach_db數(shù)據(jù)庫名USEmasterGOEXECUTEsp_detach_dblibsys管理數(shù)據(jù)庫2.3.4分離與附加數(shù)據(jù)庫2、附加數(shù)據(jù)庫例2-14將例1-12中分離的數(shù)據(jù)庫libsys附加到SQLSERVER系統(tǒng),物理文件存放在D盤data文件夾中,分別是libsysdata.mdf和libsyslog.ldf。(1)用SSMS窗口實現(xiàn):在數(shù)據(jù)庫屬性窗口中,依次執(zhí)行【附加】-【定位數(shù)據(jù)庫】。任務2.3(2)用CREATEdatabase命令完成,格式是:CREATEDATABASE數(shù)據(jù)庫名ON(FILENAME=主數(shù)據(jù)庫物理文件名)FORATTACH

例2-14的命令是:CREATEDATABASElibsysON(FILENAME='D:\data\libsysdata.mdf')FORATTACH數(shù)據(jù)庫的創(chuàng)建與管理項目總結項目二1、主要內容任務2.1查看數(shù)據(jù)庫服務器信息任務2.2創(chuàng)建數(shù)據(jù)庫任務2.3管理數(shù)據(jù)庫2、自測管理數(shù)據(jù)庫的系統(tǒng)存儲過程有哪些?創(chuàng)建數(shù)據(jù)庫時,需要提供哪些參數(shù)?如何實現(xiàn)將數(shù)據(jù)庫轉移到其它機器上?在Windows中刪除對應的文件以后,數(shù)據(jù)庫還能正常使用嗎?項目三數(shù)據(jù)表的創(chuàng)建與管理任務3.1數(shù)據(jù)完整性任務3.2創(chuàng)建表結構任務3.3修改數(shù)據(jù)表結構123主要知識點數(shù)據(jù)完整性及實現(xiàn)方法運用SSMS創(chuàng)建表結構運用命令方式管理表結構表的修改與維護學習目標數(shù)據(jù)完整性類型數(shù)據(jù)完整性實現(xiàn)方法創(chuàng)建表修改表刪除表維護表結構任務3.1數(shù)據(jù)完整性3.1.1

數(shù)據(jù)完整性類型3.1.2數(shù)據(jù)完整性約束實現(xiàn)數(shù)據(jù)完整性3.1.1

數(shù)據(jù)完整性類型數(shù)據(jù)完整性包括域完整性、實體完整性、參照完整性、自定義完整性。數(shù)據(jù)表,是數(shù)據(jù)庫的最主要組成成分,由若干欄目(列或字段)和若干行組成,每一行稱為一條記錄。所有列全部加起來組成表結構,表就是由結構和記錄兩部分組成的。每個欄目均需要設置其名稱(即列名、字段名)、數(shù)據(jù)類型、長度、約束,列名必須符合標識符的要求,數(shù)據(jù)類型由系統(tǒng)規(guī)定,長度是一個整數(shù),表示這個列最大可以輸入多少個字符,而約束是對這個列的值設置的限制條件,稱為域完整性約束。各個字段之間可能存在的關聯(lián)關系,稱為實體完整性約束。表與表之間也可能存在的相互關系,稱為參照完整性約束。任務3.1數(shù)據(jù)完整性3.1.1

數(shù)據(jù)完整性類型數(shù)據(jù)完整性包括4種類型:實體完整性、域完整性、參照完整性、自定義完整性。域完整性:作用的對象是列(字段),是給指定列的輸入設置有效性約束條件。強制域有效性的方法有:限制類型(通過數(shù)據(jù)類型)、格式(通過CHECK約束和規(guī)則)或可能值的范圍(通過FOREIGNKEY約束、CHECK約束、DEFAULT定義、NOTNULL定義和規(guī)則)。實體完整性:作用的對象是行(記錄),強制表的標識符列或主鍵的完整性(通過UNIQUE約束、PRIMARYKEY約束或IDENTITY屬性約束)。參照完整性:作用的對象是關系(表)。在輸人或刪除記錄時,參照完整性保持表之間已定義的關系?;谧颖硗怄I與主表主鍵之間或子表外鍵與主表唯一鍵之間的關系(通過FOREIGNKEY和CHECK約束)。用戶定義完整性:用戶可以定義不屬于其他任何完整性分類的特定業(yè)務規(guī)則,作用的對象可以是列,也可以是記錄或表。所有的完整性類型都支持用戶定義完整性,如CREATETABLE中的所有列級和表級約束、存儲過程和觸發(fā)器。任務3.1數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)增加約束的命令格式是:

addconstraint約束名約束內容約束名的通用格式是:約束類型_列名,如:主鍵約束PK_,唯一性約束UQ_,外鍵約束FK_,檢查約束CK_,默認值約束DF_等。以libsys數(shù)據(jù)庫的表bookinfo(BookID,BookName,BookType,Writer,Publisher,PublishDate,Price,BuyDate,BuyCount,AbleCount,Remark)為例,實現(xiàn)數(shù)據(jù)完整性約束。任務3.1數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)1、實體完整性約束的實現(xiàn)

包括PRIMARYKEY(主鍵約束)、UNIQUE(唯一性約束)和IDENTITY(標識列約束)等。(1)PRIMARYKEY主鍵約束的實現(xiàn)。SSMS實現(xiàn):在表的設計窗口中,選擇主鍵列,單擊快捷菜單【設置主鍵】即可。任務3.1數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)1、實體完整性約束的實現(xiàn)

任務3.1用命令實現(xiàn)先定義一個約束PK_bookid,命令是:addconstrainPK_bookidprimarykeybookid,將以上命令加進建表命令的后面。也可以在建立列bookid的命令中添加primarykey或者constrainPK_bookidprimarykey。如:createtablebookinfo(Bookidchar(20)constraintPK_bookidprimarykey,

--這樣也可以:Bookidchar(20)primarykey,……)如果要設置BookName和Writer兩列均為主鍵,則命令是:addconstraintPK_BookName_Writerprimarykey(BookName,Writer)數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)1、實體完整性約束的實現(xiàn)

任務3.1(2)UNIQUE唯一性約束的實現(xiàn)用SSMS實現(xiàn):任務:BookID為唯一性約束在表設計器中,選擇【索引和鍵】,打開“索引/鍵”對話框,點擊【添加】按鈕,創(chuàng)建索引IX_bookinfo,選擇bookid列,將類型修改為“是唯一的”,關閉窗口后保存修改。數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)1、實體完整性約束的實現(xiàn)

任務3.1(2)UNIQUE唯一性約束的實現(xiàn)用命令實現(xiàn):任務:BookID為唯一性約束用命令為表bookinfo創(chuàng)建“UNIQUE約束”:altertablebookinfoaddconstraintUQ_bookidunique(bookid)或者在建表時直接給bookid列增加UNIQUE約束:createtablebookinfo(

Bookidchar(20)constraintUQ_bookidunique(bookid),--Bookidchar(20)unique,……)數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)1、實體完整性約束的實現(xiàn)

任務3.1(3)標識列約束的實現(xiàn)標識列(identity)就是給表輸入記錄時此列自動編號,即流水號,默認從1開始編號,稱為標識種子,增量為1,標識列要求是整數(shù),通常為int類型,標識列的值不能手動輸入,不能為空,不能修改。任務:給表bookinfo增加一列no,要求自動編號。用SSMS實現(xiàn)的方法:打開表設計窗口,選擇no列,在底部的列屬性窗格中,雙擊【標識規(guī)范】欄的【是標識】,即可在“是”與“否”之間進行切換。數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)1、實體完整性約束的實現(xiàn)

任務3.1(3)標識列約束的實現(xiàn)用命令實現(xiàn)的方法:createtablebookinfo(nointidentity(1,1),……)總結:建立了約束后,如果要在SSMS窗口中以交互方式刪除約束,方法與建立時相同,如果用命令實現(xiàn),命令是dropconstraint約束名。數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)2、域完整性約束的實現(xiàn)

任務3.1(2)默認值約束的實現(xiàn)假設要將bookinfo表的出版日期列publishdate的默認值設為系統(tǒng)日期,對應的系統(tǒng)函數(shù)是getdate(),處理方法是:用SSMS窗口:打開bookinfo表設計窗口,選擇列publishdate,在下方的列屬性窗格中,將屬性“默認值或綁定”設為getdate()。用命令:建表窗口中,給列publishdate增加默認值約束defaultgetdate(),即:PublishdatedatetimenullconstraintDF_publishdatedefaultgetdate()或者Publishdatedatetimenulldefaultgetdate()或者Publishdatedatetimenulldefault(getdate())數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)2、域完整性約束的實現(xiàn)

任務3.1(3)檢查約束的實現(xiàn)CHECK檢查約束通過限制輸入到列中的值來強制域的完整性。格式是:check邏輯表達式。任務:將readerinfo表ReaderAge列的取值范圍限制在18~60歲之間,表示式為:checkReaderAge>=18andReaderAge<=60。用SSMS實現(xiàn):單擊工具欄中的【管理CHECK約束】按鈕,打開CHECK約束對話框。單擊【添加】按鈕,在名稱輸入框中把默認名改為CK_ReaderAge,在表達式右端輸入表達式:checkReaderAgebetween18and60。數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)2、域完整性約束的實現(xiàn)

任務3.1(3)檢查約束的實現(xiàn)任務:將readerinfo表ReaderAge列的取值范圍限制在18~60歲之間,表示式為:checkReaderAge>=18andReaderAge<=60。用命令實現(xiàn):如果作為表定義的一部分在創(chuàng)建表時創(chuàng)建檢查約束,命令是:ReaderAgeintconstraintCK_ReaderAgecheckReaderAge>=18andReaderAge<=60

或者ReaderAgeintcheckReaderAgebetween18and60也可以添加到現(xiàn)有表中。如:AddconstraintCK_ReaderAgecheckReaderAge>=18andReaderAge<=60數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)3、參照完整性約束的實現(xiàn)

任務3.1參照完整性指的是表與表之間存在的相互依賴性,如數(shù)據(jù)庫libsys中,有3張表,即bookinfo圖書信息表、readerinfo讀者信息表和borrowinfo借閱情況表,borrowinfo記錄的信息是哪些讀者在什么時候借閱了哪些書,因此borrowinfo表的readerID列(表示讀者號)來自于borrowinfo表中的readerID,bookid列(表示書號)來源于bookinfo表的bookid列,用外鍵約束(foreignkey)實現(xiàn),bookinfo和readerinfo稱為主鍵表,borrowinfo稱為外鍵表。用SSMS實現(xiàn):用表設計器打開外鍵表borrowinfo,單擊工具欄中的【關系】按鈕,打開【外鍵關系】對話框。單擊【添加】按鈕,添加一個關系,單擊【表和列規(guī)范】右端的按鈕,打開【表和列】對話框。主鍵表選擇表BookInfo,主鍵為字段BookID,外鍵表選擇borrowinfo,外鍵為字段BookID,點擊【確定】,返回關系對話框,將標識名稱修改為FK_borrowinf_BookInfo_BookID。同樣的方法設置外鍵Readerid。數(shù)據(jù)完整性3.1.2

數(shù)據(jù)完整性約束的實現(xiàn)3、參照完整性約束的實現(xiàn)

任務3.1參照完整性指的是表與表之間存在的相互依賴性,如數(shù)據(jù)庫libsys中,有3張表,即bookinfo圖書信息表、readerinfo讀者信息表和borrowinfo借閱情況表,borrowinfo記錄的信息是哪些讀者在什么時候借閱了哪些書,因此borrowinfo表的readerID列(表示讀者號)來自于borrowinfo表中的readerID,bookid列(表示書號)來源于bookinfo表的bookid列,用外鍵約束(foreignkey)實現(xiàn),bookinfo和readerinfo稱為主鍵表,borrowinfo稱為外鍵表。用命令實現(xiàn):在建立外鍵表borrowinfo的命令中,設置列ReaderID時,增加外鍵約束,命令是:ReaderIDchar(10)primarykeyforeignkeyreferencesReaderInfo(ReaderID)或者ReaderIDchar(10)primarykeyconstraintFK_BorrowInfo_ReaderInfo_ReaderIDforeignkeyreferencesReaderInfo(ReaderID)2.同樣建立外鍵表borrowinfo的外鍵BookID的命令是:BookIDchar(10)primarykeyforeignkeyreferencesBookInfo(BookID)或者ReaderIDchar(10)primarykeyconstraintFK_BorrowInfo_BookInfo_BookIDforeignkeyreferencesBookInfo(BookID)創(chuàng)建數(shù)據(jù)表結構3.2.1

用SSMS創(chuàng)建表結構例3-1利用SSMS給libsys添加讀者信息表readerinfo。

任務3.2【數(shù)據(jù)庫】-【libsys】-【表】,右擊“表”,-【新建】-【表】。設置各列的列名、數(shù)據(jù)類型、允許Null值設置主鍵保存表創(chuàng)建數(shù)據(jù)表結構3.2.2

用CREATETABLE命令創(chuàng)建表結構建立表的命令格式是:

任務3.2CREATETABLE表名(列名類型(長度){列約束}[,…n][表約束])例3-2利用SQL命令給libsys數(shù)據(jù)庫添加讀者信息表ReaderInfo,要求如圖:

USElibsysGO--建立ReaderInfo表的結構CREATETABLEReaderInfo(

ReaderIDchar(10)PRIMARYKEY,

ReaderNamechar(10)NOTNULL,

ReaderSexchar(2)NOTNULL,

ReaderAgeintNULL,

Departmentvarchar(30)NOTNULL,

ReaderTypechar(10)NOTNULL,

StartDatedatetimeNOTNULL,

Mobilevarchar(12)NULL,

Emailvarchar(40)NULL,

Memoryvarchar(50)NULL)GO創(chuàng)建數(shù)據(jù)表結構3.2.3

創(chuàng)建帶完整性約束的表任務3.2例3-4:建立一個工人信息表,包括編號、姓名、職務。要求主鍵為編號姓名具有唯一性,用constraint定義約束。createtable職工信息表(編號char(10),姓名char(8),職務char(12),constraintpk_職工信息表_編號primarykey(編號),constraintuq_職工信息表_姓名unique(姓名))創(chuàng)建數(shù)據(jù)表結構3.2.3

創(chuàng)建帶完整性約束的表任務3.2例3-5:建立一個職員基本信息表baseinfo,包括編號no、姓名name、性別sex、電話tele、Email要求:性別只接受男和女,默認為男,電話必須是8位數(shù)字,Email中必須含有@符號。createtablebaseinfo(nochar(10),namechar(8),sexchar(2)default'男',constraintchk_sexcheck(sex='男'orsex='女'),telechar(8),constraintCK_telecheck(telelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),Emailvarchar(30),constraintck_Emailcheck(Emaillike'%@%'))創(chuàng)建數(shù)據(jù)表結構3.2.3

創(chuàng)建帶完整性約束的表任務3.2例3-6外鍵的使用,用SQL命令為數(shù)據(jù)庫scoresys建立表Score,如表。其中SID字段是主鍵,也是外鍵約束,來源于Student表的SID字段,CourseID字段是主鍵,也是外鍵約束,來源于Course表的CourseID字段。USEscoresysGOCREATETABLEScore(SIDchar(12)foreignkeyreferencesstudent(SID),CourseIDchar(10)foreignkeyreferencescourse(CourseID),ExamTimedatetimeNOTNULL,Markdecimal(4,1)NULL,ExamPlacevarchar(20)NULL,Memoryvarchar(20)NULL,PRIMARYKEY(SID,CourseID,ExamTime))GO修改數(shù)據(jù)表結構3.3.1

用SSMS修改表結構任務3.3右擊表名,在彈出的快捷菜單中,執(zhí)行【設計】即可打開表結構,與建立表時的顯示內容相同,可以直接修改。修改完成后,單擊【保存】按鈕或者關閉標簽頁面使修改生效。如果表中已經輸入了記錄,則修改結構時,可能會造成數(shù)據(jù)的損壞或者丟失,需要謹慎操作。比如某列的數(shù)據(jù)類型發(fā)生改變,則這列的數(shù)據(jù)可能會丟失,如果某列的長度由長變短,則原來記錄中超出此列現(xiàn)有長度的數(shù)據(jù)將會被自動截掉,且不可恢復。修改數(shù)據(jù)表結構3.3.2

用命令修改表結構任務3.3修改表結構的命令是ALTERTABLE。ALTERTABLE表名{ALTERCOLUMN列名類型[列約束]ADD列名類型[列約束]ADDCONSTRAINT約束名約束內容DROPCOLUMN列名[,…n]}例3-7假設已有數(shù)據(jù)庫factory,增加一個工人信息表employee。usefactorygocreatetableemployee(idchar(8)primarykey,namechar(20)notnull,departmentchar(20)null,ageint,cqint,)修改數(shù)據(jù)表結構3.3.2

用命令修改表結構任務3.3要求:在表中增加一個salary字段,刪除age字段,修改cq字段的數(shù)據(jù)類型。例3-7假設已有數(shù)據(jù)庫factory,增加一個工人信息表employee。usefactorygocreatetableemployee(idchar(8)primarykey,namechar(20)notnull,departmentchar(20)null,ageint,cqint,)altertableemployeeaddsalaryfloataltertableemployeedropcolumnagealtertableemployeealtercolumncqdecimal(4,1)例3-8在上例數(shù)據(jù)庫factory的工人信息表employee中,增加一個約束,將年齡(age)限制在20-60之間。altertableemployeeaddconstraintchk_agecheck(age>=20andage<=60)數(shù)據(jù)表的創(chuàng)建與管理項目總結項目三1、主要內容任務3.1數(shù)據(jù)的完整性約束任務3.2創(chuàng)建數(shù)據(jù)表結構任務3.3修改數(shù)據(jù)表結構2、自測數(shù)據(jù)的完整性約束有哪些?創(chuàng)建數(shù)據(jù)表結構時,列的參數(shù)有哪些?創(chuàng)建帶約束的數(shù)據(jù)表結構,用SSMS和命令實現(xiàn),哪個更容易一點?刪除數(shù)據(jù)后,已建立數(shù)據(jù)表還存在嗎?項目四數(shù)據(jù)基本操作任務4.1向數(shù)據(jù)表中添加記錄任務4.3刪除數(shù)據(jù)表中的數(shù)據(jù)記錄任務4.2更新數(shù)據(jù)表中的數(shù)據(jù)記錄123任務4.1向數(shù)據(jù)表中添加記錄4.1.1用SSMS向數(shù)據(jù)庫表中添加記錄4.1.2用SQL命令向數(shù)據(jù)庫表中添加記錄向數(shù)據(jù)表中添加記錄4.1.1用SSMS向數(shù)據(jù)庫表中添加記錄在SSMS管理器窗口中,右擊表名,在表的快捷菜單中選擇“編輯前200行”,即可進入記錄的輸入界面,如圖4-1所示,依次輸入各條記錄的內容即可(必須一條記錄輸入完整后才能輸入下一條記錄)。在輸入記錄時,當前字段的值右邊會出現(xiàn)一個紅色的標志,如圖4-2所示,表示數(shù)據(jù)已經修改,提醒用戶保存數(shù)據(jù),單擊“保存”按鈕或者關閉窗口均可保存。任務4.1圖4-1數(shù)據(jù)表的快捷菜單圖4-2數(shù)據(jù)輸入輸入一條記錄后,系統(tǒng)會根據(jù)主鍵的值由小到大自動重新排列記錄的順序。如果輸入記錄后,如果記錄后無法保存,一般原因是不符合約束要求,請ESC鍵取消后重新輸入,連續(xù)按ESC鍵可以取消當前行的全部輸入。任務4.1圖4-3表BookInfo的記錄向數(shù)據(jù)表中添加記錄4.1.1用SSMS向數(shù)據(jù)庫表中添加記錄1、用INSERT添加數(shù)據(jù)記錄在SQLSERVER中,可以使用INSERT命令向數(shù)據(jù)庫表中添加記錄,其格式是:INSERT[INTO]表名[(列名1[,列名2…])]VALUES(值1[,值2…])在命令格式中INTO,可以省略;如果輸入所有列的內容,則列名列表可以省略,如果只輸入部分列的值,則列名列表不可以省略,且VALUSE后面的值必須與列名列表要一一對應。任務4.1向數(shù)據(jù)表中添加記錄4.1.2用SQL命令向數(shù)據(jù)庫表中添加記錄例4-1用SQL命令給表BookInfo輸入圖4-3所示的11條記錄。任務4.1圖4-3表BookInfo的記錄向數(shù)據(jù)表中添加記錄4.1.2用SQL命令向數(shù)據(jù)庫表中添加記錄例4-1用SQL命令給表BookInfo輸入圖4-3所示的11條記錄。-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論