SQL-電子工業(yè)-耿文蘭.ppt
《SQL-電子工業(yè)-耿文蘭.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《SQL-電子工業(yè)-耿文蘭.ppt(564頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
SQLServer2000數(shù)據(jù)庫(kù)管理與開(kāi)發(fā),電子工業(yè)出版社,課程要求,考試成績(jī)?cè)u(píng)定考勤及紀(jì)律20%課堂測(cè)驗(yàn)及作業(yè)30%期末考試50%本課程學(xué)習(xí)技巧加強(qiáng)記憶充分思考加強(qiáng)上機(jī)實(shí)踐理論聯(lián)系實(shí)際,2,3,目錄,第01章SQLServer2000概述第02章數(shù)據(jù)庫(kù)管理第03章表及其應(yīng)用第04章數(shù)據(jù)的查詢與更新第05章使用視圖和索引第06章Transact-SQL程序設(shè)計(jì)第07章使用規(guī)則、默認(rèn)值與觸發(fā)器第08章SQLServer中的安全管理第09章備份和還原第10章不同數(shù)據(jù)格式的轉(zhuǎn)換,第01章SQLServer2000概述,1.1SQLServer2000簡(jiǎn)介1.2SQLServer2000的安裝1.3啟動(dòng)和停止SQLServer服務(wù)1.4注冊(cè)服務(wù)器和創(chuàng)建服務(wù)器組1.5SQLServer2000管理工具簡(jiǎn)介,總結(jié),5,回憶以前學(xué)習(xí)的知識(shí),生活中遇到的大量數(shù)據(jù),需要解決哪些問(wèn)題?數(shù)據(jù)保存、查詢、排序、篩選、刪除……在Execl中學(xué)習(xí)的相關(guān)內(nèi)容?數(shù)據(jù)清單、自動(dòng)篩選和高級(jí)篩選、分類匯總、數(shù)據(jù)透視圖和透視表Execl數(shù)據(jù)庫(kù),6,計(jì)算機(jī)化數(shù)據(jù)庫(kù)的好處,數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)能夠共享數(shù)據(jù)冗余度小,易擴(kuò)充數(shù)據(jù)與程序的獨(dú)立性較高對(duì)數(shù)據(jù)實(shí)行集中統(tǒng)一控制可以建立和遵循某些標(biāo)準(zhǔn)便于維護(hù)數(shù)據(jù)完整性能夠?qū)崿F(xiàn)數(shù)據(jù)的安全性,7,數(shù)據(jù)庫(kù)的發(fā)展史,萌芽階段——文件系統(tǒng)使用磁盤文件來(lái)存儲(chǔ)數(shù)據(jù)初級(jí)階段——第一代數(shù)據(jù)庫(kù)出現(xiàn)了網(wǎng)狀模型、層次模型的數(shù)據(jù)庫(kù)中級(jí)階段——第二代數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)和結(jié)構(gòu)化查詢語(yǔ)言高級(jí)階段——新一代數(shù)據(jù)庫(kù)“關(guān)系-對(duì)象”型數(shù)據(jù)庫(kù),8,SQLServer2000,MSSQLServer2000是一個(gè)大型的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)多層的客戶/服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng)采用請(qǐng)求-應(yīng)答工作方式,9,SQLServer2000的版本,企業(yè)版最大支持32個(gè)CPU、64G內(nèi)存的多處理器系統(tǒng),適合大規(guī)模商業(yè)應(yīng)用標(biāo)準(zhǔn)版最大支持4個(gè)CPU、2G內(nèi)存的多處理器系統(tǒng),適合中小規(guī)模商業(yè)應(yīng)用個(gè)人版支持兩個(gè)CPU的處理器系統(tǒng),適合個(gè)人或小型工作組的實(shí)驗(yàn)應(yīng)用開(kāi)發(fā)版適合于開(kāi)發(fā)人員應(yīng)用評(píng)估版適合于開(kāi)發(fā)人員體驗(yàn)SQLServer2000的新功能,安裝SQLServer2000企業(yè)版,11,各版本關(guān)系,,,無(wú)縫遷移,100%的兼容性,12,SQLServer2000的新特性,與Internet集成可伸縮性和易用性企業(yè)級(jí)數(shù)據(jù)庫(kù)功能易于安裝、部署和使用數(shù)據(jù)倉(cāng)庫(kù),13,安裝SQLServer20004-1,以MicrosoftSQLServer2000Personal版本為例1.插入光盤SQLServer2000自動(dòng)安裝或雙擊光盤上的AUTORUN.EXE文件2.點(diǎn)擊【安裝SQLServer2000組件(C)】3.點(diǎn)擊【安裝數(shù)據(jù)庫(kù)服務(wù)器(S)】,,14,安裝SQLServer20004-2,4.選中【本地計(jì)算機(jī)】選項(xiàng)。5.選擇【創(chuàng)建新的SQLSERVER實(shí)例】項(xiàng),,15,安裝SQLServer20004-3,6.在姓名后輸入:“王斌”,在公司名稱后輸入:“**計(jì)算機(jī)工程有限公司”7.接受許可協(xié)議8.選中【服務(wù)器和客戶端工具[S]】,16,安裝SQLServer20004-4,9.選中【典型】安裝方式10.選擇【使用本地系統(tǒng)帳戶】11.選擇【混合模式(Windows身份驗(yàn)證和SQL身份驗(yàn)證)】,輸入用戶名“sa”和密碼“sa”12.至此安裝SQLSERVER2000全部結(jié)束,17,停止和啟動(dòng)SQLServer服務(wù),在對(duì)SQLServer數(shù)據(jù)庫(kù)進(jìn)行任何操作之前,必須啟動(dòng)本地或遠(yuǎn)程SQLServer服務(wù)器使用服務(wù)管理器使用命令服務(wù)管理運(yùn)行:NetStartmssqlserver暫停:Netpausemssqlserver繼續(xù):Netcontinuemssqlserver停止:Netstopmssqlserver,18,注冊(cè)一個(gè)SQLServer4-1,,在SQLServer企業(yè)管理器的菜單中選擇操作,從菜單中選擇【新建SQLServer注冊(cè)】,進(jìn)入到【歡迎使用注冊(cè)SQLServer向?qū)А繉?duì)話框,19,注冊(cè)一個(gè)SQLServer4-2,選擇復(fù)選框中你要使用的一個(gè)或多個(gè)服務(wù)器。選擇使用的身份認(rèn)證方式—SQLServer身份認(rèn)證,,20,注冊(cè)一個(gè)SQLServer4-3,,在SQLServer身份認(rèn)證對(duì)話框中輸入登錄名和密碼選擇服務(wù)器組或創(chuàng)建服務(wù)器組,21,注冊(cè)一個(gè)SQLServer4-4,整個(gè)注冊(cè)過(guò)程完成,22,管理工具簡(jiǎn)介,服務(wù)管理器服務(wù)啟動(dòng)、暫停和停止管理企業(yè)管理器可以完成幾乎所有管理工作查詢分析器允許輸入、執(zhí)行SQL語(yǔ)句并返回結(jié)果客戶端網(wǎng)絡(luò)實(shí)用工具客戶端數(shù)據(jù)庫(kù)連接工具事件探查器數(shù)據(jù)庫(kù)事件管理工具數(shù)據(jù)導(dǎo)入/導(dǎo)出工具用于數(shù)據(jù)的傳遞與轉(zhuǎn)換,結(jié)構(gòu)化查詢語(yǔ)言SQL——StructuredQueryLanguageSQL是RDBMS的標(biāo)準(zhǔn)語(yǔ)言,遵循ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))所制定的標(biāo)準(zhǔn)。SQL分類數(shù)據(jù)查詢語(yǔ)言(DQL):Select*FROMABC數(shù)據(jù)操作語(yǔ)言(DML):UpdateABCSETA=“CH”數(shù)據(jù)控制語(yǔ)言(DCL):RevokeCreateTableFROMU1數(shù)據(jù)定義語(yǔ)言(DDL):CreateTableABC通用命令語(yǔ)言(CCL):DeclareCSCursorFor…,SQL的分類,24,第01章總結(jié),掌握概念關(guān)系數(shù)據(jù)庫(kù)SQLServer2000的版本兩種身份驗(yàn)證模式管理工具的使用服務(wù)管理器企業(yè)管理器查詢分析器,25,早期數(shù)據(jù)保存方式—計(jì)算機(jī)文件,可以以不同的文件格式進(jìn)行數(shù)據(jù)保存今天人們依然采用文件方式保存一些數(shù)據(jù),26,數(shù)據(jù)庫(kù)模型,模型:事物抽象特征或者過(guò)程的描述數(shù)據(jù)模型描述用來(lái)存儲(chǔ)數(shù)據(jù)的容器在該容器中存儲(chǔ)和檢索數(shù)據(jù)的過(guò)程數(shù)據(jù)庫(kù)模型分類層次模型網(wǎng)狀模型關(guān)系模型,27,75,3,86,2,98,1,成績(jī),學(xué)號(hào),,,,,,,,,劉三陽(yáng),3,李東,2,張明,1,姓名,學(xué)號(hào),,,,,,,,,,關(guān)系模型,記錄和記錄之間通過(guò)屬性之間的關(guān)系來(lái)進(jìn)行連接保證數(shù)據(jù)獨(dú)立性,并形成數(shù)據(jù)集之間的關(guān)系,28,基于關(guān)系模型的數(shù)據(jù)庫(kù),目前較流行的關(guān)系型數(shù)據(jù)庫(kù)桌面數(shù)據(jù)庫(kù)MSAccess大型網(wǎng)絡(luò)數(shù)據(jù)庫(kù)MSSQLServer、Oracle和Sybase、DB2等,29,請(qǐng)求-應(yīng)答工作方式,,,數(shù)據(jù)庫(kù)服務(wù)器,響應(yīng)和提供數(shù)據(jù),應(yīng)用程序,數(shù)據(jù)庫(kù),操作和查詢,30,SQLServer實(shí)例,安裝SQLServer2000數(shù)據(jù)服務(wù)器就是安裝SQLServer2000數(shù)據(jù)庫(kù)引擎實(shí)例一臺(tái)計(jì)算機(jī)上可安裝多個(gè)SQLServer數(shù)據(jù)庫(kù)引擎實(shí)例在單臺(tái)計(jì)算機(jī)上可以運(yùn)行的實(shí)例數(shù)目取決于可用資源,SQLServer2000最多支持16個(gè)實(shí)例SQLServer實(shí)例類型默認(rèn)實(shí)例一臺(tái)計(jì)算機(jī)上只能有一個(gè)默認(rèn)實(shí)例默認(rèn)實(shí)例可以是SQLServer的任何版本命名實(shí)例,31,SQLServer服務(wù)SQLServer代理服務(wù)MSDTC服務(wù),每個(gè)SQLServer實(shí)例都有一個(gè)SQLServer服務(wù),默認(rèn)實(shí)例名為MSSQLServer,服務(wù)管理器,32,服務(wù)管理器的啟動(dòng)方法,托盤圖標(biāo)開(kāi)始菜單程序組執(zhí)行文件Sqlmangr.exe,33,企業(yè)管理器,,在服務(wù)器節(jié)點(diǎn)上指示燈是綠色的,表示服務(wù)器連接成功,34,登錄查詢分析器,,,,35,使用查詢分析器,,,,,第02章數(shù)據(jù)庫(kù)管理,2.1數(shù)據(jù)庫(kù)系統(tǒng)概述2.2SQLServer數(shù)據(jù)庫(kù)概念2.3系統(tǒng)數(shù)據(jù)庫(kù)2.4創(chuàng)建用戶數(shù)據(jù)庫(kù)2.5查看數(shù)據(jù)庫(kù)信息2.6設(shè)置數(shù)據(jù)庫(kù)選項(xiàng)2.7修改數(shù)據(jù)庫(kù)2.8刪除數(shù)據(jù)庫(kù)2.9數(shù)據(jù)庫(kù)的分離與附加,總結(jié),37,數(shù)據(jù)庫(kù)概述,數(shù)據(jù)庫(kù)就是按照一定的組織結(jié)構(gòu)存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)介質(zhì)上的相關(guān)數(shù)據(jù)的集合數(shù)據(jù)庫(kù)具有以下的特點(diǎn)結(jié)構(gòu)化數(shù)據(jù)庫(kù)文件及文件內(nèi)部數(shù)據(jù)都有一定的結(jié)構(gòu)獨(dú)立性數(shù)據(jù)的邏輯組織與物理存儲(chǔ)方式無(wú)關(guān)數(shù)據(jù)共享,減少冗余數(shù)據(jù)集中存儲(chǔ),統(tǒng)一管理安全性與完整性保證數(shù)據(jù)的正確性和可靠性,38,什么是DBMS?,數(shù)據(jù)庫(kù)管理系統(tǒng)是用來(lái)幫助用戶建立、使用和管理數(shù)據(jù)庫(kù)的軟件系統(tǒng),簡(jiǎn)稱DBMS數(shù)據(jù)庫(kù)管理系統(tǒng)的功能建立:建立數(shù)據(jù)庫(kù)結(jié)構(gòu),并存儲(chǔ)用戶數(shù)據(jù)操作:插入、修改、刪除、檢索、統(tǒng)計(jì)匯總、打印等其他:數(shù)據(jù)安全性、數(shù)據(jù)完整性、并發(fā)控制(在網(wǎng)絡(luò)環(huán)境下多個(gè)用戶同時(shí)對(duì)同一數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行存取的操作)等管理,39,數(shù)據(jù)庫(kù)系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)狹義地講是由數(shù)據(jù)庫(kù)管理系統(tǒng)和用戶構(gòu)成廣義地講是由計(jì)算機(jī)硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)以及在它支持下建立起來(lái)的數(shù)據(jù)庫(kù)、應(yīng)用程序、用戶和維護(hù)人員組成的一個(gè)整體,40,數(shù)據(jù)庫(kù)系統(tǒng)的組成,計(jì)算機(jī)基本系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)物理數(shù)據(jù)庫(kù)有關(guān)應(yīng)用所需要的工作數(shù)據(jù)的集合,是數(shù)據(jù)庫(kù)的主體描述數(shù)據(jù)庫(kù)關(guān)于各級(jí)數(shù)據(jù)結(jié)構(gòu)的描述數(shù)據(jù),通常由一個(gè)數(shù)據(jù)詞典系統(tǒng)管理,41,SQLServer數(shù)據(jù)庫(kù),SQLServer2000是一種采用SQL語(yǔ)言的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),是以文件的形式存儲(chǔ)在磁盤上的(以文件組形式進(jìn)行組織管理),數(shù)據(jù)庫(kù)文件(使用便于管理的規(guī)則命名)根據(jù)作用不同分為三種,42,采用多個(gè)數(shù)據(jù)庫(kù)文件來(lái)存儲(chǔ)數(shù)據(jù)的優(yōu)點(diǎn),數(shù)據(jù)庫(kù)文件可以不斷擴(kuò)充而不受操作系統(tǒng)文件大小的限制可以將數(shù)據(jù)庫(kù)文件存儲(chǔ)在不同的硬盤中,這樣可以同時(shí)對(duì)幾個(gè)硬盤做數(shù)據(jù)存取提高了數(shù)據(jù)處理的效率,對(duì)于服務(wù)器型的計(jì)算機(jī)尤為有用,43,數(shù)據(jù)庫(kù)對(duì)象,數(shù)據(jù)庫(kù)中的數(shù)據(jù)按不同形式組織在一起,構(gòu)成了不同的數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象在磁盤上沒(méi)有對(duì)應(yīng)的文件SQLServer2000中有以下數(shù)據(jù)庫(kù)對(duì)象:表、視圖、存儲(chǔ)過(guò)程、觸發(fā)器、用戶自定義數(shù)據(jù)類型、用戶自定義函數(shù)、索引、規(guī)則、默認(rèn)、約束等,44,數(shù)據(jù)庫(kù)文件組,將多個(gè)數(shù)據(jù)文件存放在不同的磁盤上并把多個(gè)數(shù)據(jù)文件組成一個(gè)或多個(gè)文件組數(shù)據(jù)庫(kù)根據(jù)組內(nèi)數(shù)據(jù)文件的大小,按比例地寫入組內(nèi)所有數(shù)據(jù)文件,使多個(gè)磁盤同時(shí)并行工作、提高讀寫速度在一個(gè)數(shù)據(jù)庫(kù)中可以創(chuàng)建多個(gè)文件組,而一個(gè)數(shù)據(jù)文件只能屬于一個(gè)文件組事務(wù)日志文件不能屬于任何文件組一個(gè)數(shù)據(jù)文件或文件組只被一個(gè)數(shù)據(jù)庫(kù)使用,45,數(shù)據(jù)庫(kù)文件組示例,,,,,46,系統(tǒng)數(shù)據(jù)庫(kù)2-1,,,系統(tǒng)數(shù)據(jù)庫(kù),示例數(shù)據(jù)庫(kù),47,系統(tǒng)數(shù)據(jù)庫(kù)2-2,,臨時(shí)數(shù)據(jù)庫(kù),臨時(shí)數(shù)據(jù)可被自動(dòng)刪除,不需要特殊權(quán)限,系統(tǒng)中僅有一個(gè),空間不足可自動(dòng)擴(kuò)展,系統(tǒng)數(shù)據(jù)庫(kù),用戶數(shù)據(jù)庫(kù),示例數(shù)據(jù)庫(kù),主控?cái)?shù)據(jù)庫(kù),用于管理其他數(shù)據(jù)庫(kù)和保存SQLServer系統(tǒng)信息,模板數(shù)據(jù)庫(kù),當(dāng)創(chuàng)建一個(gè)用戶數(shù)據(jù)庫(kù)時(shí)其內(nèi)容自動(dòng)復(fù)制到新數(shù)據(jù)庫(kù)中,來(lái)存儲(chǔ)計(jì)劃信息以及與備份和恢復(fù)相關(guān)的信息,SQLServer代理使用其安排報(bào)警、作業(yè)并記錄操作員,48,系統(tǒng)表,SQLServer2000中的每個(gè)數(shù)據(jù)庫(kù)都包含系統(tǒng)表系統(tǒng)表在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)產(chǎn)生系統(tǒng)表用來(lái)記錄SQLServer組件所需的數(shù)據(jù)SQLServer的操作能否成功,取決于系統(tǒng)表中信息的完整性任何用戶都不應(yīng)直接修改系統(tǒng)表,49,master數(shù)據(jù)庫(kù)中的系統(tǒng)表,50,常用數(shù)據(jù)庫(kù)系統(tǒng)表,51,創(chuàng)建用戶數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)是包含表、視圖、存儲(chǔ)過(guò)程及觸發(fā)器等數(shù)據(jù)庫(kù)對(duì)象的容器,在數(shù)據(jù)庫(kù)中建立的各種數(shù)據(jù)庫(kù)對(duì)象都保存在數(shù)據(jù)庫(kù)文件中創(chuàng)建數(shù)據(jù)庫(kù)之前應(yīng)考慮好數(shù)據(jù)庫(kù)的擁有者、數(shù)據(jù)庫(kù)的初始容量、最大容量、增長(zhǎng)量及數(shù)據(jù)庫(kù)文件存放的路徑等因素要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù),用戶必須具有相應(yīng)的權(quán)限可以使用企業(yè)管理器、CREATEDATABASE語(yǔ)句和向?qū)N方法,52,使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫(kù),,數(shù)據(jù)文件的邏輯名,數(shù)據(jù)文件的物理名,文件組,日志文件不屬于任何文件組,53,使用語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù),CREATEDATABASE數(shù)據(jù)庫(kù)名[ON[PRIMARY]{([NAME=數(shù)據(jù)文件的邏輯名稱,]FILENAME=‘?dāng)?shù)據(jù)文件的物理名稱’,[SIZE=數(shù)據(jù)文件的初始大小,][MAXSIZE=數(shù)據(jù)文件的最大容量,][FILEGROWTH=數(shù)據(jù)文件的增長(zhǎng)量])}[,…n]LOGON{([NAME=事務(wù)日志文件的邏輯名稱,]FILENAME=‘事務(wù)日志文件的物理名稱’,[SIZE=事務(wù)日志文件的初始大小,][MAXSIZE=事務(wù)日志文件的最大容量,][FILEGROWTH=事務(wù)日志文件的增長(zhǎng)量])}[,…n],例2.1,示例,54,使用向?qū)?chuàng)建數(shù)據(jù)庫(kù),,完成后會(huì)詢問(wèn)“是否馬上為新創(chuàng)建的數(shù)據(jù)庫(kù)創(chuàng)建維護(hù)計(jì)劃”。維護(hù)計(jì)劃就是設(shè)置何時(shí)自動(dòng)定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)。,55,查看數(shù)據(jù)庫(kù)信息,數(shù)據(jù)庫(kù)信息主要包括三方面基本信息維護(hù)信息空間使用情況使用企業(yè)管理器查看數(shù)據(jù)庫(kù)信息演示使用企業(yè)管理器查看數(shù)據(jù)庫(kù)信息…使用sp_helpdb查看數(shù)據(jù)庫(kù)信息語(yǔ)法:[execute]sp_helpdb[數(shù)據(jù)庫(kù)名]若省略數(shù)據(jù)庫(kù)名,與“select*fromsysdatabases”語(yǔ)句的功能完全相同,56,使用語(yǔ)句查看數(shù)據(jù)庫(kù)信息,使用sp_databases查看所有可用數(shù)據(jù)庫(kù)信息語(yǔ)法:[EXECUTE]sp_databases使用sp_helpfile查看當(dāng)前數(shù)據(jù)庫(kù)中某個(gè)文件信息語(yǔ)法:[EXECUTE]sp_helpfile[文件名]省略文件名則顯示當(dāng)前數(shù)據(jù)庫(kù)中所有文件的信息使用sp_helpfilegroup查看當(dāng)前數(shù)據(jù)庫(kù)中文件組信息語(yǔ)法:[EXECUTE]sp_helpfilegroup[文件組名]省略文件組名則顯示當(dāng)前數(shù)據(jù)庫(kù)中所有文件組信息,用法同sp_helpfile,57,設(shè)置數(shù)據(jù)庫(kù)選項(xiàng),,,,僅允許特殊用戶訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)只能讀取,不能修改,,,當(dāng)最后一個(gè)用戶退出,SQLServer將自動(dòng)關(guān)閉該數(shù)據(jù)庫(kù)并釋放其所占的系統(tǒng)資源,數(shù)據(jù)庫(kù)文件中未使用空間超過(guò)文件大小的25%,將自動(dòng)縮小空間,縮小后數(shù)據(jù)庫(kù)文件的大小不能小于初始大小。設(shè)置只讀時(shí),此選項(xiàng)無(wú)效,對(duì)數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限進(jìn)行設(shè)置和修改,58,使用存儲(chǔ)過(guò)程配置數(shù)據(jù)庫(kù)特性,[execute]sp_dboption‘?dāng)?shù)據(jù)庫(kù)名’[,‘選項(xiàng)名’,‘選項(xiàng)值],設(shè)置數(shù)據(jù)庫(kù)為只讀,EXECsp_dboptionpubs,readonly,True,EXECsp_dboptionpubs,autoshrink,true,EXECsp_dboptionstudents,singleuser,true,設(shè)置數(shù)據(jù)庫(kù)為自動(dòng)壓縮,設(shè)置數(shù)據(jù)庫(kù)為單用戶(例2.3),EXECsp_dboptionstudents,查看數(shù)據(jù)庫(kù)students所有設(shè)置為true的選項(xiàng)(例2.4),使用企業(yè)管理器修改數(shù)據(jù)庫(kù),操作方法和創(chuàng)建數(shù)據(jù)庫(kù)大體相同注意問(wèn)題在修改文件的“分配的空間”項(xiàng)時(shí),所改動(dòng)的值必須大于現(xiàn)有的空間值若要通過(guò)刪除未用空間來(lái)縮小數(shù)據(jù)庫(kù)文件的容量,先選擇要縮小的數(shù)據(jù)庫(kù),然后在“收縮數(shù)據(jù)庫(kù)”對(duì)話框中改變其容量值,59,60,使用語(yǔ)句修改數(shù)據(jù)庫(kù),ALTERDATABASE數(shù)據(jù)庫(kù)名ADDFILE[TOFILEGROUP文件組]|ADDLOGFILE|REMOVEFILE邏輯文件名|ADDFILEGROUP文件組名|REMOVEFILEGROUP文件組名|MODIFYFILE|MODIFYFILEGROUP文件組名,文件組屬性,例2.5,示例,61,刪除數(shù)據(jù)庫(kù),刪除一個(gè)數(shù)據(jù)庫(kù)會(huì)刪除該數(shù)據(jù)庫(kù)中的所有對(duì)象,從而釋放出該數(shù)據(jù)庫(kù)所占用的磁盤空間注意當(dāng)數(shù)據(jù)庫(kù)處于正在使用、正在被恢復(fù)和正在參與復(fù)制三種狀態(tài)之一時(shí),不能刪除該數(shù)據(jù)庫(kù)若要?jiǎng)h除的數(shù)據(jù)庫(kù)正在被其他用戶所使用,則可以先斷開(kāi)服務(wù)器與該用戶的連接,然后刪除該數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)中的master、model和tempdb不能被刪除,msdb雖然可以被刪除,但刪除msdb后很多服務(wù)(比如SQLServer代理服務(wù))將無(wú)法使用,因?yàn)檫@些服務(wù)在運(yùn)行時(shí)會(huì)用到msdb,62,使用企業(yè)管理器刪除數(shù)據(jù)庫(kù),,63,使用語(yǔ)句刪除數(shù)據(jù)庫(kù),,64,關(guān)于數(shù)據(jù)庫(kù)的命令小結(jié),,創(chuàng)建數(shù)據(jù)庫(kù),createdatabase,alterdatabase,dropdatabase,修改數(shù)據(jù)庫(kù),刪除數(shù)據(jù)庫(kù),sp_helpdb,查看數(shù)據(jù)庫(kù)定義信息,sp_dboption,查看/修改數(shù)據(jù)庫(kù)設(shè)置,65,數(shù)據(jù)庫(kù)與系統(tǒng)的分離,分離數(shù)據(jù)庫(kù)實(shí)際上是從SQLServer系統(tǒng)中刪除數(shù)據(jù)庫(kù)組成該數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和事務(wù)日志文件依然完好無(wú)損的保存在磁盤上注意只有固定服務(wù)器角色成員sysadmin才可執(zhí)行分離操作系統(tǒng)數(shù)據(jù)庫(kù)master、model和tempdb數(shù)據(jù)庫(kù)無(wú)法從系統(tǒng)分離出去,若要執(zhí)行分離操作,必須先單擊“清除”按鈕清除連接,66,將數(shù)據(jù)庫(kù)附加到系統(tǒng),使用這些數(shù)據(jù)文件和事務(wù)日志文件可以將數(shù)據(jù)庫(kù)再附加到任何SQLServer系統(tǒng)中,而且數(shù)據(jù)庫(kù)在新系統(tǒng)中的使用狀態(tài)與它分離時(shí)的狀態(tài)完全相同附加數(shù)據(jù)庫(kù)只需要指定要附加到SQLServer系統(tǒng)的數(shù)據(jù)庫(kù)主數(shù)據(jù)文件的路徑與文件名,67,語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分離與附加,分離sp_detach_db數(shù)據(jù)庫(kù)名稱[,TRUE|FALSE]附加sp_attach_db數(shù)據(jù)庫(kù)名稱,數(shù)據(jù)庫(kù)文件名[,…16]dbname必須是唯一的filename數(shù)據(jù)庫(kù)文件的物理名稱,包括路徑最多可以指定16個(gè)文件名文件名列表至少必須包括主文件可使用此方法對(duì)現(xiàn)有數(shù)據(jù)庫(kù)制作多個(gè)副本,也可以實(shí)現(xiàn)在不同SQLServer服務(wù)器之間移動(dòng)傳遞數(shù)據(jù)的目的,68,第02章總結(jié),掌握概念數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)文件數(shù)據(jù)庫(kù)對(duì)象文件組系統(tǒng)數(shù)據(jù)庫(kù)應(yīng)用技能用戶數(shù)據(jù)庫(kù)的創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù)信息的查看、數(shù)據(jù)庫(kù)參數(shù)配置數(shù)據(jù)庫(kù)與系統(tǒng)的分離與附加,課后作業(yè),69,例2.1,用語(yǔ)句創(chuàng)建一個(gè)名為students的數(shù)據(jù)庫(kù),包含一個(gè)主數(shù)據(jù)文件和一個(gè)事務(wù)日志文件。這兩個(gè)文件都放在‘d:\data’目錄中主數(shù)據(jù)文件邏輯文件名為‘studentdata’,物理文件名為‘student_data.mdf’,初始容量大小為10MB,最大容量為50MB,每次增長(zhǎng)量為25%事務(wù)日志文件的邏輯文件名為‘studentlog’,物理文件名為‘student_log.ldf’,初始容量大小為10MB,最大容量為不受限制,每次增長(zhǎng)量為2MB,CREATEDATABASEstudentsONPRIMARY(NAME=studentdata,FILENAME=d:\data\student_data.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=25%)LOGON(NAME=studentlog,FILENAME=d:\data\student_log.ldf,SIZE=10MB,MAXSIZE=unlimited,FILEGROWTH=2MB),70,示例,用T-SQL語(yǔ)句在C:\DATA\與D:\DATA\文件夾中創(chuàng)建一個(gè)教師信息數(shù)據(jù)庫(kù)teacher,該數(shù)據(jù)庫(kù)包含一個(gè)主數(shù)據(jù)文件邏輯名‘teacherdata1’,物理名‘C:\DATA\tdata1.mdf’,初始容量1MB,最大容量10MB,每次增長(zhǎng)量為15%一個(gè)輔助數(shù)據(jù)文件邏輯名‘teacherdata2’物理名‘D:\DATA\tdata2.ndf’,初始容量2MB,最大容量15MB,每次增長(zhǎng)量為2MB兩個(gè)數(shù)據(jù)文件不單獨(dú)創(chuàng)建文件組,即使用默認(rèn)的PRIMARY組一個(gè)事務(wù)日志文件邏輯名‘teacherlog’物理名‘D:\DATA\teacherlog.ldf’,初始容量512KB,最大容量不受限制,每次增長(zhǎng)量為512KB,CREATEDATABASEteacherONPRIMARY(NAME=teacherdata1,FILENAME=C:\DATA\tdata1.mdf,SIZE=1,MAXSIZE=10,FILEGROWTH=15%),(NAME=teacherdata2,FILENAME=D:\DATA\tdata2.mdf,SIZE=2,MAXSIZE=15,FILEGROWTH=2)LOGON(NAME=teacherlog,FILENAME=D:\DATA\teacherlog.ldf,SIZE=512kb,FILEGROWTH=512kb),SQL語(yǔ)句在書寫時(shí)不區(qū)分大小寫,一條語(yǔ)句可以寫在多行上,但不能將多條語(yǔ)句寫在一行上。,71,文件格式,(NAME=數(shù)據(jù)文件的邏輯名稱[,FILENAME=‘?dāng)?shù)據(jù)文件的物理名稱’][,SIZE=數(shù)據(jù)文件的初始大小][,MAXSIZE=數(shù)據(jù)文件的最大容量|unlimited][,FILEGROWTH=數(shù)據(jù)文件的增長(zhǎng)量]),在修改文件的“分配的空間”項(xiàng)時(shí),所改動(dòng)的值必須大于現(xiàn)有的空間值文件的物理文件名不允許進(jìn)行修改,所以請(qǐng)勿指定物理名稱,72,例2.5,用語(yǔ)句向students數(shù)據(jù)庫(kù)添加一個(gè)名為studentsfilegroup的文件組,并將student_dataadd.ndf添加到此文件組中,--添加文件組ALTERDATABASEstudentsADDFILEGROUPstudentsfilegroupgo--添加數(shù)據(jù)文件,并將其加入新文件組ALTERDATABASEstudentsADDFILE(NAME=studentdataadd,FILENAME=d:\data\student_dataadd.ndf)TOFILEGROUPstudentsfilegroupgo--查看數(shù)據(jù)庫(kù)信息executesp_helpdbstudentsgo,73,示例,修改students數(shù)據(jù)庫(kù)原有主數(shù)據(jù)文件studentsdata初始大小改為2MB按2MB自動(dòng)增長(zhǎng)最大容量20MB,ALTERDATABASEstudentsMODIFYFILE(NAME=studentsdata,SIZE=2,MAXSIZE=20,FILEGROWTH=2),74,,CREATEDATABASEtestONPRIMARY(NAME=testdat1,FILENAME=d:\data\testdat1.mdf,SIZE=1,MAXSIZE=10,FILEGROWTH=1),(NAME=testdat2,FILENAME=d:\data\testdat2.ndf,SIZE=1,MAXSIZE=10,FILEGROWTH=1)LOGON(NAME=testlog1,FILENAME=d:\data\testlog1.ldf,SIZE=512KB,MAXSIZE=5,FILEGROWTH=512KB),2.8,第03章表及其應(yīng)用,3.1表概述3.2創(chuàng)建表3.3查看表信息3.4修改表3.5刪除表,總結(jié),76,表的概念,表是相關(guān)聯(lián)的行列集合表是按照行列結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的描述一個(gè)個(gè)體屬性的總和稱為一條記錄描述個(gè)體的一個(gè)屬性稱為一個(gè)字段,也稱數(shù)據(jù)項(xiàng)結(jié)構(gòu)和數(shù)據(jù)記錄是表的兩大組成部分,77,表的示例,,,,行/記錄,列/屬性/字段/數(shù)據(jù)項(xiàng),78,創(chuàng)建表的限制,每個(gè)數(shù)據(jù)庫(kù)里最多有20億個(gè)表每個(gè)表上最多可創(chuàng)建一個(gè)聚集索引,249個(gè)非聚集索引每個(gè)表最多可以設(shè)置1,024個(gè)字段每條記錄最多占8,060B,但不包括text字段和image字段,79,創(chuàng)建表前的考慮,數(shù)據(jù)庫(kù)中要存放哪些數(shù)據(jù),這些數(shù)據(jù)如何劃分到表中確定每個(gè)表需要哪些列,即決定表所包含的屬性有哪些,80,數(shù)據(jù)類型,數(shù)據(jù)類型是用來(lái)表現(xiàn)數(shù)據(jù)的特性的,表中的每列數(shù)據(jù)必須是同一種類型的數(shù)據(jù),列的數(shù)據(jù)類型確定了該列數(shù)據(jù)的取值范圍SQLServer的數(shù)據(jù)類型包括兩類系統(tǒng)定義的數(shù)據(jù)類型用戶定義的數(shù)據(jù)類型(第07章介紹),81,數(shù)據(jù)的完整性,,數(shù)據(jù)完整性,正確性,+,一致性,=,表中所有行唯一,即所有記錄都是可以區(qū)分的,表中指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)據(jù)范圍,有關(guān)聯(lián)的兩個(gè)或兩個(gè)以上表之間數(shù)據(jù)的一致性??梢酝ㄟ^(guò)建立主鍵和外鍵約束來(lái)實(shí)現(xiàn)。,82,約束,對(duì)輸入數(shù)據(jù)取值范圍和格式的限制稱為約束約束是用來(lái)保證數(shù)據(jù)完整性的六種約束主鍵約束(PRIMARYKEY)唯一約束(UNIQUE)外鍵約束(FOREIGNKEY)檢查約束(CHECK)默認(rèn)值約束(DEFAULT)空值約束(NULL),83,數(shù)據(jù)庫(kù)完整性的實(shí)現(xiàn),84,創(chuàng)建表,每個(gè)表必須有一個(gè)主鍵字段同一表中不允許重名字段每個(gè)表必須描述的是一個(gè)實(shí)體的信息字段必須符合命名規(guī)則表必須是符合數(shù)據(jù)規(guī)范化要求的,85,使用企業(yè)管理器創(chuàng)建表,,,,,,,,86,customers表,87,goods表,88,orders表,89,設(shè)置約束,主鍵約束唯一約束外鍵約束檢查約束,90,使用語(yǔ)句創(chuàng)建表,CREATETABLE表名({列名列屬性列約束}[,…n]|字段名AS計(jì)算列),CREATETABLECategories(CategoryIdintIDENTITY(1,1)primarykey,CategoryNamenvarchar(15)NOTNULL,DescriptionntextNULL,PictureimageNULL),例3.1,例3.2,例3.3,表級(jí)約束,練習(xí),91,查看表信息,查看表定義信息即查看系統(tǒng)表sysobjects和syscolumns中記錄查看方法通過(guò)企業(yè)管理器的“表屬性”窗口[execute]sp_help[表名]查看表約束通過(guò)企業(yè)管理器的“表屬性”窗口查看表中的數(shù)據(jù)查看表之間的依賴關(guān)系使用‘企業(yè)管理器’:‘所有任務(wù)’→‘顯示相關(guān)性’,92,修改表,ALTERTABLE表名ADD列名數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NOTNULL]|ALTERCOLUMN列名數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NOTNULL]|DROPCOLUMN字段名[,…n]|ADDCONSTRAINT約束定義[,…n]|DROPCONSTRAINT約束名[,…n]|NOCHECKCONSTRAINT約束名|CHECKCONSTRAINT約束名,93,使用ADD子句添加列,ALTERTABLE表名ADD列名數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NOTNULL]若向已存在記錄的表中添加列,新添加的列可以設(shè)置允許為空;若不允許為空,則需指定默認(rèn)值,例3.4,94,使用ADDCONSTRAINT子句添加約束,ALTERTABLE表名ADDCONSTRAINT約束定義[,……],例3.5,級(jí)聯(lián)引用完整性,95,使用DROPCONSTRAINT子句刪除約束,ALTERTABLE表名DROPCONSTRAINT約束名[,……],例3.6,96,使用DROPCOLUMN子句刪除列,ALTERTABLE表名DROPCOLUMN字段名[,……]在刪除列時(shí),必須先刪除基于該列的索引和約束后,才能刪除該列,例3.7,97,使用ALTERCOLUMN子句修改列屬性,ALTERTABLE表名ALTERCOLUMN列名數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NOTNULL]在默認(rèn)狀態(tài)下,列可以被設(shè)置為空值,將一個(gè)原來(lái)允許為空值的列改為不允許為空值時(shí),必須滿足列中沒(méi)有存放空值的記錄以及在列上沒(méi)有創(chuàng)建索引,例3.8,98,使用NOCHECKCONSTRAINT子句使約束無(wú)效,ALTERTABLE表名NOCHECKCONSTRAINT約束名|CHECKCONSTRAINT約束名該子句只對(duì)外鍵約束和檢查約束起作用,例3.9,99,刪除表,DROPTABLE表名[,…n]droptable語(yǔ)句不能刪除系統(tǒng)表如果一個(gè)表被其他表通過(guò)外鍵約束引用,那么必須先刪除設(shè)置了外鍵約束的表,或刪除其外鍵約束,100,第03章總結(jié),掌握概念表數(shù)據(jù)類型數(shù)據(jù)完整性約束應(yīng)用企業(yè)管理器操作創(chuàng)建表、修改表結(jié)構(gòu)、刪除表查看表數(shù)據(jù)查看表約束命令CreatetableAltertableDroptable,課后作業(yè),上機(jī)作業(yè),101,系統(tǒng)定義的數(shù)據(jù)類型,,統(tǒng)一字符型,精確小數(shù),近似數(shù)值,char(2)nchar(2),decimal(5,2),0/1以外的任何值都會(huì)作為1來(lái)處理,字符型需用引號(hào)引起來(lái),需用引號(hào)引起來(lái),存儲(chǔ)圖像等數(shù)據(jù),帶有4位小數(shù)的decimal類型的數(shù)據(jù),102,主鍵約束,每個(gè)表僅能定義一個(gè)主鍵主鍵值是表中記錄的標(biāo)識(shí)主鍵列可以有一個(gè)或多個(gè)列組合而成主鍵值不可為空(null)主鍵值不能重復(fù)image和text類型的列不能做主鍵,103,唯一約束,是一列或幾列的組合用于保證非主鍵的不可重復(fù)字段可以為表定義多個(gè)唯一約束只能為表定義一個(gè)主鍵約束該列允許為空值唯一約束可以定義在允許空值的列上主鍵約束只能定義在不允許為空值的列上唯一約束不改變字段的物理存儲(chǔ)位置記錄按主鍵值的指定順序存儲(chǔ),104,外鍵約束,設(shè)置外鍵約束字段的表稱為子表,它所引用的表稱為父表外鍵可以是單一字段,也可以是多個(gè)字段的組合外鍵所引用父表中的字段必須是創(chuàng)建了主鍵約束或唯一約束的列子表中外鍵字段添加的新數(shù)據(jù),必須在父表存在子表中引用父表數(shù)據(jù)的記錄未刪除,父表中被引用數(shù)據(jù)不能被刪除,105,外鍵約束示例,,,,,子表,記錄,如果數(shù)據(jù)項(xiàng)不在父表中,添加,父表,,,如果導(dǎo)致子表產(chǎn)生孤立記錄,刪除,,106,檢查約束,用指定的條件檢查限制輸入數(shù)據(jù)的取值范圍是否正確用于保證數(shù)據(jù)的參照完整性和域完整性如:成績(jī)必須>0,107,默認(rèn)值約束,默認(rèn)值約束是給某個(gè)字段綁定一個(gè)默認(rèn)的初始值輸入記錄時(shí)若沒(méi)有給出該字段的數(shù)據(jù),則自動(dòng)填入默認(rèn)值以保證數(shù)據(jù)的域完整性對(duì)設(shè)置了默認(rèn)值約束的字段若輸入數(shù)據(jù)時(shí)則以輸入的數(shù)據(jù)為準(zhǔn)可為常量、內(nèi)置函數(shù)或表達(dá)式,108,空值約束,空值NULL是不知道或不能確定的特殊數(shù)據(jù)不等同于數(shù)值0和字符的空格空值約束就是設(shè)置某個(gè)字段是否允許為空用以保證數(shù)據(jù)的實(shí)體完整性和域完整性,109,數(shù)據(jù)規(guī)范化,從關(guān)系型數(shù)據(jù)庫(kù)的表中除去冗余數(shù)據(jù)的過(guò)程規(guī)范化是得到高效的關(guān)系型數(shù)據(jù)庫(kù)表的邏輯結(jié)構(gòu)最好和最容易的方法規(guī)范化數(shù)據(jù)時(shí),應(yīng)執(zhí)行以下操作將數(shù)據(jù)庫(kù)的結(jié)構(gòu)精簡(jiǎn)為最簡(jiǎn)單的形式從表中刪除冗余列標(biāo)識(shí)所有依賴于其他數(shù)據(jù)的數(shù)據(jù),110,范式,構(gòu)造數(shù)據(jù)庫(kù)必須遵循一定的規(guī)則,在關(guān)系數(shù)據(jù)庫(kù)中,這種規(guī)則就是范式公認(rèn)的規(guī)范化等級(jí)有五種1NF2NF3NF等只要符合第三范式的數(shù)據(jù)就可以稱為完全規(guī)范化的數(shù)據(jù),111,1NF,所有屬性必須只有一個(gè)值修正方法示例:運(yùn)動(dòng)隊(duì)(標(biāo)識(shí)、隊(duì)名、隊(duì)員),112,2NF,任何非主屬性都必須依賴于完整的主屬性特別適用于復(fù)合主屬性的情況修正方法示例:產(chǎn)品供應(yīng)情況(供應(yīng)商編號(hào)、產(chǎn)品編號(hào)、購(gòu)買價(jià)格、供應(yīng)商名稱),113,3NF,非主屬性不能依賴于另一非主屬性修正方法示例:城市(城市標(biāo)識(shí)、城市名稱、所在省份、省長(zhǎng)姓名),114,列屬性,數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NOTNULL][IDENTITY(初始值,步長(zhǎng)值)],115,列約束,[CONSTRAINT約束名]PRIMARYKEY[(列名)][CONSTRAINT約束名]UNIQUE[(列名)][CONSTRAINT約束名][FOREIGNKEY[(外鍵列)]]REFERENCES引用表名(引用列)[ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][CONSTRAINT約束名]CHECK(檢查表達(dá)式)[CONSTRAINT約束名]DEFAULT默認(rèn)值,116,列約束說(shuō)明,約束名為以后修改管理時(shí)使用,省略為系統(tǒng)默認(rèn)的約束名字段約束也可以在創(chuàng)建表結(jié)構(gòu)以后另外單獨(dú)設(shè)置定義字段時(shí)同時(shí)定義所綁定的約束時(shí),可以省略列名,117,計(jì)算列示例,createtableorders1(訂單號(hào)intidentity(1,1)primarykey,貨品名稱varchar(20)notnullreferencesgoods(貨品名稱),客戶編號(hào)intforeignkeyreferencescustomers(客戶編號(hào)),數(shù)量intnotnullcheck(數(shù)量>0),價(jià)格money,總金額as數(shù)量*價(jià)格,訂貨日期datetimedefaultgetdate()),118,例3.1,用語(yǔ)句創(chuàng)建customers表,記錄客戶的基本信息表中包含如下內(nèi)容:客戶編號(hào)、姓名、地址、電話和出生日期設(shè)置客戶編號(hào)字段為主鍵約束,電話字段為唯一約束,姓名字段不能為空,CREATETABLEcustomers(客戶編號(hào)intPRIMARYKEY,姓名varchar(20)NOTNULL,地址varchar(50),電話varchar(20)UNIQUE,出生日期datetime),119,例3.2,用語(yǔ)句創(chuàng)建goods表,記錄貨品的基本信息表中包含如下內(nèi)容:貨品名稱、庫(kù)存量、供應(yīng)商、狀態(tài)和價(jià)格設(shè)置貨品名稱字段為主鍵約束設(shè)置狀態(tài)字段為bit類型,CREATETABLEgoods(貨品名稱varchar(20)PRIMARYKEY,庫(kù)存量int,供應(yīng)商varchar(50),狀態(tài)bitDEFAULT0,價(jià)格money),120,例3.3,用語(yǔ)句創(chuàng)建orders表,記錄客戶訂購(gòu)貨品的訂單信息表中包含內(nèi)容:訂單號(hào)、貨品名稱、客戶編號(hào)、數(shù)量、總金額和訂貨日期設(shè)置訂單號(hào)字段為自動(dòng)編號(hào),初始值為1,遞增量為1,同時(shí)設(shè)置為主鍵客戶編號(hào)字段為外鍵約束數(shù)量字段檢查約束為數(shù)量大于0,同時(shí)不能為空訂貨日期默認(rèn)值,為系統(tǒng)日期,CREATETABLEorders(訂單號(hào)intIDENTITY(1,1)PRIMARYKEY,貨品名稱varchar(20)NOTNULLREFERENCESgoods(貨品名稱),客戶編號(hào)intFOREIGNKEYREFERENCEScustomers(客戶編號(hào)),數(shù)量intNOTNULLCHECK(數(shù)量>0),總金額money,訂貨日期datetimeDEFAULTgetdate()),121,約束的兩種定義方式,列級(jí)約束列約束內(nèi)嵌在列的聲明中定義,作為列定義的一部分只作用于此列本身放在列名和數(shù)據(jù)類型之后的位置,即逗號(hào)之前表級(jí)約束表級(jí)約束作為表定義的一部分,可以作用于多個(gè)列,且必須將多列約束定義為單獨(dú)的表元素作為獨(dú)立的由逗號(hào)分隔的語(yǔ)句數(shù)據(jù)庫(kù)服務(wù)器以同樣的方式處理列級(jí)和表級(jí)約束,涉及到多列的約束必須作為表級(jí)約束處理,122,列級(jí)約束和表級(jí)約束,CREATETABLEorders(訂單號(hào)intIDENTITY(1,1),貨品名稱varchar(20)NOTNULLREFERENCESgoods(貨品名稱),客戶編號(hào)intFOREIGNKEYREFERENCEScustomers(客戶編號(hào)),數(shù)量intNOTNULLCHECK(數(shù)量>0),總金額money,訂貨日期datetimeDEFAULTgetdate(),CONSTRAINTpk_ordersPRIMARYKEY(訂單號(hào))),123,圖書信息管理數(shù)據(jù)庫(kù),,124,創(chuàng)建借閱信息表,Createtable借閱信息表(圖書編號(hào)char(10)notnullforeignkeyreferences圖書信息表(圖書編號(hào)),讀者編號(hào)char(8)notnullreferences讀者信息表(讀者編號(hào),借閱時(shí)間datetimeconstraintdf_datedefaultgetdate(),歸還時(shí)間datetimenull,是否超期bitdefault0,超期罰款moneynull,constraintpk_jieyueprimarykey(圖書編號(hào),讀者編號(hào))),列級(jí)約束,表級(jí)約束,125,設(shè)置主鍵約束,,,,126,設(shè)置唯一約束,,127,設(shè)置外鍵約束,,,級(jí)聯(lián)引用完整性,128,設(shè)置檢查約束,,129,例3.4,向customers表中添加“電子郵件”列,其數(shù)據(jù)類型為varchar,長(zhǎng)度為50,不允許空,USEmarketALTERTABLEcustomersADD電子郵件varchar(50)NOTNULLDEFAULT‘’,130,例3.5,將customers表中“電子郵件”列的默認(rèn)值設(shè)置為cqdx@,USEmarketALTERTABLEcustomersADDCONSTRAINTdef_eDEFAULT‘cqdx@’FOR電子郵件,,131,DEFAULT約束,132,CHECK約束,133,PRIMARYKEY約束,134,UNIQUE約束,135,FOREIGNKEY約束,136,級(jí)聯(lián)引用完整性,可以在定義FOREIGNKEY約束時(shí)的REFERENCES子句中使用ONDELETE和ONUPDATE子句,這些子句用于指定CASCADE或NOACTION選項(xiàng)CASCADE選項(xiàng)允許對(duì)已定義UNIQUE或PRIMARYKEY約束的列值進(jìn)行任何更改,列值會(huì)自動(dòng)把這些更改傳送給外鍵值NOACTION(默認(rèn)選項(xiàng))選項(xiàng)則限制任何試圖刪除或更新由其他表的外鍵引用的關(guān)鍵字的操作,137,級(jí)聯(lián)引用完整性示例,重新創(chuàng)建orders表當(dāng)customers表的客戶編號(hào)改變時(shí),自動(dòng)修改orders表中記錄的客戶編號(hào),但不允許刪除客戶當(dāng)goods表中的貨品刪除時(shí),自動(dòng)刪除orders表中對(duì)應(yīng)貨品的訂貨記錄,但不允許修改貨品名稱,CREATETABLEorders(訂單號(hào)intIDENTITY(1,1)PRIMARYKEY,貨品名稱varchar(20)NOTNULLREFERENCESgoods(貨品名稱)ONDELETECASCADE,客戶編號(hào)intFOREIGNKEYREFERENCEScustomers(客戶編號(hào))ONUPDATECASCADE,數(shù)量intNOTNULLCHECK(數(shù)量>0),總金額money,訂貨日期datetimeDEFAULTgetdate()),138,例3.6,刪除customers表中“電子郵件”列上創(chuàng)建的默認(rèn)值約束def_e,USEmarketALTERTABLEcustomersDROPCONSTRAINTdef_e,139,例3.7,刪除customers表中的“電子郵件”字段,USEmarketALTERTABLEcustomersDROPCOLUMN電子郵件,140,例3.8,將customers表的“電子郵件”列改為最大長(zhǎng)度為50的char型數(shù)據(jù),且允許為空值,USEmarketALTERTABLEcustomersALTERCOLUMN電子郵件char(50)NULL,141,例3.9,使customers表的“電子郵件”列創(chuàng)建的約束無(wú)效或重新生效,USEmarketALTERTABLEcustomersADDCONSTRAINTchk_eCHECK(電子郵件LIKE‘%@%’)ALTERTABLEcustomersNOCHECKCONSTRAINTchk_eALTERTABLEcustomersCHECKCONSTRAINTchk_e,142,3.93.10-0,創(chuàng)建“學(xué)生檔案”數(shù)據(jù)庫(kù),CREATEDATABASE學(xué)生檔案ONPRIMARY(NAME=studentdata,FILENAME=d:\data\studentdata.mdf,SIZE=1,MAXSIZE=5,FILEGROWTH=10%)LOGON(NAME=studentlog,FILENAME=d:\data\studentlog.ldf,SIZE=1,MAXSIZE=5,FILEGROWTH=10%),143,3.9,CREATETABLE人事表(學(xué)號(hào)INTIDENTITY(2001,1),姓名CHAR(8),性別CHAR(2),電話號(hào)碼VARCHAR(20),家庭住址VARCHAR(50))CREATETABLE成績(jī)表(學(xué)號(hào)INT,選修課程VARCHAR(20),成績(jī)DECIMAL(4,1)),144,3.10,ALTERTABLE成績(jī)表ADDCONSTRAINTfk_xuehaoFOREIGNKEY(學(xué)號(hào))REFERENCES人事表(學(xué)號(hào)),CONSTRAINTck_checkCHECK(成績(jī)>=0AND成績(jī)=0and成績(jī)>==!=!>!,>=,,!=,!>,!=100,207,例4.8,查詢goods表中庫(kù)存量不在100~500之間的貨品記錄,USEmarketSELECT*FROMgoodsWHERE庫(kù)存量NOTBETWEEN100AND500,208,例4.9,查詢customers表中姓名是‘王蘭’、‘李紅’的客戶信息,USEmarketSELECT*FROMcustomersWHERE姓名IN(‘王蘭’,‘李紅’),209,例4.10,查詢customers表中姓李的客戶信息,USEmarketSELECT*FROMcustomersWHERE姓名LIKE李%,210,例4.11,查詢goods表中不知道供應(yīng)商名稱的貨品信息,即供應(yīng)商列為空值,USEmarketSELECT*FROMgoodsWHERE供應(yīng)商ISNULL,211,例4.12,用兩種方法查詢goods表中庫(kù)存量在100~1000之間的貨品記錄,USEmarketSELECT*FROMgoodsWHERE庫(kù)存量BETWEEN100AND1000SELECT*FROMgoodsWHERE庫(kù)存量>=100AND庫(kù)存量=30,,218,例4.17,統(tǒng)計(jì)orders表各種貨品訂貨總數(shù)量,并給出明細(xì)表,USEmarketSELECT*FROMordersORDERBY貨品名稱COMPUTESUM(數(shù)量)BY貨品名稱,219,例4.18,將customers表和orders表進(jìn)行交叉連接,觀察結(jié)果,USEmarketSELECT*FROMcustomersCROSSJOINordersSELECT*FROMcustomers,orders,220,交叉連接示例,,,USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyers,sales,221,例4.19,用內(nèi)連接方法連接customers和orders兩個(gè)表,觀察連接后的結(jié)果,SELECTc.客戶編號(hào),c.姓名,o.數(shù)量,o.總金額FROMcustomersAScINNERJOINordersASoONc.客戶編號(hào)=o.客戶編號(hào)SELECTc.客戶編號(hào),c.姓名,o.數(shù)量,o.總金額FROMcustomersASc,ordersASoWHEREc.客戶編號(hào)=o.客戶編號(hào),222,內(nèi)連接示例,,,USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyersINNERJOINsalesONbuyers.buyer_id=sales.buyer_id,223,例4.20,使用左外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量,USEmarketSELECTgoods.貨品名稱,訂貨日期,數(shù)量FROMgoodsLEFTJOINordersONgoods.貨品名稱=orders.貨品名稱,224,左外連接示例,,,USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyersLEFTOUTERJOINsalesONbuyers.buyer_id=sales.buyer_id,225,例4.21,使用右外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量,USEmarketSELECTgoods.貨品名稱,訂貨日期,數(shù)量FROMordersRIGHTJOINgoodsONgoods.貨品名稱=orders.貨品名稱,226,例4.22,使用全外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量,USEmarketSELECTgoods.貨品名稱,訂貨日期,數(shù)量FROMgoodsFULLOUTERJOINordersONgoods.貨品名稱=orders.貨品名稱,227,例4.24,查詢orders表中訂購(gòu)了兩種或兩種以上貨品的客戶編號(hào)和他所訂購(gòu)的貨品名稱,USEmarketSELECTa.客戶編號(hào),a.貨品名稱FROMordersASaJOINordersbONa.客戶編號(hào)=b.客戶編號(hào)ANDa.訂單號(hào)b.訂單號(hào),228,自連接示例,,USEjoindbSELECTa.buyer_idASbuyer1,a.prod_id,b.buyer_idASbuyer2FROMsalesASaJOINsalesASbONa.prod_id=b.prod_idWHEREa.buyer_id>b.buyer_id,,229,例4.25,從表customers中檢索出地址為上海的客戶輸出到表shangh,地址為北京的客戶輸出到beij,然后將兩表合并為一個(gè)結(jié)果集,SELECT*INTOshanghFROMcustomersWHERE地址LIKE‘上海%SELECT*INTObeijFROMcustomersWHERE地址LIKE北京%SELECT*FROMshanghUNIONSELECT*FROMbeij,230,嵌套子查詢和相關(guān)子查詢,嵌套子查詢總是最先執(zhí)行最內(nèi)層查詢相關(guān)子查詢的執(zhí)行過(guò)程依賴于值的外部查詢。相關(guān)子查詢的WHERE子句引用外部查詢的FROM子句中的表。這就是說(shuō)子查詢是以循環(huán)的方式進(jìn)行處理的——對(duì)外部查詢選擇的每行都執(zhí)行一次,231,例4.26,從goods表中檢索數(shù)據(jù),列出高于平均價(jià)格的貨品信息,SELECT*FROMgoodsWHERE價(jià)格>(SELECTAVG(價(jià)格)FROMgoods),232,例4.27,從orders表中檢索數(shù)據(jù),以查詢有訂單的客戶信息,SELECT*FROMcustomersWHERE客戶編號(hào)IN(SELECT客戶編號(hào)FROMorders),233,例4.28,從orders表中檢索數(shù)據(jù),以查詢有訂單的客戶信息,SELECT*FROMcustomersWHEREEXISTS(SELECT*FROMordersWHEREcustomers.客戶編號(hào)=orders.客戶編號(hào)),234,例4.29,用IN子句完成上例的操作,SELECT*FROMcustomersWHERE客戶編號(hào)IN(SELECT客戶編號(hào)FROMorders),235,例4.30,從customers表中檢索數(shù)據(jù),以查詢一次訂貨數(shù)量大于等于20的客戶編號(hào)和姓名,SELECTa.客戶編號(hào),a.姓名FROMcustomersaWHERE20=ALL(SELECT價(jià)格FROMgoods),237,例4.32,向orders表添加一條新記錄,給所有列提供列值,INSERTordersVALUES(book,1,10,250,1/23/2003)INSERTordersVALUES(book,1,10,250,DEFAULT)由于‘訂貨日期’設(shè)定了默認(rèn)值,所有可以使用默認(rèn)值,字符型和日期型數(shù)據(jù)需要用單引號(hào)括起來(lái),238,例4.33,創(chuàng)建一個(gè)與customers表結(jié)構(gòu)一樣的表cq,使該表中僅有重慶客戶的信息,SELECT*INTOcqFROMcustomersWHERE2=4INSERTcqSELECT*FROMcustomersWHERE地址LIKE重慶%,239,例4.34,將goods表中的庫(kù)存量大于100的貨品的定價(jià)降低10%,UPDATEgoodsSET價(jià)格=價(jià)格*0.9WHERE庫(kù)存量>=100,240,例4.35,把orders表中的“總金額”用該貨品在goods表中的“價(jià)格”與在orders表中的訂貨“數(shù)量”的乘積代替,并顯示修改后的記錄,UPDATEordersSET總金額=價(jià)格*數(shù)量FROMgoodsWHEREorders.貨品名稱=goods.貨品名稱SELECTa.貨品名稱,a.價(jià)格,b.數(shù)量,b.總金額FROMgoodsASa,ordersASbWHEREa.貨品名稱=b.貨品名稱,241,例4.36,刪除goods表中的所有記錄,DELETEgoods,242,例4.37,刪除goods表中的未知定價(jià)的記錄,DELETEgoodsWHERE價(jià)格ISNULL,243,例4.38,刪除orders表中地址為重慶的客戶訂貨記錄,DELETEordersFROMcustomersWHEREorders.客戶編號(hào)=customers.客戶編號(hào)AND地址LIKE重慶%,244,例4.39,刪除orders表中的所有訂單,TRUNCATETABLEorders,245,刪除表和刪除表數(shù)據(jù)的區(qū)別,DROPTABLE、DELETE和TRUNCATETABLE語(yǔ)句的區(qū)別DROPTABLE語(yǔ)句不僅刪除表數(shù)據(jù),還將刪除表結(jié)構(gòu)DELETE和TRUNCATETABLE語(yǔ)句只刪除表數(shù)據(jù)不含WHERE子句的DELETE語(yǔ)句的作用與TRUNCATETABLE語(yǔ)句一樣,將刪除表中所有數(shù)據(jù),但TRUNCATETABLE語(yǔ)句的執(zhí)行速度更快DELETE語(yǔ)句可通過(guò)WHERE子句實(shí)現(xiàn)部分表數(shù)據(jù)刪除,而TRUNCATETABLE語(yǔ)句不能包含WHERE子句,即不能刪除部分?jǐn)?shù)據(jù),246,學(xué)生信息管理數(shù)據(jù)庫(kù),,247,查詢條件2-1,檢索“基本信息表”中- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
19.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- SQL 電子工業(yè) 耿文蘭
鏈接地址:http://www.hcyjhs8.com/p-3272004.html