sql server程序員教學筆記_第1頁
sql server程序員教學筆記_第2頁
sql server程序員教學筆記_第3頁
sql server程序員教學筆記_第4頁
sql server程序員教學筆記_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

sqlserver的教學筆記

sql應用的環(huán)境

了解現(xiàn)在流行的兩種編程模式

c/s:兩層結構

當前c/s的模式的運作過程:

客戶機-------服務器

1:服務器負責數據管理及程序處理

2:客戶機負責界面描述和顯示.

3:客戶機向服務器發(fā)出數據處理請求

4:服務器響應后將處理之后的結果返回給客戶機.

2:b/s:三層結構[客戶機,internet瀏覽器,數據庫服務器]

sqlserver:結構化查詢語言服務器

它是一個只能識別sql語句,為客戶端應用程序提供數據服務的一個數據庫服務器.(網絡數

據庫)

sqlserver它可以用于c/sb/s:在于客戶端所使用的編程語言來決定.

總結:sql的角色

1:作為一客戶端應用程序提供數據服務的一個數據庫服務器[由客戶端應用程序通常是編

程語言如:

vb,delphi,asp和sqlserver服務器組成]

2:作為一強大的數據庫管理系統(tǒng)[由客戶端的sqlserver與服務器的sqlserver組成]

sqlserver的體系結構:

1:客戶端組件.2:服務端組件[服務].3:通信組件.

A:sqlserver的服務器端組件:

1:sqlserver服務:

作用:

1):數據庫管理系統(tǒng)的核心,它在數據庫管理系統(tǒng)中的地位就像發(fā)動機在氣車上的地位-

樣重要

2):在windowsnt操作系統(tǒng)中是以"服務"的形式存在的(mssqlserver)

3):功能是負責協(xié)調或安排客戶機向服務器提出的請求,然后一個一個解釋并執(zhí)行這些

sql命令.并向

客戶要返回執(zhí)行的結果.

2:sqlserveragent:sql代理服務[自動管理,]

1):依然是以服務的形式存在的.

3:msdtc:分布式事務服務:

用來支持分布式事務

4:micrsoftsearch:全文搜索和查詢服務:

可以為sqlserver提供功能更強的查詢,為了加快查詢速度.

sql的客戶端組件:

A:企業(yè)管理器:

作用:是圖形的形式實現(xiàn)sql服務器的有效配置和管理,[與windows資源管理器相以].

比如:建表,建數據庫,建立用用戶登錄,總之:sql的大部分工作都是在這里完成的.

B:查詢分析器:用于調試sql程序(語句),是編寫sql代碼開發(fā)工具

C:sqlserver事件探查器:

作用:用于監(jiān)視和分析sqlserver的服務器的活動情況.比如:服務器出現(xiàn)性能問題時,

我們要首先查看事件探查器

D:sqlserver客戶端的網絡實用工具

作用:提供客戶端的網絡連接配置的一種途徑.

E:sqlservere服務器端網絡實用工具:

提供服務器端的網絡連接配置,以確保服務器能正常地接受來自客戶端的訪問

簡單講解怎樣配置:

A:當服務器與客戶端位于同一臺電腦中時,可以使用:命令管道(namepile),共享內存

B:不同的電腦中,tcp/ip,命令管道(namepile)

同一臺電腦:sc

1:s:命名管道c:命名管道

2:c:使用共享內存,而s無限制

3:s:tcp/ipc:tcp/ip[不行]

4:s:tcp/ipc:命名管道[不行]

5:s:命名管道c:tcp/ip[行]

不同的電腦:

1:s:命名管道c:命名管道

2:s:tcp/ipc:tcp/ip[一定注意要保證兩者的端口號要一致]1433

服務管理器:

圖形化的,用于啟動或暫停,停止sqlserver服務的應用程序.

通過windowsnt服務來執(zhí)行

sql管理向導:

利用管理向導,使用戶更加容易的完成一系列的操作.

比如:

關系數據庫的基礎知識.

1:數據庫:數據庫是存儲在計算機設備上的結構化的相關數據的集合.

A:數據庫只是用來存儲數據與數據之間的關系的,并不用來存儲數據的.

B:所有數據都是存儲在表里面的.

c:數據庫只是用來組織或管理表.

2:實體:客觀存在可以相互區(qū)別的事物.

3:屬性:描述實體特征的[表中的每一列被稱為一個屬性,或者字段]

4:元組(記錄):表中每一行被一個元組,或者?條記錄

5:實體之間關系.

1:一對一:

2:一對多:

3:多對多:

組成數據庫的對像

A:表:具體組織和存儲數據的對像,由列和行組成.[table]

1:行和列順序可以是任意的.在同一個表中列名必須是唯一的.

2:在同一個數據庫里面表名也必須要是唯一.

b:主鍵:(primarykey)

1:表中一列或多列的組合,其值唯一確定表的一行.

2:主鍵不能重復

3:作為主鍵各列都不能為空.

c:外鍵:(foreignkey):表中一列或多列的組合,它本身不是本表的主鍵,而是另外-一個

表的主鍵.[一對多關系]外鍵是兩個表發(fā)生關系一個紐帶.

d:視圖(view):從一個或幾個基本表中根據用戶需要而做成一個虛表.

1:視圖是虛表,它在存儲時只存儲視圖的定義,而沒有存儲對應的數據

2:視圖只在剛剛打開的?瞬間,通過定義從表中搜集數據,并展現(xiàn)給用戶

e:約束(constraint):

對表中各列的取值范圍進行限制,以確保表中數據的合理有效.

f:默認值:(default)

在向表中插入數據時,為沒有指定數據的列提供個默認的數據

g:事務(constran):

1:在關系型數據庫里面一般使用"事務”來處理用戶提交的修改表和數據的操作

2:事務就是詼性完成的一組數據的操作.

3:事務的持征:位于事務中的操作要么全部都做,要么全部取消,從而維護了數據庫中

數據的合理性.

