SQL Server 2000數(shù)據(jù)庫管理與開發(fā)課件_第1頁
SQL Server 2000數(shù)據(jù)庫管理與開發(fā)課件_第2頁
SQL Server 2000數(shù)據(jù)庫管理與開發(fā)課件_第3頁
SQL Server 2000數(shù)據(jù)庫管理與開發(fā)課件_第4頁
SQL Server 2000數(shù)據(jù)庫管理與開發(fā)課件_第5頁
已閱讀5頁,還剩465頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

SQLServer2000基礎(chǔ)關(guān)係資料庫基礎(chǔ)知識(shí)SQLServer2000概述SQLServer的安裝和配置SQLServer工具創(chuàng)建伺服器組和註冊(cè)伺服器1.1關(guān)係資料庫基礎(chǔ)知識(shí)1.概念模型2.資訊世界中的基本概念3.數(shù)據(jù)模型4.關(guān)係型資料庫概念

補(bǔ)充:

模型是在現(xiàn)實(shí)世界中模擬和抽象某些具體事物的工具。

在資料庫中用於抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和資訊的工具

提示:資料庫是對(duì)數(shù)據(jù)的存儲(chǔ),電腦不可能直接處理現(xiàn)實(shí)生活中的具體事物,所以人們必須事先把現(xiàn)實(shí)中的具體事物轉(zhuǎn)換成電腦能夠處理的數(shù)據(jù),而資料庫就是利用數(shù)據(jù)模型這個(gè)工具來把現(xiàn)實(shí)世界的事物抽象成為數(shù)據(jù)。模型

數(shù)據(jù)模型

現(xiàn)實(shí)世界認(rèn)識(shí)抽象資訊世界概念模型機(jī)器世界DBMS支持的數(shù)據(jù)模型1.1.1

概念模型概念模型是從現(xiàn)實(shí)世界到電腦世界的一個(gè)中間層次,是現(xiàn)實(shí)世界到資訊世界的一種抽象,它不依賴於具體的電腦系統(tǒng)。概念模型是進(jìn)行資料庫設(shè)計(jì)的有力工具,也是資料庫設(shè)計(jì)人員和用戶進(jìn)行交流的語言。1.1.2

資訊世界中的基本概念實(shí)體(Entity)

現(xiàn)實(shí)世界中客觀存在,可相互區(qū)分的事物稱為實(shí)體

。

實(shí)體可以是可觸及的對(duì)象,也可以是抽象的事件。屬性(Attribute)

實(shí)體的某一特性稱為屬性。

屬性有“型”和“值”之分,碼(Key)唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼,碼可以由一個(gè)或多個(gè)屬性組成。域

(Domain)屬性的取值範(fàn)圍稱為屬性的域。實(shí)體型(EntityType)具有相同屬性的實(shí)體具有相同的特徵和性質(zhì)。用實(shí)體名及其屬性名集合來抽象和刻畫同類實(shí)體,稱為實(shí)體型Eg:學(xué)生(學(xué)號(hào),姓名,性別,出生年月,系,入學(xué)時(shí)間)就是一個(gè)實(shí)體型。聯(lián)繫

(Relationship)現(xiàn)實(shí)世界中的事物內(nèi)部及事物之間是有聯(lián)繫的,反映在資訊世界中為實(shí)體(型)內(nèi)部的聯(lián)繫和實(shí)體(型)之間的聯(lián)繫。聯(lián)繫

兩個(gè)實(shí)體型之間的聯(lián)繫主要有一對(duì)一,一對(duì)多,多對(duì)多三種類型。(1)一對(duì)一聯(lián)繫(1:1)實(shí)體集A中的一個(gè)實(shí)體至多(也可以沒有)與實(shí)體集B中的一個(gè)實(shí)體相對(duì)應(yīng),反之亦然,則稱實(shí)體集A與實(shí)體集B

為一對(duì)一的聯(lián)繫。記作1:1。(2)一對(duì)多聯(lián)繫(1:n)實(shí)體集A中的一個(gè)實(shí)體與實(shí)體集B中的多個(gè)實(shí)體相對(duì)應(yīng),反之,實(shí)體集B中的一個(gè)實(shí)體至多與實(shí)體集A中的一個(gè)實(shí)體相對(duì)應(yīng)。記作1:n。

(3)多對(duì)多聯(lián)繫(m:n)實(shí)體集A中的一個(gè)實(shí)體與實(shí)體集B中的多個(gè)實(shí)體相對(duì)應(yīng),反之,實(shí)體集B中的一個(gè)實(shí)體與實(shí)體集A中的多個(gè)實(shí)體相對(duì)應(yīng)。記作(m:n)。可以用圖形來表示兩個(gè)實(shí)體型之間的這三類聯(lián)繫

(1)(2)(3)不同實(shí)體集實(shí)體之間的聯(lián)繫AAABBB聯(lián)繫三個(gè)實(shí)體型間的聯(lián)繫:

一對(duì)一;一對(duì)多;多對(duì)多班級(jí)管理正班長班主任111一對(duì)一課程講授教師參考書1np一對(duì)多供應(yīng)商專案零件提供多對(duì)多nmp1.1.3數(shù)據(jù)模型

直接面向資料庫的邏輯結(jié)構(gòu),它是對(duì)現(xiàn)實(shí)世界的第二層抽象。直接與資料庫管理系統(tǒng)有關(guān),稱為邏輯數(shù)據(jù)模型,也稱為結(jié)構(gòu)數(shù)據(jù)模型。例如:網(wǎng)狀、層次、關(guān)係模型,它是根據(jù)數(shù)據(jù)存儲(chǔ)需求的不同來區(qū)分的,主要用於資料庫管理系統(tǒng)的實(shí)現(xiàn)。常用的數(shù)據(jù)模型

層次模型網(wǎng)狀模型關(guān)係模型非關(guān)係模型

1.層次模型特點(diǎn):1、有且只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),稱根結(jié)點(diǎn)。2、根以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。優(yōu)點(diǎn):層次分明、結(jié)構(gòu)清晰、不同層次之間關(guān)係直接簡(jiǎn)單。缺點(diǎn):節(jié)點(diǎn)間難建立橫向關(guān)係,數(shù)據(jù)可能重複出現(xiàn)。2.網(wǎng)狀模型特點(diǎn):1、允許一個(gè)以上的結(jié)點(diǎn)無雙親。2、一個(gè)結(jié)點(diǎn)可以有多於一個(gè)的雙親。優(yōu)點(diǎn):很容易地反映實(shí)體之間的關(guān)聯(lián),避免重複性。缺點(diǎn):關(guān)係錯(cuò)綜複雜,資料庫增多時(shí)很難維護(hù)。3.關(guān)係模型一個(gè)關(guān)係模型的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。關(guān)係江蘇山東北京北京山西2019181921計(jì)科資訊數(shù)學(xué)計(jì)科物理男女女男男李勇劉成王楠張力楊曉東95001950029500395004……95700籍貫?zāi)挲g系別性別姓名學(xué)號(hào)學(xué)生登記表關(guān)係名字段記錄1.1.4

關(guān)係型資料庫概念

