SQL Server 2000数据库管理与开发课件_第1页
SQL Server 2000数据库管理与开发课件_第2页
SQL Server 2000数据库管理与开发课件_第3页
SQL Server 2000数据库管理与开发课件_第4页
SQL Server 2000数据库管理与开发课件_第5页
已阅读5页,还剩465页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLServer2000基礎關係資料庫基礎知識SQLServer2000概述SQLServer的安裝和配置SQLServer工具創建伺服器組和註冊伺服器1.1關係資料庫基礎知識1.概念模型2.資訊世界中的基本概念3.數據模型4.關係型資料庫概念

補充:

模型是在現實世界中模擬和抽象某些具體事物的工具。

在資料庫中用於抽象、表示和處理現實世界中的數據和資訊的工具

提示:資料庫是對數據的存儲,電腦不可能直接處理現實生活中的具體事物,所以人們必須事先把現實中的具體事物轉換成電腦能夠處理的數據,而資料庫就是利用數據模型這個工具來把現實世界的事物抽象成為數據。模型

數據模型

現實世界認識抽象資訊世界概念模型機器世界DBMS支持的數據模型1.1.1

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

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

現實世界中客觀存在,可相互區分的事物稱為實體

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

實體的某一特性稱為屬性。

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

(Domain)屬性的取值範圍稱為屬性的域。實體型(EntityType)具有相同屬性的實體具有相同的特徵和性質。用實體名及其屬性名集合來抽象和刻畫同類實體,稱為實體型Eg:學生(學號,姓名,性別,出生年月,系,入學時間)就是一個實體型。聯繫

(Relationship)現實世界中的事物內部及事物之間是有聯繫的,反映在資訊世界中為實體(型)內部的聯繫和實體(型)之間的聯繫。聯繫

兩個實體型之間的聯繫主要有一對一,一對多,多對多三種類型。(1)一對一聯繫(1:1)實體集A中的一個實體至多(也可以沒有)與實體集B中的一個實體相對應,反之亦然,則稱實體集A與實體集B

為一對一的聯繫。記作1:1。(2)一對多聯繫(1:n)實體集A中的一個實體與實體集B中的多個實體相對應,反之,實體集B中的一個實體至多與實體集A中的一個實體相對應。記作1:n。

(3)多對多聯繫(m:n)實體集A中的一個實體與實體集B中的多個實體相對應,反之,實體集B中的一個實體與實體集A中的多個實體相對應。記作(m:n)。可以用圖形來表示兩個實體型之間的這三類聯繫

(1)(2)(3)不同實體集實體之間的聯繫AAABBB聯繫三個實體型間的聯繫:

一對一;一對多;多對多班級管理正班長班主任111一對一課程講授教師參考書1np一對多供應商專案零件提供多對多nmp1.1.3數據模型

直接面向資料庫的邏輯結構,它是對現實世界的第二層抽象。直接與資料庫管理系統有關,稱為邏輯數據模型,也稱為結構數據模型。例如:網狀、層次、關係模型,它是根據數據存儲需求的不同來區分的,主要用於資料庫管理系統的實現。常用的數據模型

層次模型網狀模型關係模型非關係模型

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

關係型資料庫概念

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

SQLServer2000版本操作系統企業版標準版個人版開發版Windows98NNYNWindows2000ProfessionalNNYYWindows2000ServerYYYYWindows2000AdvancedServerYYYYWindowsNTServerYYYYWindowsXPNNYY表1-1:1.3.2SQLServer環境需求1.安裝、運行SQLServer2000的硬體需求2.安裝、運行SQLServer2000的軟體需求1.硬體需求(1)電腦

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

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

1.4SQLServer工具和實用程式

1.服務管理器

2.企業管理器

3.查詢分析器

4.聯機幫助叢書1.4.1服務管理器(ServiceManager)

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

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

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

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