4:關系數據庫中一般按照先寫日志的方法進行事務操作.即:在實施事務之前先將要

進行操作的記錄寫入日志,再進行實際的數據修改.

5:是記錄關系數據修改的情況的筆記.

6:在用戶對數據庫實施之前,sql會把兩種形式的情況寫入日志.

1:實施事務之間的數據狀態(tài).

2:實施事務之后的數據狀態(tài).

當事務由于中途被破壞時,sqlserver會利用日志記錄把數據恢復成實施事務之前的

數據狀態(tài).即撤消事務(回滾),如果事務順利的執(zhí)行則把數據恢復成實施事務之后的狀態(tài)

被稱為(前滾)

h:規(guī)則(rule):同約束一樣,對特定的列進行限制:

單價*數量=總額

i:索引:(index)提供一種無需掃描整張表就能實現(xiàn)對數據快速訪問的途徑.可以使用

索引來優(yōu)化查詢.[用索引可以實現(xiàn)排序]

i:存儲過程(storeprocedure):

一組經過編譯好的可以重復使用的sql代碼.存儲過程是在服務器中執(zhí)行,用戶可以

調用存儲過程并接收存儲過程返回的結果.

1:由于存儲過程是存儲在服務器,所有可以讓每一個客戶重復使用,減少書寫sql代碼

書寫量.

2:由于存儲過程是事先編譯好的sql代代碼,所以在執(zhí)行時,并不做語法檢驗,可以大大提

高sql語句的執(zhí)行效率.

j:觸發(fā)器(trigger):

一種特殊的存儲過程.

1:觸發(fā)器與表相關.

2:當用戶對指定的表進行某種操作時,觸發(fā)器會自動執(zhí)行,去做它里面sql代碼

k:數據類型(datatype)

兩種類型:系統(tǒng)數據類型,用戶自定義數據類型.

系統(tǒng)數據類型:int,float,char,vchar,text[備注,工作簡歷],image[存儲圖像]

1:日志(log):

sqlserver使用日志記載用戶對數據庫進行的一系列的操作.日志是維護數據庫完整性的

重要工具.sqlserver遵守先寫日志再對數據庫進行操作.所以某一天,如果數據庫損壞,但可

以通過日志進行恢復.

第四章sql系統(tǒng)組成

1:sqlserver系統(tǒng)數據庫.

A:master:最重要的一個數據庫.保存了:

服務器的用戶名密碼.

服務器的配置信息

使用的數據類型

錯誤信息

系統(tǒng)或者用戶建立的所有對像

說明:山于master數據庫比較重要所以不要在里面建表,不要修改里面的任何內容.否則會

使

sqlserver

B:tempdb:臨時數據庫

1:記錄所有的臨時表格或者數據.

2:tempdb是一個全局資源,任何連接到到sqlserver都可以使用.

3:該數據庫所放有的數據全部是臨時,這就是說當sqlserver服務停止之后,所有數據將

會消失

C:model數據庫:模型數據庫.

1:是建立新的數據庫一個樣式.

2:當用戶建立一個數據庫的時候,首先要從model數據庫里面復制所有的表.

d:msdb數據庫:

主要被sqlserveragent服務用于操作作業(yè)調度以及管理報警.

供用戶練習用的.

A:pubs:描述一個圖書出版公司建立的數據庫的模型.

B:northwind:描述一貿易公司數據庫模型,一個northwind專門經營世界各地風味食品.

customersorder

2:系統(tǒng)表

A:服務器級系統(tǒng)表:[master數據庫里面]

1:sysdatabases:記錄所有的數據庫的相關信息

2:sysmessages:記錄了系統(tǒng)錯誤和警告信息

3:syslangues:記錄了服務器能夠識別的語言

4:sysconfigures:記錄了服務器配置情況.

5:systype:記錄了服務器所有數據類型.

B:數據庫級系統(tǒng)表:[保存在不同的數據庫里面]