關(guān)係型資料庫是採用了關(guān)係模型作為數(shù)據(jù)的組織方式。它是表的集合。1.表的關(guān)聯(lián)指數(shù)據(jù)庫中的數(shù)據(jù)表與數(shù)據(jù)表之間使用相應(yīng)的字段實(shí)現(xiàn)數(shù)據(jù)表的連接。表的關(guān)聯(lián):資料庫中數(shù)據(jù)表和數(shù)據(jù)表之間使用相應(yīng)的字段實(shí)現(xiàn)數(shù)據(jù)表的連接。專案編號(hào)名稱負(fù)責(zé)人客戶開始日期結(jié)束日期1SiS2103/12/0006/12/002SiS專案21104/06/0005/01/003Pet2206/17/0008/17/004Pet專案22209/01/0009/18/00編號(hào)姓名性別工資1陳朋男20002孫晴女3000編號(hào)名稱客戶負(fù)責(zé)人1SiSSim22PetPet22.主鍵和外鍵鍵:數(shù)據(jù)表中的一個(gè)字段主鍵:數(shù)據(jù)表中具有唯一型的字段,主鍵不能重複。外鍵:一個(gè)數(shù)據(jù)表將使用該數(shù)據(jù)表中的外鍵連接到其他的數(shù)據(jù)表,而這個(gè)外鍵字段在其他數(shù)據(jù)表中作為主鍵字段出現(xiàn)。員工數(shù)據(jù)表員工編號(hào)員工姓名員工工資部門編號(hào)部門數(shù)據(jù)表部門編號(hào)部門名稱部門負(fù)責(zé)人部門職責(zé)“員工編號(hào)”字段“部門編號(hào)”字段“部門編號(hào)”字段數(shù)據(jù)表的主鍵和外鍵1.2SQLServer2000概述1.SQLServer發(fā)展簡(jiǎn)史2.SQLServer特點(diǎn)1.2.1SQLServer發(fā)展簡(jiǎn)史SQLServer是由Microsoft開發(fā)和推廣的關(guān)係資料庫管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,並於1988年推出了第一個(gè)OS/2版本。SQLServer近年來不斷更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用戶見面;SQLServer2000是Microsoft公司於2000年推出的最新版本。1.2.2SQLServer特點(diǎn)1.真正的客戶機(jī)/伺服器體系結(jié)構(gòu)。2.圖形化用戶介面,使系統(tǒng)管理和數(shù)據(jù)庫管理更加直觀、簡(jiǎn)單。3.豐富的編程介面工具,為用戶進(jìn)行程式設(shè)計(jì)提供了更大的選擇餘地。4.SQLServer與WindowsNT完全集成,利用了NT的許多功能,如發(fā)送和接受消息,管理登錄安全性等。5.具有很好的伸縮性,可跨越從運(yùn)行Windows95/98的膝上型電腦到運(yùn)行Windows2000的大型多處理器等多種平臺(tái)使用。6.對(duì)Web技術(shù)的支持,使用戶能夠很容易地將資料庫中的數(shù)據(jù)發(fā)佈到Web頁面上。7.SQLServer提供數(shù)據(jù)倉庫功能,這個(gè)功能只在Oracle和其他更昂貴的DBMS中才有。1.3SQLServer的安裝和配置1.SQLServer常見版本2.SQLServer環(huán)境需求3.SQLServer2000的安裝4.SQLServer系統(tǒng)資料庫簡(jiǎn)介1.3.1SQLServer2000常見的版本標(biāo)準(zhǔn)版(StandardEdition)企業(yè)版(EnterpriseEdition)個(gè)人版(PersonalEdition)開發(fā)版(DeveloperEdition)

SQLServer2000版本操作系統(tǒng)企業(yè)版標(biāo)準(zhǔn)版?zhèn)€人版開發(fā)版Windows98NNYNWindows2000ProfessionalNNYYWindows2000ServerYYYYWindows2000AdvancedServerYYYYWindowsNTServerYYYYWindowsXPNNYY表1-1:1.3.2SQLServer環(huán)境需求1.安裝、運(yùn)行SQLServer2000的硬體需求2.安裝、運(yùn)行SQLServer2000的軟體需求1.硬體需求(1)電腦

Inter及其相容電腦,Pentium166Mz或者更高處理器或DECAlpha和其相容系統(tǒng)。(2)記憶體(RAM)最少64MB記憶體,建議使用128M或更多的記憶體。(3)硬碟空間完全安裝(Full)需要180MB的空間,典型安裝(Typical)需要170MB的空間,最小安裝(Minimum)需要65MB的空間。支持不同的SQLServer2000版本的操作系統(tǒng)見表(表1-1)。SQLServer2000所有版本的最低要求:WindowsNT4.0ServicePackInternet軟體:MicrosoftInternetExplorer5.0,但不必是默認(rèn)流覽器。網(wǎng)路軟體2.軟體需求1.3.3SQLServer2000的安裝SQLServer2000的安裝過程與其它MicrosoftWindows系列產(chǎn)品類似。用戶可根據(jù)嚮導(dǎo)提示,選擇需要的選項(xiàng)一步一步地完成。1.3.4SQLServer系統(tǒng)資料庫簡(jiǎn)介

SQLServer2000有6個(gè)系統(tǒng)資料庫1.Master資料庫是SQLServer系統(tǒng)最重要的數(shù)據(jù)庫,它記錄了SQLServer系統(tǒng)的所有系統(tǒng)資訊。這些系統(tǒng)資訊包括所有的登錄資訊、系統(tǒng)設(shè)置資訊、SQLServer的初始化資訊和其他系統(tǒng)資料庫及用戶資料庫的相關(guān)資訊。2.Tempdb是一個(gè)臨時(shí)資料庫,它為所有的臨時(shí)表、臨時(shí)存儲(chǔ)過程及其它臨時(shí)操作提供存儲(chǔ)空間。3.Model資料庫是所有用戶數(shù)據(jù)庫和Tempdb資料庫的範(fàn)本資料庫,它含有Master資料庫所有系統(tǒng)表的子集,這些系統(tǒng)資料庫是每個(gè)用戶定義資料庫需要的。4.Msdb資料庫是代理服務(wù)資料庫,為其警報(bào)、任務(wù)調(diào)度和記錄操作員的操作提供存儲(chǔ)空間。5.Pubs和Northwind資料庫是兩個(gè)實(shí)例資料庫,它們可以作為SQLServer的學(xué)習(xí)工具。

1.4SQLServer工具和實(shí)用程式

1.服務(wù)管理器

2.企業(yè)管理器

3.查詢分析器

4.聯(lián)機(jī)幫助叢書1.4.1服務(wù)管理器(ServiceManager)

SQLServer服務(wù)管理器是在伺服器端實(shí)際工作時(shí)最有用的實(shí)用程式。服務(wù)管理器用來啟動(dòng)、暫停、繼續(xù)和停止資料庫伺服器的即時(shí)服務(wù)。服務(wù)包括:SQLServer、SQLServerAgent、MSDTC(MicrosoftDistributedTransactionCoordinator,微軟分佈式事務(wù)協(xié)調(diào)器)和Microsoftsearch服務(wù)。

SQLServer服務(wù)管理器(ServiceManager)介面設(shè)置是否在開機(jī)時(shí)自動(dòng)啟動(dòng)服務(wù)注意:在停止SQLServer服務(wù)之前,最好先暫停SQLServer服務(wù)。1.4.2企業(yè)管理器企業(yè)管理器是MicrosoftSQLServer程式組中的程式之一,也是最重要的一個(gè)管理工具。企業(yè)管理器不僅能夠配置系統(tǒng)環(huán)境和管理SQLServer,而且由於它能夠以層疊列表的形式來顯示所有的SQLServer對(duì)象,因而所有SQLServer對(duì)象的建立與管理都可以通過它來完成。

SQLServer企業(yè)管理器(EnterpriseManager)介面1.4.3查詢分析器(QueryAnalyzer)

用於輸入和執(zhí)行Transaction-SQL語句,並且迅速查看這些語句的結(jié)果,以分析和處理資料庫中的數(shù)據(jù)。這是一個(gè)非常實(shí)用的工具,對(duì)掌握SQL語言,深入理解SQLServer的管理工作有很大幫助。1.4.4聯(lián)機(jī)幫助叢書(BooksOnline)SQLServer2000提供了大量的聯(lián)機(jī)文檔,它具有索引和全文搜索能力,可根據(jù)關(guān)鍵字來快速查找用戶所需資訊。1.5創(chuàng)建伺服器組和註冊(cè)伺服器1.創(chuàng)建伺服器組2.1資料庫的體系結(jié)構(gòu)1.客戶機(jī)/伺服器體系結(jié)構(gòu)2.資料庫的邏輯結(jié)構(gòu)3.資料庫的物理結(jié)構(gòu)2.1.1