客戶機/伺服器結構客戶機/伺服器的兩層結構客戶機/伺服器的三層結構邏輯層次表示層:數據和應用程式對用戶的表示業務層:應用程式邏輯和業務規則數據層:資料庫定義,數據完整性邏輯,存儲過程,以及其他相關的數據操作應用程式架構智能伺服器(2層)智能客戶端(2層)N層InternetInternetN層智能客戶端(2層)智能伺服器(2層)表示業務數據流覽器客戶端表示業務數據表示業務數據業務數據表示

胖伺服器

胖客戶機2.1.2

資料庫的邏輯結構所謂邏輯結構是指數據庫是由哪些性質的資訊所組成的。

資料庫的對象:1.表2.數據類型3.約束4.默認值5.規則6.索引7.視圖8.用戶自定義函數9.存儲過程10.觸發器

2.1.3資料庫的物理結構所謂物理結構是指數據庫檔是如何在電腦磁片上存儲的。在SQLServer2000中,數據存儲在頁中,頁是數據存儲的最小單位,每一頁可以存儲8K位元組的數據。8個連續的頁組成一個擴展盤區,它是存放表和索引的基本單元。資料庫數據存儲方式擴展盤區

(8個連續的

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

060位元組數據(檔)

.mdf或.ndf日誌(檔)

.Idf

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

檔和文件組1.檔SQLServer的檔亦稱為資料庫操作系統檔,每一個資料庫都對應於兩個或多個檔,在該資料庫內創建的資料庫對象(如表、視圖等)都保存在這些檔中。

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

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

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

一、使用控制面板根結點

創建步驟:

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

定義資料庫定義資料庫例1:創建一個名為sales1的資料庫,數據檔的邏輯檔案名為sales1_dat,磁片檔案名為sales1_dat.mdf,初始大小為5MB,最大值為30MB,增幅為2MB;事務日誌檔的邏輯檔案名為sales1_log,磁片檔案名為sales1_log.ldf,初始大小為2MB,最大值為20MB,增幅為2%;兩個磁片檔都存儲在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、關鍵字和參數說明CREATEDASEBASEdatebase_name:新資料庫的名稱。ON用於指定資料庫所需的數據檔。LOGON

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

在SQL語法中,SQL關鍵字採用大寫字母,而小寫字母是用戶書寫SQL語句時需要替換的參數

Ⅰ、([])中的內容表示可以省略的選項或參數

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

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

Ⅳ、{}通常會與符號|連用,表示{}中的選項或參數必須其一,不可省略。

Ⅴ、當[]與符號|連用時,表示[]中的選項任選其一,不能兩者同時使用,但也可以不選例1:

創建一個名為sales2的資料庫,數據檔的邏輯檔案名為sales2_dat,磁片檔案名為sales2_dat.mdf,初始大小為5MB,最大值為30MB,增幅為2MB;事務日誌檔的邏輯檔案名為sales2_log,磁片檔案名為sales2_log.ldf,初始大小為2MB,最大值為20MB,增幅為2%;兩個磁片檔都存儲在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:

創建一個名為Report的資料庫,定義一個主文件、兩個次要檔和兩個日誌檔。其中主數據檔的邏輯檔案名為Rep1,磁片檔案名為rep1_dat.mdf。一個次要檔的邏輯檔案名為Rep2,磁片檔案名為rep2_dat.ndf;另一個次要檔的邏輯檔案名為Rep3,磁片檔案名為rep3_dat.ndf。一個事務日誌檔的邏輯檔案名為Rep1_log,磁片檔案名為rep1_log.ldf;另一個事務日誌檔的邏輯檔案名為Rep2_log,磁片檔案名為rep2_log.ldf。所有檔的初始容量都是5MB,最大容量限制都來是10MB,在最大容量限制內,當檔空間不夠時每次的增長量都是1MB。以上檔都存儲在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:創建一個包含兩個檔組的資料庫。該資料庫名為business,主文件組包含business_dat1和business_dat2兩個數據檔。檔組business_group包含數據檔business_dat3。該資料庫包含一個日誌檔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.管理數據檔和日誌檔的增長2.收縮資料庫或檔3.分離和附加資料庫4.刪除資料庫2.4.1管理數據檔和日誌檔的增長

使檔自動增長手動擴充資料庫檔添加次要資料庫檔語法: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資料庫日誌檔的大小,並添加一個次要的數據檔。ALTERDATABASESample

MODIFYFILE(NAME='SampleLog',

SIZE=15MB)GOALTERDATABASESample

ADDFILE

(NAME=SampleData2,

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

Data\Sample2.ndf',

SIZE=15MB,

MAXSIZE=20MB

)GO2.4.2收縮資料庫或檔

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

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

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

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

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

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

DROPDATABASE

資料庫名

[,…n]

可以一次刪除多個數據庫刪除資料庫的限制不能刪除:正在被還原的資料庫任何用戶因為讀或寫而打開的資料庫正在發佈它的任何一張表作為SQL

Server

複製組成部分的資料庫系統資料庫2.4.5重命名資料庫和數據庫檔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']

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

描述COLUMN要重命名的列。DATABASE要重命名用戶定義的資料庫時需用此選項。INDEX用戶定義的索引。OBJECT可用來重命名約束、用戶表、視圖、存儲過程、觸發器和規則等對象。USERDATATYPE要重命名的用戶定義數據類型。示例:修改檔案名將Temp資料庫中的數據檔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設置資料庫選項

資料庫選項的設置將決定資料庫的默認行為,用戶數據庫的這些設置是在資料庫創建時從模型數據中繼承過來的。一:在企業管理器中設置步驟①打開“資料庫屬性”對話框,可以在“選項”標籤頁進行資料庫設置

1、訪問區設置

2、故障還原設置

3、設置區

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

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

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

~1.79E+308N為以科學計數法表示的浮點數的尾數,該值決定了精度和存儲位元組數。1~247425~53158real4-3.40E+38

~3.40E+38三、貨幣型數據類型名稱存儲長度(位元組)存儲數據範圍備註money8-263~263-1精度為萬分之一貨幣單位,即小數點後4位。smallmoney4-231~231-1提示:貨幣數據類型在使用時不需要‘’,但貨幣數值之前必須帶有適當的貨幣符號例如美元、$6000等。四、二進位類型:分別表示定長、變長字元型名稱存儲長度(位元組)存儲數據範圍備註binary([n])N+4(若輸入數據的長度超過n規定的值,超出部分將被截斷,否則,不足部分用數字0填充。)n最大值為8000。對於二進位數據常,應在數據前面加識別字0x。n的默認長度為1。varbinary([n])位元組數為輸入的數據的實際長度+4。n最大值為8000。五、日期時間類型:用於存儲日期和時間資訊。名稱存儲長度(位元組)存儲數據範圍備註datetime81753-1-1

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

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

Sql_variant數據類型是SQLSERVER2000中新增的一類數據類型,如果將一個字段定義為sql_variant數據類型,那麼一個單獨的字段中就可以存儲不同數據類型的數據值。例如:定義為sql_variant

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

rowversion數據類型:當改變行時,rowversion類型列會保留一個SQLSERVER自動更新的內部序號。在一個資料庫中,rowversion列值是唯一的,並且每個表僅有一個rowversion類型列。§3.1.2選擇數據類型的指導原則若列值的長度相差很大,那麼使用變長數據類型例如某列存儲的是人名,地址等謹慎使用tinyint數據類型雖然節省空間,但擴展性很小對於小數數據來說,一般使用decimal數據類型可以精確地控制精度如果行的存儲量超過8000位元組,使用text或者image若不大於8000位元組,可使用char、varchar或者binary數據類型對於貨幣數據,使用money數據類型不要使用類型為float或者real的列作為主鍵因為它們不精確,所以不適合用於比較使用sp_addtype創建用戶定義數據類型語法:Sp_addtype[@typename=]type,[@phystype=]system_data_type[,[@nulltype=]’null_type’]說明:[@typename=]typename:用戶定義的數據類型的名稱。[@phystype=]system_data_type:系統數據類型,沒有

默認值。

注意:如果定義的基本數據類型中有空格或標點符號,則必須括起來。(varchar(11))[,[@nulltype=]’null_type’]:處理空值的方法。用引號引起來。‘NULL’,‘NOTNULL’。§3.1.3用戶定義數據類型execsp_addtypeaddress,‘varchar(80)’,‘notnull’利用系統存儲過程刪除用戶自定義數據類型sp_droptype[@typename=]type刪除自定義的生日數據類型。

execsp_droptypebirthday自定義一個地址數據類型§3.2創建表和管理表

在資料庫設計、創建完成之後,接下來的工作就是創建表。表是資料庫中最主要的數據對象,用於存儲和運算元據的一種邏輯結構,是一系列列的集合。

SQLServer2000提供了兩種方法創建資料庫表:第一種方法是利用企業管理器創建表;

另一種方法是利用T-SQL語句創建表。§3.2.1創建表1.利用企業管理器創建表

步驟:①打開企業管理器,在企業管理器中的樹狀目錄窗口中展開需要創建新表的資料庫。②單擊“表”節點,此時該是資料庫中的表對象顯示在內容窗口中,然後選擇下列操作之一打開“表設計窗口”

A:在該節點上單擊右鍵,在彈出菜單中選擇“新建表”命令。

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

C:單擊工具欄上的“新建”按鈕描述:指定字段的注釋文本描述。

默認值:指定字段的默認值,插入記錄時沒有指定字段值的情況下,自動使用的值。

精度:指定字段的位數。對於decimal和numeric數據類型的字段可以設置精度屬性。

小數據位數:顯示該列值小數點右邊能出現的最多數字個數。

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

例子3.1:利用企業管理器創建部門情況表(BMQKB)表結構如下:列名數據類型長度允許空值說明編號char4否PK姓名char10否性別

Char2否默認值:男出生日期datetime8是專業varchar10是工資money8是個人說明

text是2.利用T-SQL語句創建表

其語法形式如下: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}]創建表的各參數的說明如下:

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