A:sysbojects:所有數據庫的對像的相關資料.[類型:u:表,V:視圖,P:存儲過程

tr觸發(fā)器

B:sysusers:所有數據庫的用戶的信息.

c:syscolumns:所有數據庫表中的列.

3:系統(tǒng)的存儲過程:

1:sphelp表名:查看表的信息:

2:sp_renamedb舊名字,新名字:把數據庫更名.

4:示列數據庫:

pbs,northwind.

第五章sqlserver服務器的管理與使用

1:管理服務器組:

A:新建一個空組:

B:改名,刪除一個組:

2:sqlserver服務器的連接和注冊:

A:配置服務器端和客、戶端的網絡庫:

1:為會么要配置:

2:進行配置:

1:啟用協(xié)議:服務器與客戶端必須一致.

2:命名管道:也是一種協(xié)議,相當于tcp/ip,在網絡流量比較小的使用命名管道比

使用tcp/ip更有效.[namepipes]

3:tcp/ip端口號的設置:默認為1433,可以改,c和s必須要一致.

4:強制使用協(xié)議加密:傳輸的協(xié)議包中的數據都將加密.

5:啟用共享內存:只有服務器和客戶端在同一臺計算機中時使用:

原理:服務器與客戶端共同使用同一個地址內存,這樣服務器與客戶端就像是同一

個屋子的人一樣,可以很好的勾通.

6:別名:給服務器在客戶端換個需要的名字,但是其本質不變.

3:服務器的屬性

查詢分析器的使用:

1:連接:

2:保存:

3:打開:

4:模板:創(chuàng)建一個語句一個范例.

5:在執(zhí)行一組sql語句時,如果該組語句中有一個是錯誤的,則整個語句將不會執(zhí)行.

除非分別執(zhí)行.[與事務無關]

創(chuàng)建和維護數據庫

在這一章里我們要掌握下面的內容:

1:數據庫的邏輯結構:

2:數據庫的物理結構:

3:如何創(chuàng)建數據庫:

4:如何刪除數據庫:

5:如何修改數據庫:

6:如何強制數據脫機

7:快速查看數據庫的內容:

8:附加和分離數據庫。

9:生成數據庫的sql腳本。

10數據庫復制向導:

A:數據庫的邏輯結構:

通常我們在企業(yè)管理器中看到的數據庫和里面的對像都只是數據庫的邏輯結構。也就是它

們并不像在企業(yè)管理器中所看到的那樣的結構去存儲在計算機中。企業(yè)管理器只是為了方便

用戶查看數據和操作數據而在前臺表象上作了一個“虛假”的顯示結構即為數據庫的邏輯結

構。而數據庫中真正的數據是存儲在硬盤中。而且是以文件的形式來保存的。于是有了數據

庫的物理結構。

B:數據庫的物理結構:

既然數據庫里面的所有數據是以文件的形式存儲在硬盤中,那么究竟一個數據庫庫由那樣文

件組成呢?組成一個數據庫的文件由以下三種文件組成:

1:主要數據文件:

作用:主要數據文件包含數據庫的初始信息。記錄數據庫還擁有那些文件,并且用來存儲

數據。如用戶建的表等數據。

特點:每一個數據庫有且只有一個主要數據文件。擴展名為mdf

2:次要數據文件:

作用:次要文件也是和來存儲數據庫中的各類信息的,用戶可以選擇是否需要次要數據文

件。也就是說它是可選的,它的擴展名為ndf

為什么要引入次要數據文件:

1:或許你的主要文件的數據非常龐大,以到于超過所在的硬盤分區(qū)。如果沒有次要數

據文件幫助則用戶添加的數據將不能加入到數據庫里面去。

2:可以為一個數據庫創(chuàng)建多個次要文件,并把這些文件放到不同的硬盤中,既可將一

個數據庫中的數據存儲在多個不同的物理硬盤中。[可以提高查詢效率:以下再作

解釋]

3:日志文件:我們知道由于關系型數據庫尊循“先寫日志再操作”的原則,所有必須有一個

文件來存儲用戶對該數據庫所作的一切的操作的筆記的文件這就是日志文件。擴展名為:Idf.

說明:一個數據庫必須至少有一個日志文件,也可以有多個日志文件。

所有一個數據庫基本上由這個三類文件組成。另外補充一點:

當你創(chuàng)建數據庫并指定一個數據文件或日志文件時,系統(tǒng)會讓你輸入兩種表示形式的文件

名:

一個是不帶路徑的文件名,一個是要帶路徑的文件。它們分別是:邏輯文件名,物理文件名

1:邏輯文件名:用于在sql語句命令中對該文件進行訪問,即不需要指明路徑。

2:物理文件名:是文件實際存儲在磁盤上的文件名,必須包括路徑,指明該文件在磁盤中

的什么位置。

總結:邏輯文件名與物理文件名就像?個房主與房子地址一樣,我們用房子的主人就可以代

表房子本身即:房子的地址。

文件組

文件組:如果一個數據庫有很多文件就不便于管理了,為了管理和分配的目的sqlserver

允許你將多個文件歸納為一同一個組。這樣文件組中的文件就和其它文件組中的文件沒有直

接關系。這就是文件組。

說明:

1:一個數據庫里面必須有且僅有一個主文件組為:primaryfilegroup。用戶可以根據需

要來定義其它文件組。

2:一個文件只能屬于一個文件組,它不能同時屬于兩個文件組。

3:文件組只能夠管理數據文件,也就是日志文件不能放入文件組,因為日志文件是分開

管理的

4:所有建的次要數據文件如果不特別指定組則自動為放入primary組。

為什么要引入文件組:

1:sqlserver對文件組中的每個文件的填充策略:

如果用戶有數據要寫入文件組時(比如用戶建一個表,并指定它屬于的文件組時,之后用戶

對該表加入記錄)sqlserver會采用“按比例'填充的原則:即以屬于該組每個文件的可

用空間來比例來將數據分割并分別寫入每一個文件中。而不是先引寫入第一個文件,第一個

文件寫滿之后再寫第二文件.但是sqlserver對日志文件的數據分配是采用"寫滿為止"的策

略。

理由:

用戶可以在一個數據庫里面建多個數據文件并指定它們的“物理名”為不同的磁盤,然后

再把它們放入一個組中。這樣當用戶在這個組中創(chuàng)建一個表時這個表中的數據將按“比例填

充”方式放入該組中所有的數據文件中,這樣就可以實現(xiàn)把一個表中的數據放入多個磁盤,

即可以實現(xiàn)數據庫的“廣域”存儲

此時如果要對該表進行查詢,則多個磁盤的讀寫磁頭將能夠同時并行的訪問數據,從而加快

數據庫的操作

怎樣使用文件組:

1:大多數的數據庫只需要一個主要數據文件和一個日志文件就中以非常好的運行。

2:如果在創(chuàng)建數據庫之前估計某個對像(如表)以后會占用大量數據則在數據庫創(chuàng)建時,

會在多個磁盤分別建立一個數據文件,然后把們屬于同一個組。然后把該對像放于該組,則

因為多個磁盤能并行操作而加快操作速度。

C:怎么創(chuàng)建數據庫:

1:通過企業(yè)管理器:

2:sql語句:

格式:

createdatabase數據庫名

on

primary

name=,數據文件1的邏輯文件名’,

filename?數據文件1的物理文件名',

size二大小,

maxsize二大小,

filegrowth二大小

name二'數據文件2的邏輯文件名’,

filename='數據文件2的物理文件名’,

size二大小,

maxsize二大小,

filegrowth二大小

),

filegroup用戶自定義文件組名

name='數據文件1的邏輯文件名’,

filename='數據文件1的物理文件名’,

size二大小,

maxsize二大小,

filegrowth二大小

name='數據文件2的邏輯文件名',

filename^數據文件2的物理文件名’,

size=大小,

maxsize=大小,

filegrowth=大小

),

logon