客戶機(jī)/伺服器結(jié)構(gòu)客戶機(jī)/伺服器的兩層結(jié)構(gòu)客戶機(jī)/伺服器的三層結(jié)構(gòu)邏輯層次表示層:數(shù)據(jù)和應(yīng)用程式對(duì)用戶的表示業(yè)務(wù)層:應(yīng)用程式邏輯和業(yè)務(wù)規(guī)則數(shù)據(jù)層:資料庫定義,數(shù)據(jù)完整性邏輯,存儲(chǔ)過程,以及其他相關(guān)的數(shù)據(jù)操作應(yīng)用程式架構(gòu)智能伺服器(2層)智能客戶端(2層)N層InternetInternetN層智能客戶端(2層)智能伺服器(2層)表示業(yè)務(wù)數(shù)據(jù)流覽器客戶端表示業(yè)務(wù)數(shù)據(jù)表示業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)表示

胖伺服器

胖客戶機(jī)2.1.2

資料庫的邏輯結(jié)構(gòu)所謂邏輯結(jié)構(gòu)是指數(shù)據(jù)庫是由哪些性質(zhì)的資訊所組成的。

資料庫的對(duì)象:1.表2.數(shù)據(jù)類型3.約束4.默認(rèn)值5.規(guī)則6.索引7.視圖8.用戶自定義函數(shù)9.存儲(chǔ)過程10.觸發(fā)器

2.1.3資料庫的物理結(jié)構(gòu)所謂物理結(jié)構(gòu)是指數(shù)據(jù)庫檔是如何在電腦磁片上存儲(chǔ)的。在SQLServer2000中,數(shù)據(jù)存儲(chǔ)在頁中,頁是數(shù)據(jù)存儲(chǔ)的最小單位,每一頁可以存儲(chǔ)8K位元組的數(shù)據(jù)。8個(gè)連續(xù)的頁組成一個(gè)擴(kuò)展盤區(qū),它是存放表和索引的基本單元。資料庫數(shù)據(jù)存儲(chǔ)方式擴(kuò)展盤區(qū)

(8個(gè)連續(xù)的

8KB頁)頁(8KB)表,索引數(shù)據(jù)每行大小最多8

060位元組數(shù)據(jù)(檔)

.mdf或.ndf日誌(檔)

.Idf

擴(kuò)展盤區(qū)類型統(tǒng)一擴(kuò)展盤區(qū)空閒空間混合擴(kuò)展盤區(qū)擴(kuò)展盤區(qū)的類型混合擴(kuò)展盤區(qū):包含2個(gè)或多個(gè)對(duì)象的頁的擴(kuò)展盤區(qū)稱為“混合擴(kuò)展盤區(qū)”。每張表起始於一個(gè)混合擴(kuò)展盤區(qū)。主要為跟蹤空間的頁及包含小對(duì)象的頁使用混合擴(kuò)展盤區(qū)統(tǒng)一擴(kuò)展盤區(qū):將所有八頁分配給單個(gè)對(duì)象的擴(kuò)展盤區(qū)稱為“統(tǒng)一擴(kuò)展盤區(qū)”。在表或索引需要超過64KB空間時(shí)使用2.2

檔和文件組1.檔SQLServer的檔亦稱為資料庫操作系統(tǒng)檔,每一個(gè)資料庫都對(duì)應(yīng)於兩個(gè)或多個(gè)檔,在該資料庫內(nèi)創(chuàng)建的資料庫對(duì)象(如表、視圖等)都保存在這些檔中。

資料庫操作系統(tǒng)檔分為三類:主數(shù)據(jù)檔、次要數(shù)據(jù)檔和日誌檔。主資料庫檔:存放數(shù)據(jù),每個(gè)資料庫有且僅有一個(gè)主數(shù)據(jù)檔,尾碼為.mdf。次數(shù)據(jù)庫檔:存放數(shù)據(jù),有或沒有都可,也可有多個(gè),尾碼為.ndf。事務(wù)日誌檔:存放事務(wù)日誌,每個(gè)資料庫必須有一個(gè)或多個(gè)日誌檔。注意:一個(gè)簡(jiǎn)單的資料庫可以只有一個(gè)主數(shù)據(jù)檔和一個(gè)事務(wù)日誌檔,如果資料庫大,則可以設(shè)置多個(gè)次檔,如果資料庫大則可以設(shè)置多個(gè)次數(shù)據(jù)庫檔和事務(wù)日誌檔,並將他們放在不同的磁盤上。2.資料庫檔組

檔組的概念檔組是SQLServer中一個(gè)或多個(gè)檔的命名集合,它構(gòu)成分配或用於資料庫管理的單個(gè)單元檔組的使用場(chǎng)合當(dāng)有多個(gè)磁片,希望把檔分佈在這些磁片上以提高性能檔組的類型兩種檔組:主文件組和用戶定義檔組包含主文件的檔組為主檔組用戶定義的檔組是指在首次創(chuàng)建或以後更改資料庫時(shí),用戶明確創(chuàng)建的任何檔組資料庫檔組(續(xù))指定默認(rèn)的檔組資料庫建立時(shí)的默認(rèn)檔組為主檔組未指定檔組的對(duì)象都將放到默認(rèn)檔組中調(diào)整默認(rèn)的主文件組的大小若主文件組沒有空間,就不能再往系統(tǒng)表中寫入任何資訊檔組的屬性READONLY

:指定檔組為只讀。不允許更新其中的對(duì)象。主文件組不能設(shè)置為只讀。READWRITE:可讀寫。允許更新檔組中的對(duì)象。DEFAULT:將檔組指定為默認(rèn)資料庫檔組。只能有一個(gè)資料庫檔組是默認(rèn)的。注意:如果在CREATETABLE、ALTERTABLE或者CREATEINDEX語句中沒有指定檔組,則新表及索引將在默認(rèn)檔組—中創(chuàng)建。2.3創(chuàng)建資料庫定義一個(gè)資料庫資料庫的名字資料庫的大小資料庫所在的檔定義資料庫的兩種方法SQLServer企業(yè)管理器在查詢分析器中輸入CREATEDATABASE語句使用企業(yè)管理器

一、使用控制面板根結(jié)點(diǎn)

創(chuàng)建步驟:

⑴打開企業(yè)管理器,打開結(jié)點(diǎn),選擇“資料庫”結(jié)點(diǎn)。(2)在“資料庫”節(jié)點(diǎn)上點(diǎn)擊右鍵,選擇“新建資料庫”(3)在彈出的資料庫屬性窗口中完成主要設(shè)置二、使用資料庫嚮導(dǎo)完成