Char2否默認值:男性別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:為數據庫salers在檔組user1上創建訂單表orders,包含三個字段,其中:orderid為標識列,int型,起始值為10248,增值為1;customerid和salerid字段不允許為空,3位元組的單字符型;orderdate字段的默認值為當前日期。語句:UsesalersCreatetableorders(orderidintidentity(10248,1),customeridchar(3)notnull,salerid

char(3)notnull,

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

標識號intIDENTiTY(1,2),

姓名varchar(8))USEtempdbCREATETABLEcalculate(

最小值int,

最大值int,

平均值AS(最大值+最小值)/2)創建標識列函數創建計算字段

§3.2.2修改表

一:使用企业管理器1、對於已經存在的表可以進行如下修改操作。修改已有列的屬性增加列刪除列關於修改已有列的屬性的說明

建议表中有记录后,不要轻易修改表的结构,特别是修改列的数据类型。

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

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

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

專案難度級別intDefault1,

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

重命名為

title。

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

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

DELETE[FROM]table_name

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

sno-學號,sname-姓名,ssex-性別

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

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

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

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

引用完整性規則若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼KS相對應,則對於中每個元組在上的值必須為:或者取空值或者等於S中某個元組的主碼值第4章實現數據完整性數據完整性的類型定義約束約束的類型使用默認值和規則定義約束決定使用何種約束創建約束使用約束的注意事項4.2定義約束決定使用何種約束4.2.1決定使用何種約束完整性類型約束類型描述域DEFAULT如果在INSERT語句中未顯式提供

值,則指定為列提供的值CHECK指定列中可接受的數據值REFERENTIAL基於其他表中的列的值,指定可接受的用於更新的數據值實體PRIMARYKEY惟一標識每一列,確保用戶沒有輸入重複的值。同時創建一個索引以增強性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论