name=,日志文件1的邏輯文件名',

filename^數據文件1的物理文件名',

size=大小,

maxsize=大小,

filegrowth=大小

說明:

1:數據文件名之間不能同名,數據文件名與日志文件名也不能同名。

2:在給一個組加上文件時,每個文件之間用''逗號"隔

3:數據文件與日志文件的分界時不要加逗號。

4:由于日志文件不能放入任何組,所以不要為日志文件設定組。

5:如果不指明組則添加的數據文件都自動放入primary組。

6:必須有一個主數據文件

7:如果數據文件還有較大的空間但是日志文件的空間已占滿則對數據進行的所有更新操作將

都因無法寫入日志而終止。

例如

createdatabasetest

on

primary

(

name=,testT,

filename=,c:\cad\testl.mdf'

size=3,

maxsize=10,

filegrowth=10%

),

(

name='test2,,

filename='c:\cad\test2.ndf'

size=4,

maxsize=10,

filegrowth=12

),

filegrouptes

(

name='test3',

filename二'c:\cad\test3.ndf'

size=3,

maxsize=10,

filegrowth=10%

)

logon

(

name=,testl),

filename=,c:\cad\testl.ldf,

size=3,

maxsize=10,

filegrowth=10%

),

(

name=,test12',

filename='c:\cad\test2.Idf'

size=4,

maxsize=10,

filegrowth=12

)

創(chuàng)建了一個test數據庫,它有一個主數據文件testl,兩個次要數據文件test2,test3,一

個日志文件testl2

其中testl和test2在文件組primary里面,而test3在文件組tes里面.

D:怎么刪除數據庫:

1:通過企業(yè)管理器:

2:sql語句:

格式:dropdatabase數據庫名

說明:

1:數據庫刪除后,數據庫里面的數據文件與日志文件就會被刪除,系統(tǒng)數據庫master關于

該數據庫的信息也被刪除了。

2:建議在刪除數據庫之后立即備份master數據庫。否則你在刪除了一個數據庫之后而后卻

因為某種原.因還原了過去所備份的master數據庫,則會出錯。

3:master,model,msdb,tempdb這四個數據庫不能刪除。

4:如果數據庫正在被使用則不能刪除.

修改數據庫

A:更改數據庫的名字:sql:sprenamedb舊名,新名

說明:

修改數據庫的名字?定要小心,因為客戶端應用程序都是以原先的名字來訪問的。

必須確認沒以任何人連接以數據庫中才可以更名。

B:擴充分配給數據庫的數據文件或日志文件的空間:

你在創(chuàng)建數據時,可以設置數據庫文件的自動增長空間,事實上除了讓sqlserver自動

去擴充之外,還可以人工的方式來擴展數據庫,還可以為已經創(chuàng)立的數據庫增加新的文件。

方法:企業(yè)管理器:數據庫,屬性

說明:在給已經存在數據文件重新分配大小時,分配的大小不能比原來的小。

C:收縮分配給數據庫的數據文件或日志文件.

當你覺得你的數據庫的初始值設定過于大,或者增長方式設置不符合你的業(yè)務,以致使數

據庫產生多余的空間時,就可以收縮數據庫了。

方法:企業(yè)管理器“收縮數據庫”

說明:

1:收縮后文件的最大可用空間:可以指定個數值來決定收縮后文件的可用空間,數

值越大,收縮越小,反之收縮越大。

2:調度:可以讓sqlserver定期來收縮數據庫,從而實現(xiàn)自動化管理。

3:清空文件:清空數據文件或日志文件而該文件中的數據遷移到文件組中的其他文件

中。

4:收縮文件至:將選定的文件收縮到特定的大小。

5:在些時間之后收縮:到了某一時間之后再收縮。[預定義]

思考:能不能通過刪除數據文件或日志文件的方法來收縮數據庫。

D:添加或刪除數據文件和事務日志:

你可以添加數據文件或事務日志文件來擴充數據庫的大小,以可以通過刪除數據文件和事

務日志文件來收縮數據庫。下面著重來講解數據庫文件的刪除:

1:對于數據文件的寫入方式是“按比例”寫入,所以如果用戶要建一個表則該表

所屬的文件組中的任何一個數據文件都將或多或

小的寫入數據。

2:而日志文件的寫入方式是”寫滿為止"的策略來寫入,即只有當第一個日志

文件寫滿了之后才去寫下一個日志,這就是說如果你為一個數據庫建多個日志

文件,有可能有些日志文件是空的。

3:要刪除數據庫文件必須保證數據庫文件里面沒有任何數據。

4:可以得到要刪除數據文件必須首先將它里面的數據遷移動同一個文件組中

的其它文件里面去。

格式:

dbccshrinkfile(數據文件名,emptyfile)

5:方法:數據庫====屬性:

更改數據庫的所有者:

1:什么是所有者:數據庫的創(chuàng)建都就是數據庫的所有者(dbo)

2:數據庫所有者和sa對該數據庫有任何操作權限。

3:數據庫所有者與sa的區(qū)在于sa是全局的,而數據庫所有者是局部的。

4:格式:

sp_changedbowner登錄用戶名

說明:

1:只能夠更改當前數據庫的db。

2:如果指定的登錄名己經是當前數據庫的用戶,則不能更改

更改數據庫的配置:

A:僅僅供數據庫擁有者或者sa能夠使用:

用途:當你作為一名數據庫管理員或數據庫的擁有者時需要改變表的結構時,你不希望別

的用戶來使用該表,可以把此項設置,當你把表的結構改了之后再把它改回來。

sql語句:

sp_dboption'數據庫名','dbouseonly',,true*[false]

B:單用戶:同時間只能夠有?位用戶連接到數據庫來訪問它:

用途:更改數據庫名稱,還原數據庫的時候。

sp-dboption'數據庫名','singleuser','true*[false]

C:只讀:使數據庫只讀。

sp-dboption數據庫名','readonly",'true'[false]