定義資料庫定義資料庫例1:創(chuàng)建一個(gè)名為sales1的資料庫,數(shù)據(jù)檔的邏輯檔案名為sales1_dat,磁片檔案名為sales1_dat.mdf,初始大小為5MB,最大值為30MB,增幅為2MB;事務(wù)日誌檔的邏輯檔案名為sales1_log,磁片檔案名為sales1_log.ldf,初始大小為2MB,最大值為20MB,增幅為2%;兩個(gè)磁片檔都存儲(chǔ)在D盤SQL檔夾下。定義資料庫1、語法CREATEDATABASEdatebase_name[ON[PRIMARY][<filespec>[,...n][,<filegroup>[,...n]]][LOGON{[<filespec>[,...n]}][<filespec>::=([NAME=logical_file_name,][FILENAME='os_file_name’,][SIZE=size,][MAXSIZE=max_size,][FILEGROWTH=growth_increment])[,...n]<filegroup>::=FILEGROUPfilegroup_name<filespec>[,...n]2、關(guān)鍵字和參數(shù)說明CREATEDASEBASEdatebase_name:新資料庫的名稱。ON用於指定資料庫所需的數(shù)據(jù)檔。LOGON

用於指定資料庫的事務(wù)日誌檔。PRIMARY:指定其後定義的第一個(gè)檔是主數(shù)據(jù)檔。NAME=logical_file_name:定義操作系統(tǒng)檔的邏輯檔案名,該檔案名只在SQL語句中使用,是全局磁片檔案名的代號(hào)FILENAME=os_file_name:定義操作系統(tǒng)檔在操作系統(tǒng)中的存放路徑,以及實(shí)際檔案名。SIZE=size:定義操作系統(tǒng)檔的初始容量。MAXSIZE=max_size:設(shè)置操作系統(tǒng)檔能夠達(dá)到的最大長度。FILEGROWTH=growth_increment:定義操作系統(tǒng)檔長度不夠時(shí)每次增長的長度。單位的MB。3、語法格式說明

在SQL語法中,SQL關(guān)鍵字採用大寫字母,而小寫字母是用戶書寫SQL語句時(shí)需要替換的參數(shù)

Ⅰ、([])中的內(nèi)容表示可以省略的選項(xiàng)或參數(shù)

Ⅱ、[1…n]表示同樣的選項(xiàng)可以重複到1…n遍

Ⅲ、如果某項(xiàng)的內(nèi)容太多則需要額外說明,則在語法結(jié)束後用<>括起來,如語法中的<Filespec>而該項(xiàng)的真正語法在“::=”後面加以定義說明

Ⅳ、{}通常會(huì)與符號(hào)|連用,表示{}中的選項(xiàng)或參數(shù)必須其一,不可省略。

Ⅴ、當(dāng)[]與符號(hào)|連用時(shí),表示[]中的選項(xiàng)任選其一,不能兩者同時(shí)使用,但也可以不選例1:

創(chuàng)建一個(gè)名為sales2的資料庫,數(shù)據(jù)檔的邏輯檔案名為sales2_dat,磁片檔案名為sales2_dat.mdf,初始大小為5MB,最大值為30MB,增幅為2MB;事務(wù)日誌檔的邏輯檔案名為sales2_log,磁片檔案名為sales2_log.ldf,初始大小為2MB,最大值為20MB,增幅為2%;兩個(gè)磁片檔都存儲(chǔ)在D盤SQL檔夾下。語句CREATEDATABASEsales2ON(NAME=sales2_dat,FILENAME=’d:\SQL\sales_dat2.mdf’,SIZE=5,MAXSIZE=30,FILEGROWTH=2)LOGON(NAME=sales2_log,FILENAME=’d:\SQL\sales2_log.ldf’,SIZE=2MB,MAXSIZE=20MB,FILEGROWTH=2%)GO例2:

創(chuàng)建一個(gè)名為Report的資料庫,定義一個(gè)主文件、兩個(gè)次要檔和兩個(gè)日誌檔。其中主數(shù)據(jù)檔的邏輯檔案名為Rep1,磁片檔案名為rep1_dat.mdf。一個(gè)次要檔的邏輯檔案名為Rep2,磁片檔案名為rep2_dat.ndf;另一個(gè)次要檔的邏輯檔案名為Rep3,磁片檔案名為rep3_dat.ndf。一個(gè)事務(wù)日誌檔的邏輯檔案名為Rep1_log,磁片檔案名為rep1_log.ldf;另一個(gè)事務(wù)日誌檔的邏輯檔案名為Rep2_log,磁片檔案名為rep2_log.ldf。所有檔的初始容量都是5MB,最大容量限制都來是10MB,在最大容量限制內(nèi),當(dāng)檔空間不夠時(shí)每次的增長量都是1MB。以上檔都存儲(chǔ)在D盤SQL檔夾下。語句CREATEDATABASEReportONPRIMARY(NAME=Rep1,FILENAME=’d:\SQL\rep1_dat.mdf’,SIZE=5,MAXSIZE=10,FILEGROWTH=1),(NAME=Rep2,FILENAME=’d:\SQL\rep2_dat.ndf’,SIZE=5,MAXSIZE=10,FILEGROWTH=1),(NAME=Rep3,FILENAME=’d:\SQL\rep3_dat.ndf’,SIZE=5,MAXSIZE=10,FILEGROWTH=1)LOGON(NAME=Rep1_log,FILENAME=’d:\SQL\rep1_log.ldf’,SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB),(NAME=Rep2_log,FILENAME=’d:\SQL\rep2_log.ldf’,SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=1MB)GO例3:創(chuàng)建一個(gè)包含兩個(gè)檔組的資料庫。該資料庫名為business,主文件組包含business_dat1和business_dat2兩個(gè)數(shù)據(jù)檔。檔組business_group包含數(shù)據(jù)檔business_dat3。該資料庫包含一個(gè)日誌檔business_log。CREATEDATABASEbusinessONPRIMARY(NAME=business_dat1,FILENAME=‘d:\SQL\business_dat1.mdf’,SIZE=10MB,MAXSIZE=50,FILEGROWTH=10),(NAME=business_dat2,FILENAME=‘d:\SQL\business_dat2.ndf’,SIZE=10MB,MAXSIZE=500MB,FILEGROWTH=10),語句FILEGROUPbusiness_group(NAME=business_dat3,FILENAME=‘d:\SQL\business_dat3.ndf’,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10%)LOGON(NAME=business_log,FILENAME=‘d:\SQL\business_log.ldf’,SIZE=8MB,MAXSIZE=100MB,FILEGROWTH=10MB)2.4管理資料庫1.管理數(shù)據(jù)檔和日誌檔的增長2.收縮資料庫或檔3.分離和附加資料庫4.刪除資料庫2.4.1管理數(shù)據(jù)檔和日誌檔的增長

使檔自動(dòng)增長手動(dòng)擴(kuò)充資料庫檔添加次要資料庫檔語法:ALTERDATABASEdatabase{ADDFILE<filespec>[,...n][TOFILEGROUPfilegroup_name]

|ADDLOGFILE<filespec>[,...n]

|REMOVEFILE

logical_file_name

|

ADDFILEGROUP

filegroup_name

|REMOVEFILEGROUP

filegroup_name

|

MODIFYFILE<filespec>

|MODIFYNAME

=

new_dbname

|

MODIFYFILEGROUP

filegroup_name{filegroup_property|NAME=

new_filegroup_name}

|SET<optionspec>[,...n][WITH<termination>]

|COLLATE<collation_name>

}示例:增加Sample資料庫日誌檔的大小,並添加一個(gè)次要的數(shù)據(jù)檔。ALTERDATABASESample

MODIFYFILE(NAME='SampleLog',

SIZE=15MB)GOALTERDATABASESample

ADDFILE

(NAME=SampleData2,

FILENAME='c:\ProgramFiles\..\MSSQL\

Data\Sample2.ndf',

SIZE=15MB,

MAXSIZE=20MB

)GO2.4.2收縮資料庫或檔

收縮整個(gè)資料庫企業(yè)管理器DBCCSHRINKDATABASE語句DBCCSHRINKDATABASE(資料庫名

[,目標(biāo)百分比][,{NOTRUNCATE|TRUNCATEONLY}])示例:DBCCSHRINKDATABASE(sample,25)思考:如果sample資料庫包含6MB的數(shù)據(jù),那麼該資料庫新的大小是多少?收縮資料庫中的一個(gè)數(shù)據(jù)檔企業(yè)管理器DBCCSHRINKFILE語句DBCCSHRINKFILE({檔案名

|檔id}[,目標(biāo)大小][,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}])示例:將sample_dat數(shù)據(jù)檔的大小收縮為10MB。

DBCCSHRINKFILE(sample_dat,10)2.4.3分離和附加資料庫SQLServer2000允許分離資料庫的數(shù)據(jù)和事務(wù)日誌檔,然後將其重新附加到另一臺(tái)伺服器,甚至同一臺(tái)伺服器上分離資料庫分離資料庫將從SQLServer刪除資料庫,但是保持組成該資料庫的數(shù)據(jù)和事務(wù)日誌檔中的資料庫完好無損分離資料庫語法:EXECsp_detach_db資料庫名分離資料庫要求沒有用戶正在使用資料庫,資料庫中沒有未完成的事務(wù),並且在內(nèi)存中沒有這個(gè)資料庫的髒頁一旦資料庫被分離,其條目就從master資料庫的sysdatabases表中被移除。從SQLServer的角度看,資料庫似乎被刪除了但是其物理檔仍然保存在磁片上分離和附加資料庫(續(xù))附加資料庫當(dāng)附加在資料庫上時(shí),必須指定主數(shù)據(jù)檔的名稱和物理位置附加資料庫語法

EXECsp_attach_db[@資料庫名=]‘資料庫名’

[@檔案名=]‘檔案名’[……16]只需要指定當(dāng)前的檔案名,無論當(dāng)前的名字和從資料庫分離時(shí)的名字是否相同。亦可以指定不同於原來資料庫名字的新的資料庫名字。只有當(dāng)檔位置和在主文件首存儲(chǔ)的檔原始位置不同的時(shí)候,才需要指定檔案名,最多只能指定16個(gè)檔。2.4.4刪除資料庫刪除資料庫的方法企業(yè)管理器DROPDATABASE語句

DROPDATABASE

資料庫名

[,…n]

可以一次刪除多個(gè)數(shù)據(jù)庫刪除資料庫的限制不能刪除:正在被還原的資料庫任何用戶因?yàn)樽x或?qū)懚蜷_的資料庫正在發(fā)佈它的任何一張表作為SQL

Server

複製組成部分的資料庫系統(tǒng)資料庫2.4.5重命名資料庫和數(shù)據(jù)庫檔ALTERDATABASEdatabaseMODIFYFILE(NAME=logical_file_name,NEWNAME=new_logical_name...)。

|MODIFYNAME=new_dbnamesp_renamedb[@objname=]'object_name',

[@newname=]'new_name'sp_rename[@objname=]'object_name',

[@newname=]'new_name'

[,[@objtype=]'object_type']

注意:如果要重命名的對(duì)象是表中的一列,那麼object_name必須為table.column形式。如果要重命名的是索引,那麼object_name必須為table.index形式。Objtype(對(duì)象類型)的可取值:

描述COLUMN要重命名的列。DATABASE要重命名用戶定義的資料庫時(shí)需用此選項(xiàng)。INDEX用戶定義的索引。OBJECT可用來重命名約束、用戶表、視圖、存儲(chǔ)過程、觸發(fā)器和規(guī)則等對(duì)象。USERDATATYPE要重命名的用戶定義數(shù)據(jù)類型。示例:修改檔案名將Temp資料庫中的數(shù)據(jù)檔Temp2_dat的檔案名改為new_dat。alterdatabasetempmodifyfile(name='Temp2_dat',newname='new_dat')示例:修改資料庫名將Temp資料庫的名字改為NEWtemp。alterdatabaseTempmodifyname='NEWtemp‘或Sp_rename‘Temp’,’NEWtemp’,database或Sp_renamedb‘Temp’,’NEWtemp’

2.5設(shè)置資料庫選項(xiàng)

資料庫選項(xiàng)的設(shè)置將決定資料庫的默認(rèn)行為,用戶數(shù)據(jù)庫的這些設(shè)置是在資料庫創(chuàng)建時(shí)從模型數(shù)據(jù)中繼承過來的。一:在企業(yè)管理器中設(shè)置步驟①打開“資料庫屬性”對(duì)話框,可以在“選項(xiàng)”標(biāo)籤頁進(jìn)行資料庫設(shè)置

1、訪問區(qū)設(shè)置

2、故障還原設(shè)置

3、設(shè)置區(qū)

4、相容性設(shè)置1、查看資料庫選項(xiàng):可使用存儲(chǔ)過程sp_dboption來查看資料庫選項(xiàng)。語法格式:EXECsp_dboption2、設(shè)置資料庫選項(xiàng):在確定了要修改的資料庫選項(xiàng)之後,可使用存儲(chǔ)過程sp_dboption設(shè)置資料庫選項(xiàng)。語法格式:sp_dboption[[@dbname=]’database’][,[@optname=]’option_name’][,[@optvalue=]’value’]二、在查詢分析器中設(shè)置說明:[@dbname=]‘資料庫名稱’該參數(shù)將確定需要修改選項(xiàng)的資料庫的名稱。[@optname=]‘選項(xiàng)名稱’該參數(shù)將確定需要設(shè)置的選項(xiàng)的名稱。[@optvalue=]‘選項(xiàng)值’該參數(shù)將確定選項(xiàng)的新設(shè)置。如果該參數(shù)省略,sp_dboption將返回當(dāng)前值。(True、False、ON、OFF)§3.1SQLServer2000數(shù)據(jù)類型SQLSERVER2000為表中的字段提供了豐富的數(shù)據(jù)類型,SQLSERVER2000在討論系統(tǒng)數(shù)據(jù)類型時(shí)提供了長度、精度和小數(shù)位數(shù)幾個(gè)概念數(shù)據(jù)類型:定義每個(gè)列所能存放的數(shù)據(jù)值和存儲(chǔ)格式

§3.1SQLServer2000數(shù)據(jù)類型一、系統(tǒng)提供的數(shù)據(jù)類型二、選擇數(shù)據(jù)類型的指導(dǎo)原則三、用戶定義數(shù)據(jù)類型精度:指數(shù)值數(shù)據(jù)中所存儲(chǔ)的十進(jìn)位數(shù)據(jù)的總位數(shù)。小數(shù)位數(shù):指數(shù)值數(shù)據(jù)中小數(shù)點(diǎn)右邊可以有的數(shù)字位數(shù)的最大值。長度:指存儲(chǔ)數(shù)據(jù)所使用的位元組數(shù)。§3.1.1系統(tǒng)提供的數(shù)據(jù)類型一、字串類型:字母、數(shù)字和符號(hào)組成,常量使用單引號(hào)做定界符。名稱存儲(chǔ)長度(位元組)存儲(chǔ)數(shù)值範(fàn)圍備註Char[n]n(若輸入數(shù)據(jù)的長度超過n規(guī)定的值,超出部分將被截?cái)?,否則,不足部分用空格填充。)最多8000個(gè)字元,個(gè)數(shù)據(jù)由n決定。分別表示字長、變長字元型和變長文本型數(shù)據(jù),n的默認(rèn)長度為1。Text常用於存儲(chǔ)字元長度大於8000的變長字元。varchar[n]位元組數(shù)據(jù)隨輸入數(shù)據(jù)的實(shí)際長度而變化,最大長度不得超過n規(guī)定的值。最多8000個(gè)字元,個(gè)數(shù)據(jù)由n決定。text位元組數(shù)隨輸入數(shù)據(jù)的實(shí)際長度而變化。最多231-1個(gè)字元。(2147483647)二、數(shù)值型數(shù)據(jù)類型

1、整數(shù)數(shù)據(jù)類型:輸入小數(shù)時(shí),截取小數(shù)部分不四捨五入;輸入非法數(shù)字時(shí),顯示NULL(表示一個(gè)未知數(shù))。名稱存儲(chǔ)長度(位元組)存儲(chǔ)數(shù)據(jù)範(fàn)圍備註Bigint大整數(shù)8-263~263-1Int整數(shù)4-231~231-1Smallint短整數(shù)2-215~215-1Tinyint微短整數(shù)10~255表示無符號(hào)整數(shù)。2、精確數(shù)值類型:由整數(shù)部分和小數(shù)部分構(gòu)成,其所有的數(shù)字都是有效位。名稱存儲(chǔ)長度(位元組)位元組數(shù)隨精度改變存儲(chǔ)數(shù)據(jù)範(fàn)圍備註Decimal[(p[,s])]或numeric[(p[,s])]精度位元組長度-1038+1~1038-1表示固定精度和大小的十進(jìn)位數(shù)值。精度P為整數(shù)和小數(shù)數(shù)字位數(shù)最大值,S為小數(shù)據(jù)數(shù)字位數(shù)的最大值。1~9510~19920~281329~38173、浮點(diǎn)型(近似數(shù)值型):表示近似的浮點(diǎn)數(shù)值,該數(shù)值與實(shí)際數(shù)據(jù)之間可能存在一個(gè)微小的差別,不能精確表示數(shù)值範(fàn)圍內(nèi)的所有值,多數(shù)應(yīng)用程式可以忽略這一差別。名稱存儲(chǔ)長度(位元組)位元組數(shù)隨n及精度改變存儲(chǔ)數(shù)據(jù)範(fàn)圍備註float[(n)]N值精度位元組長度-1.79E+308

~1.79E+308N為以科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)的尾數(shù),該值決定了精度和存儲(chǔ)位元組數(shù)。1~247425~53158real4-3.40E+38

~3.40E+38三、貨幣型數(shù)據(jù)類型名稱存儲(chǔ)長度(位元組)存儲(chǔ)數(shù)據(jù)範(fàn)圍備註money8-263~263-1精度為萬分之一貨幣單位,即小數(shù)點(diǎn)後4位。smallmoney4-231~231-1提示:貨幣數(shù)據(jù)類型在使用時(shí)不需要‘’,但貨幣數(shù)值之前必須帶有適當(dāng)?shù)呢泿欧?hào)例如美元、$6000等。四、二進(jìn)位類型:分別表示定長、變長字元型名稱存儲(chǔ)長度(位元組)存儲(chǔ)數(shù)據(jù)範(fàn)圍備註binary([n])N+4(若輸入數(shù)據(jù)的長度超過n規(guī)定的值,超出部分將被截?cái)?,否則,不足部分用數(shù)字0填充。)n最大值為8000。對(duì)於二進(jìn)位數(shù)據(jù)常,應(yīng)在數(shù)據(jù)前面加識(shí)別字0x。n的默認(rèn)長度為1。varbinary([n])位元組數(shù)為輸入的數(shù)據(jù)的實(shí)際長度+4。n最大值為8000。五、日期時(shí)間類型:用於存儲(chǔ)日期和時(shí)間資訊。名稱存儲(chǔ)長度(位元組)存儲(chǔ)數(shù)據(jù)範(fàn)圍備註datetime81753-1-1