讓某個數據庫脫機(對數據庫進行改名時)

為什么要脫機:

可以強制讓某個數據庫斷開與各個客戶端的連接

usemaster

alterdatabase數據名setofflinewithROLLBACKIMMEDIATE

說明:

1:使數據庫脫機后,如果要使用該數據庫必須要聯(lián)機。(online)

2:經常的操作是:

1):使數據庫脫機。

2):使數據庫聯(lián)機.

3):設置為單用戶。

4):并使用該數據庫

5):做自己的事件

6):還原數據庫的狀態(tài)

作業(yè):你作為一個管理員現(xiàn)在要把windows數據庫更名,但此時已經有四位用戶在使用。

你該怎么辦:

1:首先netsend*"信息”[給每個客戶端發(fā)送信使信息]

2:斷開windows數據庫與所有客戶端的連接[不是關閉sqlserver服務]

3:把數據庫設置為僅供signleuseonly能夠使用

4:把數據庫更名

5:把數據庫設置為普通形式

6:參考下面的代碼:

usemaster

alterdatabase上上setofflinewithROLLBACKIMMEDIATE

usemaster

alterdatabasehhsetonlinewithROLLBACKIMMEDIATE

execsp-dboption'上上','singleuser','true"

execsp_renamedb'上上','下下'

execspdboption'下下','singleuser','false'

快速查看數據庫的內容

1:企業(yè)管理器:

任務板:

A:常規(guī):給出關于數據庫?些詳細資料。

B:表:查看數據庫中各個表的詳細資料。

C:向導:很方便的打開向導和工具來完成操作。

附加和分離數據庫:

目的:就是移動數據庫的位置。

注意:在sql里面沒有復制,剪切,粘貼等命令。

用途:

1:將數據庫移動到其它已經注冊到你的企業(yè)管理器的其它的sqlserver服務器中。

問題:要把服務器www中chen數據庫移動到test服務器中。

比較:

常規(guī)方法:

本方法:先讓chen與www分離,然后再把chen的數據文件和日志全部移動test

服務器中,接著再把www附加到test服務器

2:改變數據庫中數據文件或日志文件的磁盤的目錄:

比如存儲數據或日志文件的空間已不足了時你便要移動數據文件或日志文件的位置到其它

有更大的空間的位置上。

A:數據庫創(chuàng)建之后數據文件和日志文件的位置便不能更改。

B:只有把數據庫分離之后才可以改變。

操作:通過企業(yè)管理器

生成數據庫的sql腳本。

通過生成數據庫的sql腳本我們能夠產生創(chuàng)建現(xiàn)有數據庫各個數據庫對像的sql語句.然后

可以把此腳本再次運行。例能夠產生出一個和原原數據庫有相同結構(不是數據也相同)的

新數據庫。

用途:

1:重新創(chuàng)建一個與某個數據庫結構完全相同的數據庫。

比如:你在服務器A里面建了一個數據庫test,你現(xiàn)在要把test的結構復制到B服務器

里面去(注意:不是數據,僅僅是結構,也就是說對于表而言將不會有數據存在),那么你可

以先中服務器A中生成一個關于test數據庫的sql腳本,然后再在服務器B中去運行。

2:備份一個腳本,以便允許用戶可以重建所有的用戶,角色,登錄與權限。

比如:你好不容易在某個服務器上創(chuàng)立了一些數據庫用戶或角色,或登錄或權限。這個時

候你可以生成?個你當前創(chuàng)建這些對像的腳本,如果以后有人惡意刪除了這些對像,則可以

通過把這些代碼重新運行一次,重而免去重新創(chuàng)建這些對像的麻煩。

3:更新數據庫開發(fā)代碼。

比如你可以在生成sql腳本的基礎上,再對源代碼進行修改,從而可以在源數據庫的基礎上

擴展一些功能

方法:企業(yè)管理器:

說明:

1:為每個對像創(chuàng)建create命令:為用戶在常規(guī)選卡里面選擇的各對像創(chuàng)建create

語句。

2:生成全部相關腳本:生成在常規(guī)選卡中選中的與之相關的對像.

比如:如果你在常規(guī)選項卡里只選擇了視圖,而沒選擇了表,當你運行這種sql代碼就會出

錯。因為視圖需要表支持。如果選中些項則sql會自動將支持視圖的相關對像一起創(chuàng)建。

3:在腳本中包含說明性的標題:在生成代碼的同時,加上一些擁有說明性的文字

4:編寫數據庫腳本:要生成數據庫的代碼。

5:編寫數據庫的用戶和角色腳本:要生成數據庫的用戶和角色的代碼。

6:編寫sqlserver登錄腳本:要生成服務器登錄的腳本。

7:編寫對像級別權限的腳本:為你在“常規(guī)”頁面中選取的各個數據庫對像生成權限設

置sql代碼

題目:

1:在服務器A里面建了一個數據庫test,數據庫test有一個表tablel,table2,view(來自

于tablel).現(xiàn)在要把test的結構復制到服務器B中,且讓B中不包含table2的結構。

2:在服務器A里面建了一個數據庫test,建了兩個表tablel,table2,兩個視圖

viewl(來自于tablel),view2(來自于table2)。現(xiàn)在由于意外刪除了全部的對像,現(xiàn)在

想重新得到兩個視圖。

3:有服務器A里面建了一個數據庫test,test數據庫里面有兩個表。tabel,table2,然后

建了兩個用戶

a,b,一個角色c它們的權限都能夠對tablel,table2進行select操作?,F(xiàn)在由于意外刪

除了用戶和角色。

現(xiàn)在要求恢復。

4:在服務器A里面建了一個登錄用戶abc,能夠訪問數據庫chen.現(xiàn)在由于意外刪除了該登

錄用戶。現(xiàn)在

要求恢復。

數據庫復制向導

利用數據庫復制向導,我們可以很輕易地把一個服務器的數據庫復制到另外一個服務器中。

1:選擇是復制服務器的登錄用戶:

A:包運行時檢測到的所有登錄:將要復制的數據庫所在的服務器全部登錄帳戶復制到另外

一個服務器中

B:僅由數據庫使用的登錄:只復制“要復制的數據庫”使用的登錄的部分帳戶。

2:選擇master數據庫里面的共享存儲過程:

A:由包運行時檢測到的所有的存儲過程:將把要復制的數據庫所有服務器中master數

據庫里面的存儲過程都復制到目的服務器所在的master數據庫中。

B:用戶選定的存儲過程;可以決定要復制的數據庫所有服務器中master數據庫里面的

存儲那些要復制那些不要復制.

下面兩項一樣的

問題:

1:sqlserver中那個系統(tǒng)數據庫不需要備份?

2:在什么情況下應立即備份master數據庫。

3:范例數據庫pubs是由主要數據文件pubs.mdf利日志文件pubs-log.Idf所組成。如果要

改變它們的存儲位置應該怎么辦

數據庫作業(yè)練習:

1:創(chuàng)建一個數據庫為windows,有一個主要數據文件,windows,和兩個次要數據文件

windowsdatal,windowsdata2.位于

key組,和一個日志文件windowslog

2:刪除norwind數據庫(說明:什么情況下不能刪除該數據庫)

3:把windows數據庫改名為win

4:使用兩種方法把win數據庫擴充2MB空間

5:刪除windowsdatal文件,使win數據庫縮小

6:新建一個登錄陳文杰(通過企業(yè)管理器)

7:把陳文杰改為win的db。

8:新建兩個登錄(windows!.,windows2)

9:使用這兩個用戶登錄服務器時、能夠訪問win數據庫

10:設置數據庫配置,使只有sa,和win的dbo能夠訪問win數據庫.

11:設置數據庫使只有windows1能夠訪問win數據庫

12:使數據庫恢復常態(tài)

13:以sa,windowsl,windows2通過查詢分析器來登錄服務器并使用win數據庫

14:讓sa強制斷開與windows1和windows2的連接后,并讓windows!,和windows2始終不

能連上win

15:再次使數據庫的名字改為winpro

16:把數據庫winpro復制一份為winprol(兩種方法)

16:把數據庫winpro的數據文件和日志文件改變路徑

17:為了備份數據庫,創(chuàng)建關于winpro的一份sql腳本

18:刪除winpro,并以sa打開查詢分析器,重新生成winpro的數據庫結構

創(chuàng)建和維護表(tables)

在這一章里,我們要學習以下幾點內容

1:表的結構:

2:創(chuàng)建表:

3:自動編號字段

4:活用用戶定義數據類型:

5:創(chuàng)建計算字段:

6:快速查看、添加、修改與刪除數據記錄

7:更改表的結構

8:更改表的名稱:

9:更改表的所有者

10:刪除表

11:用戶表與臨時表與系統(tǒng)表

A:表的結構:

表的結構基本決定了表擁了那些字段名、使用的數據類型、

1:字段名:(field)

1)字段名最長可達128個字符

2)同一個表中字段名絕對不能重復

2:長度、精度和小數位數,NULL值。

1)長度:指字段所能容納的最大數據量。對于不同類型的數據,長度對字段的意義可

能有些不同

對于字符型數據類型而言:長度代表字段所能容納的字符的數目,因此它會限

制用戶所能輸入的的文本長度[長度可以修改]

二:對于數值型數據而言:長度則代表字段使用多少個字節(jié)來存放數據,它決定了

字段所能存放的最大數最小數[長度固定不能更改]:

比如:int4字節(jié):=4*8=32位,則最大的數為:-231-----231-1

注意:tinyint除外:(0一255)

商品編號:100

商品名;10個漢字

單價:1000,保留兩位小數

庫存量:200

2)精度:一般精度是相對于小數而言,表示數中數字的個數。

3)小數位數:則數字小數點后數字的位數。

比如:1234.678其精度是:7(不包括小數點),小數位數是:3

說明:有些數據類型精度,小數位數都不能改,有些可以改。

decimal,numeric

2:數據類型:(datatype)

特殊的類型:char,varchar的區(qū)別,精確數據類型:decimal,numeric[都可以指定小

數數位數和精度]

image,money[固定保留四位小數],datatime,bigint,intsmal1int

tinyint

3:NULL值:

1:NULL值并不等于數值0,空格,它是虛無值。

2:NULL值是說此字段中的數據是否可以是末知的或末定義的,如果允許為NULL則該

字段的數據是充許末知,否則只能是已知的

3:快捷方式:ctrl+0

B:創(chuàng)建表:

1:通過企業(yè)管理器:

1:添加或插入字段:

2:刪除字段:

3:表的屬性窗口:A:所有者[該表所在的數據庫里必須有用戶],表名、表文件組,

備注,是否為空

4:描述,默認值,精度,小數位數,標識,標識種子,標識遞增量。[如果把某一

個列定義成為標識列,則該列不能編輯]

說明:

一個數據庫包括表最多只能夠有232-1方個對像

每一個表最多可以擁有最多1024個字段

2:通過sql語句。

格式:

createtable表名

(

列名1數據類型(長度)notNULL[NULL],

列名2數據類型(長度)notNULL[NULL],

)

[on][放入指定的文件組]

說明:

1:對于字符型要指明長度比如:職工號char(20),姓名vchar(20)

2:對于除decimal,numeric(6,2)以外的數值型類型,不需要指明指定長度。比如:基

本工資int

單價FLOAT

3:可以對每個字段指定是否充許為空,如果省略則可以為空。[notnull]

4:可以指定把創(chuàng)建的表放入一個文件組,如果省略則自動放入primary組。[該組必須

存在]

自動編號

說明:

1:自動編號的字段類型只能是以下幾種:int字樣的數據

2:如果把某一個字段設置為自動編號,則用戶不能去更改里面的內容

3:每一個表只能擁有一個自動編號字段

活用用戶自定義類型