~9999-12-31表示日期和時(shí)間的組合,其時(shí)間精度為1/300或3..33毫秒。smalldatetime41900-1-1

~2079-12-31表示日期和時(shí)間的組合,其時(shí)間精度為分鐘。六、其他數(shù)據(jù)類型

Sql_variant數(shù)據(jù)類型是SQLSERVER2000中新增的一類數(shù)據(jù)類型,如果將一個(gè)字段定義為sql_variant數(shù)據(jù)類型,那麼一個(gè)單獨(dú)的字段中就可以存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)值。例如:定義為sql_variant

的列可存儲(chǔ)除text、ntext、image、rowversion之外的其他類型。

rowversion數(shù)據(jù)類型:當(dāng)改變行時(shí),rowversion類型列會(huì)保留一個(gè)SQLSERVER自動(dòng)更新的內(nèi)部序號(hào)。在一個(gè)資料庫中,rowversion列值是唯一的,並且每個(gè)表僅有一個(gè)rowversion類型列?!?.1.2選擇數(shù)據(jù)類型的指導(dǎo)原則若列值的長度相差很大,那麼使用變長數(shù)據(jù)類型例如某列存儲(chǔ)的是人名,地址等謹(jǐn)慎使用tinyint數(shù)據(jù)類型雖然節(jié)省空間,但擴(kuò)展性很小對(duì)於小數(shù)數(shù)據(jù)來說,一般使用decimal數(shù)據(jù)類型可以精確地控制精度如果行的存儲(chǔ)量超過8000位元組,使用text或者image若不大於8000位元組,可使用char、varchar或者binary數(shù)據(jù)類型對(duì)於貨幣數(shù)據(jù),使用money數(shù)據(jù)類型不要使用類型為float或者real的列作為主鍵因?yàn)樗鼈儾痪_,所以不適合用於比較使用sp_addtype創(chuàng)建用戶定義數(shù)據(jù)類型語法:Sp_addtype[@typename=]type,[@phystype=]system_data_type[,[@nulltype=]’null_type’]說明:[@typename=]typename:用戶定義的數(shù)據(jù)類型的名稱。[@phystype=]system_data_type:系統(tǒng)數(shù)據(jù)類型,沒有

默認(rèn)值。

注意:如果定義的基本數(shù)據(jù)類型中有空格或標(biāo)點(diǎn)符號(hào),則必須括起來。(varchar(11))[,[@nulltype=]’null_type’]:處理空值的方法。用引號(hào)引起來?!甆ULL’,‘NOTNULL’?!?.1.3用戶定義數(shù)據(jù)類型execsp_addtypeaddress,‘varchar(80)’,‘notnull’利用系統(tǒng)存儲(chǔ)過程刪除用戶自定義數(shù)據(jù)類型sp_droptype[@typename=]type刪除自定義的生日數(shù)據(jù)類型。

execsp_droptypebirthday自定義一個(gè)地址數(shù)據(jù)類型§3.2創(chuàng)建表和管理表

在資料庫設(shè)計(jì)、創(chuàng)建完成之後,接下來的工作就是創(chuàng)建表。表是資料庫中最主要的數(shù)據(jù)對(duì)象,用於存儲(chǔ)和運(yùn)算元據(jù)的一種邏輯結(jié)構(gòu),是一系列列的集合。

SQLServer2000提供了兩種方法創(chuàng)建資料庫表:第一種方法是利用企業(yè)管理器創(chuàng)建表;

另一種方法是利用T-SQL語句創(chuàng)建表?!?.2.1創(chuàng)建表1.利用企業(yè)管理器創(chuàng)建表

步驟:①打開企業(yè)管理器,在企業(yè)管理器中的樹狀目錄窗口中展開需要?jiǎng)?chuàng)建新表的資料庫。②單擊“表”節(jié)點(diǎn),此時(shí)該是資料庫中的表對(duì)象顯示在內(nèi)容窗口中,然後選擇下列操作之一打開“表設(shè)計(jì)窗口”

A:在該節(jié)點(diǎn)上單擊右鍵,在彈出菜單中選擇“新建表”命令。

B:在操作菜單上選擇“操作”->新建表

C:?jiǎn)螕艄ぞ邫谏系摹靶陆ā卑粹o描述:指定字段的注釋文本描述。

默認(rèn)值:指定字段的默認(rèn)值,插入記錄時(shí)沒有指定字段值的情況下,自動(dòng)使用的值。

精度:指定字段的位數(shù)。對(duì)於decimal和numeric數(shù)據(jù)類型的字段可以設(shè)置精度屬性。

小數(shù)據(jù)位數(shù):顯示該列值小數(shù)點(diǎn)右邊能出現(xiàn)的最多數(shù)字個(gè)數(shù)。

③定義數(shù)據(jù)表字段表設(shè)計(jì)窗口由上下兩個(gè)窗口組成,上面的窗口用來定義表字段的一般屬性,下麵的窗口用來定義各個(gè)字段的特殊屬性。特殊屬性說明:標(biāo)識(shí):指定一個(gè)字段是否為標(biāo)識(shí)字段。只能bigint、int、smallint、tinyint、decimal、numeric可以設(shè)置該屬性。否:不設(shè)置該字段為標(biāo)識(shí)字段。是:該字段為標(biāo)識(shí)列,在插入一個(gè)新的數(shù)據(jù)行時(shí)不必為字段指定數(shù)值,系統(tǒng)會(huì)自動(dòng)生成一個(gè)字段值。是(不用於複製):和第二個(gè)選項(xiàng)功能相似,如果是以複製的方式向表中輸入數(shù)據(jù),系統(tǒng)將不自動(dòng)生成字段值。標(biāo)識(shí)種子:指定標(biāo)識(shí)字段的初始值。標(biāo)識(shí)遞增量:指定標(biāo)識(shí)字段的遞增值。默認(rèn)值為1。公式:指定用於計(jì)算字段的公式。排序規(guī)則:指定當(dāng)字段值用於對(duì)查詢結(jié)果進(jìn)行排序時(shí)的排序規(guī)則,默認(rèn)情況下使用資料庫默認(rèn)規(guī)則。