1:為什么要使用用戶自定義類型:

理由:有時候為了建多個表,而這些表中都具有相同類型相同格式的某一種系

統(tǒng)數據類型。如果每次建一個表都要去設置很不劃算,可以引入用戶

自定義類型。

2:怎么定義或使用用戶自定義類型:

A:通過企業(yè)管理器:

1):將用戶類型指定某個規(guī)則,則使用該類型的列,都將遵守該規(guī)則。

2):將用戶類型指定某個默認值,則使用該類型的列,都將有了該默認

3:刪除用戶自定義類型:

1:顯示相關性:

A:單右一>相關性:只能看到該類型被那些表使用,但不能知道被表的

那些字段使用。

B:單右-->屬性一>使用位置:可以看到該類型被那些表的那些字段使

用了

2:如果該數據類型被其它對像使用,則不充許刪除

說明:

1:在某一個數據庫里創(chuàng)建的用戶自定義數據類型只能夠被該數據庫的對像

使用。不能被其它數據使用。

2:問題:如何創(chuàng)建一個數據類型可以讓新建的數據庫都可以使用?

創(chuàng)建計算字段:

計算字段:計算字段不是表中建的字段,而是由表中其它字段通過計算而得來的。

比如:單價*數量=銷售量

1:為什么要創(chuàng)建計算字段:

1:怎么創(chuàng)建計算字段:創(chuàng)建表的時候才能夠創(chuàng)建計算型字段

A:通過sql語句:

比如:

createtableww

(

商品名vchar(lO),單價float,銷售量int,總金額as單價*銷售量

)

B:格式為:計算字段名as表中字段表達式。

C:通過企業(yè)管理器:公式列中進行

注意:計算字段也要以參與查詢,但不能更新

快速查看、添加、修改、刪除數據記錄

1:查看:打開表。

2:添加:直接加。

3:刪除數據:刪除一行,刪除多行

4:打開表,單右:菜單

更改表的結構:

1:通過企業(yè)管理器:

2:使用sql語句

格式:

1:修改原有字段的數據類型

altertable表名

altercolumn列名新的數據類型

說明:

1:一次只能修改一個字段的數據類型。

2:不能修改計算字段,或使用在計算字段中的列。

上述命令只能夠修改數據類型不能修改字段名稱。要修改字段名稱可以用:

sp_renamecolumn的列名,格式:

sp_rename'表名.舊列名','新列名','column'

2:在原有表的基礎上添加新的字段。

altertable表名

add數據的字段名數據類型[添加時,沒有column關鍵字]

可以一次添加多個字段,字段與字段之間用逗號隔開

3:刪除原有表的字段:

altertable表名

dropcolumn列名[刪除時,需要column關鍵字

1:可以一次刪除多個字段,字段與字段之間用逗號隔開

2:可以刪除計算字段,但不能刪除使用在計算字段中的列。

更改表的名稱

1:企業(yè)管理器:

2:sql語句:

格式:

sp_rename舊表名,新表名

說明:

1:如果一個表被某個或多個對像引用,則不要改名,否則會使這些對象不可用。

2:不要對系統(tǒng)表改名,這有可能會使系統(tǒng)損壞

更改表的所有者:

1:通過企業(yè)管理器:

2:sql格式:

spchangeobjectsowner'舊擁有者.表名‘,’新的數據庫用戶’

刪除表

1:通過企業(yè)管理器:

1:刪除前的準備:查看有那些對像在引用些表

2:刪除:

2:sql語句:

格式:

droptable表名

可以一次性刪除多個表,表名和表名之間用逗號隔開

用戶表臨時表系統(tǒng)表

sqlserver把整個表分成三種類型:用戶表,系統(tǒng)表,臨時表。

用戶表和系統(tǒng)一已經熟悉。

臨時表:

什么是臨時表:就是臨時存放數據的地方,一亙不使用時會自動刪除。

為什么要使用臨時表:有時候在進行數據操作時,希望產生一些階段性或者過濾性的數據,

這些數據只是暫時使用,而當工作結束時.,我們希望它們能自動刪除,而不是人為去刪除。

這個時候我們就需要臨時表。

臨時表的分類:

1:本地臨時表:

創(chuàng)建本地臨時表:當你創(chuàng)建本時,在表名字前面加上號,則這個表就成為本地臨時表?

特點:本地臨時表只有創(chuàng)建它的用戶可以訪問它,其它用戶將不能訪問,而且一旦這位用

戶斷開與sqlserver的連接,本地臨時表會自動刪除。

2:全局臨時表:

創(chuàng)建全局臨時表:當你創(chuàng)建本時,在表名字前面加上"##"號,則這個表就成全局臨時表。

特點:當一個用戶創(chuàng)建一個全局臨時表時,其它連接到sqlserver服務器的用戶都可以使

用,當創(chuàng)建者與服務器斷開后,sqlserver并不會立即刪除該用戶所創(chuàng)建的全局臨時表,而

是會去檢查當前還沒有別的用戶的作業(yè)在訪問該表,如果有,則暫時不刪除全局臨時表,但

是不充許用戶再去訪問它,直到在sqlserver服務器再沒有關于該表的作業(yè)時,才刪除。

設計數據完整性

本章主要學習以下內容:

1:什么是數據完整性

2:數據完整性的分類

3:用約束實施完整性

4:用主鍵實施完整性

5:用unique約束實施完整性

6:用check約束實施完整性

7:使用外鍵實施完整性

8:使用規(guī)則

9:使用默認值

10:使用identity標識列

什么是數據完整性

數據庫中的數據的正確性和相容性。設計數據庫的完整性的目的是為了防止數據庫中存

在不符合語義的數據,防止錯誤信息的輸入主要包含以下幾個方面的內容

A:數據類型必須正確。比如:一個姓名決不可能是數值型

B:數據值必須處于正確的范圍內:如工人的年齡應該是20——50歲之間

C:數據的存在必須能夠確保同?表格數據之間的和諧關系:

列如:已存在一個職工編號為01的職工,則不充許出現(xiàn)另外一個01的職工

D:數據的存在必須能夠確保維護不同表格的數據之間的和和諧關系:

歹IJ如:work表中有某個職工屬于某個部門,則部門表也應該對這個部門作了記錄

數據完整性的分類:

1:實體完整性:

實體完整性的基本思想是標識數據中存放的每一個實體。每一個實體都要求保持惟一性

例如:

有work表:職工號,姓名,性別....在這個表中要使用每個工人都不相同可以設置職工

號為"主鍵”

2:值域完整性:

表中的每個字段取值必須符合邏輯:比如:性別只能是男或女,年齡不能為負數,職工號

決不能為null

3:引用完整性:

引用完整性是在插入或刪除數據時,維護表格間數據一致性的手段。例如:

職工工資表:職工住址表

職工號職稱基本工資職工號姓名性別地址

01經理100001張三男北京

02廠長150002李四女南京

在職工工資表中增加一個新的職工時,為了保證“職工工資表"與“職工住址表''的對應關系

一定也要在“職工住址表”中添加相應的記錄

若要刪除職工工資表中“01”的這個職工時,也要對應地在"職工住址表"中刪除"01”這個職工

4:用戶自定義完整性

用戶自定義完整性主要是體現(xiàn)實際運用的業(yè)務規(guī)則,例如:

規(guī)定"基本工資”>100并且<6000等。再如:規(guī)定姓名中不許出現(xiàn)有"張"姓等

sqlserver實施數據完整性的途徑

sqlserver主要使用三種方式來實施數據完整性它們是:

使用約束來實施數據完整性,使用規(guī)則來實施數據完整性,使用默認值,使用標識列

A:使用約束來實施數據完整性

約束(constraint)的用途是限制輸入到表中的值的范圍。sqlserver根據不同的用途提供了

多種約束

1:primarykey[主鍵]約束

2:foreignkey[外鍵]約束

3:unique[惟一]約束

4:check[核查]約束

約束可以分為表級約束和列約束兩種。

列級約束:列級約束是行定義的一部分,只能應用于一列上:

表級約束:表級約束是定義獨立于列的定義,可以應用在一個表中的多列上。下面分別講解

primarykey約束

1:primarykey約束利用表中的一列或多列數據來惟一地標識一個記錄。在表中絕對不充許

有主鍵相同的行存在,受主鍵約束的列決不能為null值,?個表只能有?個主鍵對主鍵操

作的方式有三種

A:在創(chuàng)建表格時定義主鍵,主鍵是定義表格的一部分。

格式為:

createtable表名

(

列名1數據類型1,

列名2數據類型2,

[constraint約束名]primarykey(列名1,列名2...列名n)

)

比如:createtableww

(

職工編號varchar(10),

姓名varchar(10),

primarykey(職工編號)

)

說明:

可以省略了〃constraint約束名〃,系統(tǒng)會自動加上去.但建議用戶取一個名字。因為如果

以后要刪除這個約束時「將因不知道該約束的名而沒有辦法刪除

創(chuàng)建表級主鍵約束。

createtable班級學生

(

班級varchar(10)notnull,

學號varchar(10),notnul1

姓名varchar(10),

constrainta[約束名]primarykey(班級,學號)

)

B:在一個沒有定義主鍵的表上添加?個主鍵

格式:

altertable表名

add[contraint約束名]

primarykey(列名L,列名n)

列如:

先定義一個表work

createtablework

(

職工號varchar(10)notnull,

姓名varchar(10),

性別varchar(10)

)

然后再執(zhí)行:

altertablework

add[constraint職工號]

primarykey(職工號)

試定義一個表

createtable班級學生

(

班級varchar(10)notnull,

學號varchar(10),notnull

姓名varchar(10),

)

然后以班級和學號建一個表級主鍵:

altertable班級學生表

add[constraint班級學號]

primarykey(班級,學號)

說明:當在一個已經存放了數據的表上增加主鍵時,sqlserver會自動對表中的數據進行檢

查,以確保這些數據能否滿足主鍵約束。當向不符合主鍵要求的表中增加主鍵時.,sqlserver

會返回錯誤信息并拒絕加入主鍵.

試一試:

createtable職工管理

(

職工編號,varchar(10),

姓名,varchar(10),

性別varchar(10)

)

再執(zhí)行:

altertable職工管理

addconstraint職工號primarykey(職工號)

C:修改或刪除表上已建立的主鍵

說明:

1:修改表上已建立的主鍵時,只能先刪除原先的主鍵后再重新建立一個新的主鍵

2:刪除主鍵的格式:altertable表名drop主鍵名

3:當主鍵被別的外鍵作用時,不充許刪除主鍵婁將引用主鍵的外鍵刪除。

把workl表與部門表作一個外鍵。

把workl的職工號作為主鍵,把部門表的部門編號作為主鍵

主鍵表:外鍵表

部門表workl

試著去執(zhí)行語句:altertable部門droppk一部門[看能否成功]

通過企業(yè)管理器:添加,刪除,修改:主鍵

使用unique約束

unique約束是用來確保不受主鍵約束列上的數據的惟?性。unique與primarykey的區(qū)

別在于:

1:unique約束主要用于非主鍵的一列或多列上要求數據惟一.

2:unique約束充許該列上存在NULL的值,而主鍵決不充許出現(xiàn).

3:可以在一個表創(chuàng)建多個unique約束,而在一個表上只能夠設置一個主鍵

對unique的執(zhí)行操作方式也有3種

1:在創(chuàng)建表格時定義

createtable表名

列名1數據類型

列名2數據類型

unique(列1,列2....列n)

例如:

createtable商品

商品編號varchar(10),

商品名varchar(10),

庫存量int,

單價float,

constraint商品名unique(商品名),

constraint商品編號primarykey

溫馨提示

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

評論

0/150

提交評論