例子3.1:利用企業(yè)管理器創(chuàng)建部門情況表(BMQKB)表結(jié)構(gòu)如下:列名數(shù)據(jù)類型長度允許空值說明編號(hào)char4否PK姓名char10否性別

Char2否默認(rèn)值:男出生日期datetime8是專業(yè)varchar10是工資money8是個(gè)人說明

text是2.利用T-SQL語句創(chuàng)建表

其語法形式如下:CREATETABLE[owner.]table_name

(<column_namedata_type[DEFAULTconstant_expression][IDENTITY(seed,increment)][collate<collation_name>][notnull|null][,…n]|[column_nameascomputed_column_expression])[on{filegroup|default}]創(chuàng)建表的各參數(shù)的說明如下:

owner:用於指定新建表的所有者的用戶名。table_name:用於指定新建的表的名稱。column_name:用於指定新建表的列的名稱.data_type:用於指定列的數(shù)據(jù)類型。DEFAULT:用於指定列的缺省值。computed_column_expression:用於指定計(jì)算列的列值的運(yùn)算式。ON{filegroup|DEFAULT}:用於指定存儲(chǔ)表的檔組名。例子3.2:用T-SQL語句在查詢分析器創(chuàng)建(BMQKB)表結(jié)構(gòu)如下:列名數(shù)據(jù)類型長度允許空值說明描述numberchar7否pk編號(hào)namechar10否姓名sex

Char2否默認(rèn)值:男性別birthdaydatetime8是出生日期professional_titlechar10是職位salarymoney8是工資memotext是備註其SQL語句的程式清單如下:

CREATETABLEBMQKB(numberchar(7)notnullprimarykey,namechar(10)NOTNULL,sexchar(2)default'男’NOTNULL,birthdaydatetimenull,professional_titlevarchar(10)null,salarymoneynull,memotextnull)例3.3:為數(shù)據(jù)庫salers在檔組user1上創(chuàng)建訂單表orders,包含三個(gè)字段,其中:orderid為標(biāo)識(shí)列,int型,起始值為10248,增值為1;customerid和salerid字段不允許為空,3位元組的單字符型;orderdate字段的默認(rèn)值為當(dāng)前日期。語句:UsesalersCreatetableorders(orderidintidentity(10248,1),customeridchar(3)notnull,salerid

char(3)notnull,

Orderdatedatetimedefaultcurrent_timestamp)Onuser1請(qǐng)讀下麵的語句:USEtempdbCREATETABLEpersons(

標(biāo)識(shí)號(hào)intIDENTiTY(1,2),

姓名varchar(8))USEtempdbCREATETABLEcalculate(

最小值int,

最大值int,

平均值A(chǔ)S(最大值+最小值)/2)創(chuàng)建標(biāo)識(shí)列函數(shù)創(chuàng)建計(jì)算字段

§3.2.2修改表

一:使用企業(yè)管理器1、對(duì)於已經(jīng)存在的表可以進(jìn)行如下修改操作。修改已有列的屬性增加列刪除列關(guān)於修改已有列的屬性的說明

建議表中有記錄后,不要輕易修改表的結(jié)構(gòu),特別是修改列的數(shù)據(jù)類型。

下列類型的列不能被修改:具有text、ntext、image、timestamp數(shù)據(jù)類型的列;計(jì)算列或用在計(jì)算列中的列;全局標(biāo)識(shí)列;用於索引的列;用於主鍵約束、外鍵約束、核查約束、唯一約束的列。二、利用Transact-SQL語言中的Altertable命令修改字段定義ALTERTABLEtable_nameALTERCOLUMNcolumn_namenew_data_type[(precision[,scale])][NULL|NOTNULL]每次只能修改一個(gè)列的屬性說明:table:用於指定要修改的表的名稱。ALTERCOLUMN:用於指定要變更或者修改數(shù)據(jù)類型的列。column_name:用於指定要更改、添加或刪除的列的名稱。new_data_type:用於指定新的數(shù)據(jù)類型的名稱。precision:用於指定新的數(shù)據(jù)類型的精度。scale:用於指定新的數(shù)據(jù)類型的小數(shù)位數(shù)。NULL|NOTNULL:用於指定該列是否可以接受空值。把允許這空值的列改為不允許為空值時(shí),前提是表為空或表內(nèi)每行記錄中該列的值都不為空值。例3.4定義project表,包含:“專案編號(hào)”和“專案名稱”。修改表,將“專案名稱”的數(shù)據(jù)類型從char(20)更改為varchar(25),再將原來不可以為空更改為可以為空。語句:USEcompanyAltertableprojectAltercolumn專案名稱varchar(25)null三、利用Transact-SQL語言中的Altertable命令向數(shù)據(jù)表增加字段(Add)ALTERTABLEtable_nameADD{[<column_definition>][,…n]|[column_nameAScomputed_column_expression]}

說明:Table_name:需要添加字段的數(shù)據(jù)表名稱。column_definition:字段的定義。column_name:添加字段的名稱。computed_column_expression:

計(jì)算字段運(yùn)算式例3.5向Project表添加三個(gè)字段,分別:“專案負(fù)責(zé)人”(varchar(15)),“專案難度級(jí)別”(int,默認(rèn)值是1),“預(yù)計(jì)工期”。其中“預(yù)計(jì)工期”的取值為“專案難度級(jí)別”的值乘以20AltertableprojectAdd專案負(fù)責(zé)人varchar(15),

專案難度級(jí)別intDefault1,

預(yù)計(jì)工期AS專案難度級(jí)別*20例3.6在表customers中添加公司地址(address),char(40);郵遞區(qū)號(hào)(zipcode),用戶自定義類型zip,char(6),notnull;電話號(hào)碼字段(telephone),用戶自定義類型telephone_code,varchar(15),null。Execsp_addtypetelephone_code,’varchar(15)’,nullExecsp_addtypezip,’char(6)’,notnullGoAltertablecustomersAddaddresschar(40),zipcodezip,telephonetelephone_code四、利用Transact-SQL語言中的Altertable命令刪除一個(gè)或多個(gè)字段(Drop)ALTERTABLEtable_nameDROPCOLUMNcolumn_name[,….n]table_name:需要?jiǎng)h除字段的數(shù)據(jù)表名column_name:需要?jiǎng)h除的字段名稱例3.6:刪除表Project中的“專案負(fù)責(zé)人”和“專案難度級(jí)別”。語句:AltertableProjectDropcolumn專案負(fù)責(zé)人,專案難度級(jí)別§3.2.3刪除表1、刪除表時(shí),表的結(jié)構(gòu)定義、表中所有的數(shù)據(jù)以及表的索引、觸發(fā)器、約束等均被永久地從資料庫中刪除。2、如果要?jiǎng)h除有過外鍵約束和唯一約束和主鍵約束相關(guān)的表,必須首先刪除具有外鍵約束的表。(一)利用企業(yè)管理器刪除表在企業(yè)管理器中,展開指定的資料庫和表格項(xiàng),用右鍵單擊要?jiǎng)h除的表,從快捷菜單中選擇“刪除”選項(xiàng),則會(huì)出現(xiàn)除去對(duì)象對(duì)話框。單擊“全部刪除”按鈕,即可刪除表。(二)利用DROPTABLE語句刪除表DROPTABLE語句可以刪除一個(gè)表和表中的數(shù)據(jù)及其與表有關(guān)的所有索引、觸發(fā)器、約束、許可對(duì)象。DROPTABLE語句的語法形式如下:DROPTABLEtable_name[,…n]例如:刪除表ProjectUSECompanyDROPTABLEProject§3.2.4修改表名(1)在企業(yè)管理器中修改(2)使用存儲(chǔ)過程sp_rename修改Execsp_renameold_name,new_name[,object]例如:Execsp_renamebusiness,company§3.2.5修改字段名(1)在企業(yè)管理器中修改(2)使用存儲(chǔ)過程sp_rename修改Execsp_rename‘table.column’,’new_column’,’column’例如:將表customers中的列contacttitle

重命名為

title。

EXECsp_rename'customers.[contacttitle]','title','COLUMN'§3.2.6表的數(shù)據(jù)操作一、向表中插入數(shù)據(jù)1、使用企業(yè)管理向表中插入數(shù)據(jù):在表上右擊/打開表/返回所有行/保存鈕。2、使用T-SQL語句插入數(shù)據(jù)語法:INSERT[INTO]table_name[(column_list)]VALUES({DEFAULT|NULL|expression}[,...n])語法說明:[INTO]:用在INSERT和目標(biāo)表之間;table_name:需要插入數(shù)據(jù)的目標(biāo)表;column_list:要在其中插入數(shù)據(jù)的一列或多列的名稱列表。列表順序與VALUES列表順序相吻合。省略該項(xiàng),則VALUES子句給出每一列的值;VALUES:為column_list列表中的各列指定值。其值有三種:DEFAULT(默認(rèn)值)、NULL(空值)、expression(常量、變數(shù)和運(yùn)算式)例3.7向員工數(shù)據(jù)表(員工姓名,性別,所屬部門、工資)插入一條記錄(張三,男,專案部,3000)語句:UsecompanyInsertinto員工數(shù)據(jù)表

(員工姓名,性別,所屬部門,工資)Values(‘張三’,’男’,’專案部’,3000)二、修改表中數(shù)據(jù)1、使用企業(yè)管理器修改表中數(shù)據(jù)方法一:表上右擊/打開表/返回所有行方法二:表上右擊/打開表/查詢/運(yùn)行鈕!2、使用T-SQL語句UPDATE修改表中數(shù)據(jù)語法:UPDATEtable_nameSETcolumn_name={expression|DEFAULT|NULL}[WHERE<search_condition>]語句說明:table_name:需要插入數(shù)據(jù)的目標(biāo)表;SET:指定要修改的列或變數(shù)名稱的列表。共有三種情況:column_name{expression|DEFAULT|NULL}:由運(yùn)算式的值,默認(rèn)值或空值支修改指定的列值;WHERE<search_condition>:指明只對(duì)滿足該條件的進(jìn)行修改,若省略該子句,則對(duì)表中的所有進(jìn)行修改。3.8將員工數(shù)據(jù)表中所有的專案部的員工的工資統(tǒng)一調(diào)整為3000語句:UsecompanyUpdate員工數(shù)據(jù)表Set工資=3000Where所屬部門=‘專案部’3.9將員工數(shù)據(jù)表中所有的專案部的員工的工資在原來的基礎(chǔ)上增加500。語句:UsecompanyUpdate員工數(shù)據(jù)表Set工資=工資+500Where所屬部門=‘專案部’3.10在員工數(shù)據(jù)表中將“張三”由專案部調(diào)到財(cái)務(wù)部,工資增加為3500。語句:usecompanyUpdate員工數(shù)據(jù)表set所屬部門='財(cái)務(wù)部',工資=3500where員工姓名='張三'三、刪除表中數(shù)據(jù)1、使用企業(yè)管理器刪除表中數(shù)據(jù):表上右擊/打開表/返回所有行/選行/右擊/刪除。2、使用T-SQL的DELETE語句刪除表中數(shù)據(jù)

DELETE[FROM]table_name

[WHERE<search_condition>]說明與UPDATE相同。3.11刪除員工數(shù)據(jù)表中姓名是“王秋萍”的員工的記錄語句:UsecompanyDeletefrom員工數(shù)據(jù)表Where員工姓名=‘王秋萍’作業(yè):1、使用T-SQL語句創(chuàng)建下表:表名:student字段:sno、sname、ssex,sbirthday、saddress、department、scredit、remark將sno設(shè)置成標(biāo)識(shí)字段,種子為0403110,增量為1;department的默認(rèn)值為’電腦資訊工程’。為各個(gè)字段選擇合適的數(shù)據(jù)類型注:

sno-學(xué)號(hào),sname-姓名,ssex-性別

sbirthday-出生年月,saddress-地址,scredit-學(xué)分,department-系別,remark-備註2、修改students中已有列的屬性:

將“sname”列的數(shù)據(jù)類型改為varchar,長度為20;將“scredit”列的數(shù)據(jù)類型改為int。3、向表Student中增加一列“grade”,數(shù)據(jù)類型為numeric(4,2),允許空。4、刪除表中的“remark”列5、在students表中插入記錄sno、sname、ssex,sbirthday、saddress、sdepartment、scredit

分別為:0403115、李華、男、1986-4-16

浙江寧波、電腦資訊工程、50的記錄。數(shù)據(jù)完整性的類型4.1數(shù)據(jù)完整性的類型數(shù)據(jù)完整性指的是資料庫中存儲(chǔ)的數(shù)據(jù)的一致性和準(zhǔn)確性數(shù)據(jù)完整性的類型:域完整性、實(shí)體完整性、引用完整性域完整性域(或列)完整性是指對(duì)列指定一組有效的值並決定是否可為空值實(shí)體完整性實(shí)體(或表)完整性要求表中的所有行都有一個(gè)惟一的識(shí)別字,稱為主鍵值引用完整性引用完整性確保主鍵(在被引用表中)和外鍵(在引用表中)之間的關(guān)係得到保持1.對(duì)數(shù)據(jù)類型的約束(包括數(shù)據(jù)的類型、長度、單位、精度等)2.對(duì)數(shù)據(jù)格式的約束例如:規(guī)定出生日期的格式為YY.MM.DD3.對(duì)取值範(fàn)圍或取值集合的約束4.對(duì)空值的約束空值表示未定義或未知的值,與零值和空格不同。5.修改列定義時(shí)的約束6.修改列值時(shí)的約束返回域完整性實(shí)體完整性規(guī)則若屬性A是基本關(guān)係R的主屬性,則屬性A不能取空值。例如:在關(guān)係“學(xué)生(學(xué)號(hào),姓名,性別,出生日期,聯(lián)繫方式)”中,“學(xué)號(hào)”屬性為主碼,則學(xué)號(hào)不能取空值。返回引用完整性例1學(xué)生實(shí)體和專業(yè)實(shí)體可以用下麵的關(guān)係表示,其中主碼用下劃線標(biāo)識(shí):學(xué)生(學(xué)號(hào),姓名,性別,專業(yè)號(hào),出生日期)專業(yè)(專業(yè)號(hào),專業(yè)名)例2學(xué)生,課程,學(xué)生與課程之間的多對(duì)多聯(lián)繫可以用如下三個(gè)關(guān)係表示:學(xué)生(學(xué)號(hào),姓名,性別,專業(yè)號(hào),出生日期)課程(課程號(hào),課程名,學(xué)分)選修(學(xué)號(hào),課程號(hào),成績)例3學(xué)生(學(xué)號(hào),姓名,性別,專業(yè)號(hào),年齡,班長)

引用完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)係R的外碼,它與基本關(guān)係S的主碼KS相對(duì)應(yīng),則對(duì)於中每個(gè)元組在上的值必須為:或者取空值或者等於S中某個(gè)元組的主碼值第4章實(shí)現(xiàn)數(shù)據(jù)完整性數(shù)據(jù)完整性的類型定義約束約束的類型使用默認(rèn)值和規(guī)則定義約束決定使用何種約束創(chuàng)建約束使用約束的注意事項(xiàng)4.2定義約束決定使用何種約束4.2.1決定使用何種約束完整性類型約束類型描述域DEFAULT如果在INSERT語句中未顯式提供

值,則指定為列提供的值CHECK指定列中可接受的數(shù)據(jù)值REFERENTIAL基於其他表中的列的值,指定可接受的用於更新的數(shù)據(jù)值實(shí)體PRIMARYKEY惟一標(biāo)識(shí)每一列,確保用戶沒有輸入重複的值。同時(shí)創(chuàng)建一個(gè)索引以增強(qiáng)性

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論