版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) n數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都存放在按行與列格式組織數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都存放在按行與列格式組織的表中的表中,數(shù)據(jù)類(lèi)型是數(shù)據(jù)的一種屬性,決定數(shù)據(jù)存數(shù)據(jù)類(lèi)型是數(shù)據(jù)的一種屬性,決定數(shù)據(jù)存儲(chǔ)的空間和格式儲(chǔ)的空間和格式.n數(shù)據(jù)類(lèi)型可以為對(duì)象定義數(shù)據(jù)類(lèi)型可以為對(duì)象定義4個(gè)屬性:個(gè)屬性:n對(duì)象包含的數(shù)據(jù)種類(lèi)。對(duì)象包含的數(shù)據(jù)種類(lèi)。n所存儲(chǔ)值占有的空間(字節(jié)數(shù))和數(shù)值范圍。所存儲(chǔ)值占有的空間(字節(jié)數(shù))和數(shù)值范圍。n數(shù)值的精度
2、(僅適用于數(shù)值類(lèi)型)。數(shù)值的精度(僅適用于數(shù)值類(lèi)型)。n數(shù)值的小數(shù)位數(shù)(僅適用于數(shù)值類(lèi)型)。數(shù)值的小數(shù)位數(shù)(僅適用于數(shù)值類(lèi)型)。nSQL server 2005提供的數(shù)據(jù)類(lèi)型可以歸納為:數(shù)提供的數(shù)據(jù)類(lèi)型可以歸納為:數(shù)值類(lèi)型、字符類(lèi)型、日期時(shí)間類(lèi)型、貨幣類(lèi)型和值類(lèi)型、字符類(lèi)型、日期時(shí)間類(lèi)型、貨幣類(lèi)型和其他數(shù)據(jù)類(lèi)型。其他數(shù)據(jù)類(lèi)型。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.1 數(shù)值類(lèi)型數(shù)值類(lèi)型 1. 精確數(shù)值類(lèi)型精確數(shù)值類(lèi)型精確數(shù)值類(lèi)型用來(lái)存儲(chǔ)沒(méi)有小數(shù)位的整精確數(shù)值類(lèi)型用來(lái)存儲(chǔ)沒(méi)有小數(shù)位的整數(shù)或定點(diǎn)小數(shù)。使用任何算術(shù)運(yùn)算符數(shù)或定點(diǎn)小數(shù)。使用任何算術(shù)運(yùn)算符都可以操作這些
3、數(shù)據(jù)類(lèi)型中存儲(chǔ)的數(shù)都可以操作這些數(shù)據(jù)類(lèi)型中存儲(chǔ)的數(shù)值,而不需要任何特殊處理。下表列值,而不需要任何特殊處理。下表列出了出了SQL Server支持的精確數(shù)值類(lèi)型。支持的精確數(shù)值類(lèi)型。類(lèi)別類(lèi)別數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型字 節(jié)字 節(jié)數(shù)數(shù)取值范圍取值范圍Integerbigint8- -2E632E63- -1int4- -2E312E31- -1smallint2- -32 76832 767tinyint10255Exact numricdecimal(p,s) 517- -10E38+110E38- -1numeric(p,s)517- -10E38+110E38- -1清華大學(xué)出版社. SQL Ser
4、ver 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.1 數(shù)值類(lèi)型數(shù)值類(lèi)型 2. 近似數(shù)值類(lèi)型近似數(shù)值類(lèi)型n 近似數(shù)字?jǐn)?shù)據(jù)類(lèi)型可以存儲(chǔ)十進(jìn)制值,用于表示近似數(shù)字?jǐn)?shù)據(jù)類(lèi)型可以存儲(chǔ)十進(jìn)制值,用于表示浮點(diǎn)數(shù)據(jù)。此類(lèi)型的數(shù)據(jù)不一定有精確的表示,浮點(diǎn)數(shù)據(jù)。此類(lèi)型的數(shù)據(jù)不一定有精確的表示,可具體分為可具體分為float和和real兩種。兩種。n SQL Server 2005存儲(chǔ)數(shù)據(jù)時(shí)對(duì)小數(shù)點(diǎn)右邊的數(shù)進(jìn)行四舍五存儲(chǔ)數(shù)據(jù)時(shí)對(duì)小數(shù)點(diǎn)右邊的數(shù)進(jìn)行四舍五入。只有在精確數(shù)據(jù)類(lèi)型不夠大,不能存儲(chǔ)數(shù)值時(shí),才考入。只有在精確數(shù)據(jù)類(lèi)型不夠大,不能存儲(chǔ)數(shù)值時(shí),才考慮使用慮使用float。下表列出了。下表列出了SQL Server支持的近
5、似數(shù)字?jǐn)?shù)據(jù)支持的近似數(shù)字?jǐn)?shù)據(jù)類(lèi)型類(lèi)型 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型字節(jié)數(shù)字節(jié)數(shù)取值范圍取值范圍float(p)4/8- -2.23E3082.23E308real4- -3.4E383.4E38清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.2 字符類(lèi)型字符類(lèi)型 n字符類(lèi)型是用于存儲(chǔ)字符型數(shù)據(jù)的。該數(shù)據(jù)類(lèi)型可以使字符類(lèi)型是用于存儲(chǔ)字符型數(shù)據(jù)的。該數(shù)據(jù)類(lèi)型可以使用用ASC編碼或編碼或Unicode編碼。編碼。nASC編碼要求用編碼要求用8個(gè)二進(jìn)制位來(lái)表示字母的范圍。個(gè)二進(jìn)制位來(lái)表示字母的范圍。nUnicode標(biāo)準(zhǔn)使用標(biāo)準(zhǔn)使用2個(gè)字節(jié)來(lái)表示每個(gè)字符。在個(gè)字節(jié)來(lái)表示每個(gè)字符。在 Uni
6、code標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。符。n在在SQL server 2005中,中,Unicode數(shù)據(jù)以數(shù)據(jù)以 nchar、nvarchar 和和 ntext 數(shù)據(jù)類(lèi)型存儲(chǔ)。定義一個(gè)字符數(shù)據(jù)類(lèi)型時(shí),指數(shù)據(jù)類(lèi)型存儲(chǔ)。定義一個(gè)字符數(shù)據(jù)類(lèi)型時(shí),指定該列允許存儲(chǔ)的最大字節(jié)數(shù)。定該列允許存儲(chǔ)的最大字節(jié)數(shù)。n下表列出了下表列出了SQL Server支持的字符數(shù)據(jù)類(lèi)型。支持的字符數(shù)據(jù)類(lèi)型。 數(shù)據(jù)類(lèi)型字節(jié)數(shù)字符數(shù)char(n)18 000最多8 000個(gè)字符varchar(n)18 000最多8 000個(gè)字符varchar(max)最大2 G最多1 073
7、741 824個(gè)字符text最大2 G最多1 073 741 824個(gè)字符nchar(n)28 000最多4 000個(gè)字符nvarchar(n)28 000最多4 000個(gè)字符nvarchar(max)最大2 G最多536 870 912個(gè)字符ntext最大2 G最多536 870 912個(gè)字符清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.3 日期時(shí)間類(lèi)型日期時(shí)間類(lèi)型 n日期時(shí)間類(lèi)型數(shù)據(jù),可具體分為日期時(shí)間類(lèi)型數(shù)據(jù),可具體分為datetime與與smalldatetime兩種類(lèi)型。兩種類(lèi)型。datetime和和smalldatetime數(shù)據(jù)類(lèi)型在計(jì)算機(jī)內(nèi)部是作為整數(shù)
8、存儲(chǔ)的。數(shù)據(jù)類(lèi)型在計(jì)算機(jī)內(nèi)部是作為整數(shù)存儲(chǔ)的。ndatetime類(lèi)型存儲(chǔ)為一對(duì)類(lèi)型存儲(chǔ)為一對(duì)4字節(jié)整數(shù),它們一起表字節(jié)整數(shù),它們一起表示自示自1753年年1月月1日午夜日午夜12點(diǎn)鐘經(jīng)過(guò)的毫秒數(shù)。點(diǎn)鐘經(jīng)過(guò)的毫秒數(shù)。nsmalldatetime類(lèi)型存儲(chǔ)為一對(duì)類(lèi)型存儲(chǔ)為一對(duì)2字節(jié)整數(shù),它們一字節(jié)整數(shù),它們一起表示自起表示自1900年年1月月1日午夜日午夜12點(diǎn)鐘經(jīng)過(guò)的分鐘數(shù)。點(diǎn)鐘經(jīng)過(guò)的分鐘數(shù)。n下表列出了下表列出了SQL Server2005支持的日期和時(shí)間數(shù)據(jù)支持的日期和時(shí)間數(shù)據(jù)類(lèi)型。類(lèi)型。日期類(lèi)型日期類(lèi)型字節(jié)數(shù)字節(jié)數(shù)取值范圍取值范圍datetime8從從1753-1-1到到9999-12-31
9、,精度為,精度為3.33毫秒毫秒smalldatetime 4從從1900-1-1到到2079-12-31,精度為,精度為1分鐘分鐘清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.4貨幣類(lèi)型貨幣類(lèi)型 n貨幣數(shù)據(jù)類(lèi)型旨在存儲(chǔ)精確到貨幣數(shù)據(jù)類(lèi)型旨在存儲(chǔ)精確到4個(gè)小數(shù)位個(gè)小數(shù)位的貨幣值。下表列出了的貨幣值。下表列出了SQL Server支持的支持的貨幣數(shù)據(jù)類(lèi)型。貨幣數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 字節(jié)數(shù)字節(jié)數(shù) 取值范圍取值范圍money8 - -922 337 203 685 477.5808922 337 203 685 477.5807smallmoney4 - -214
10、748.3648214 748.3647清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.5 其他數(shù)據(jù)類(lèi)型其他數(shù)據(jù)類(lèi)型 1. 二進(jìn)制數(shù)據(jù)類(lèi)型二進(jìn)制數(shù)據(jù)類(lèi)型 SQL Server 2005提供了提供了3種二進(jìn)制數(shù)據(jù)類(lèi)型,種二進(jìn)制數(shù)據(jù)類(lèi)型,允許在一個(gè)表中存儲(chǔ)各種數(shù)量的二進(jìn)制數(shù)允許在一個(gè)表中存儲(chǔ)各種數(shù)量的二進(jìn)制數(shù)據(jù)。下表列出了據(jù)。下表列出了SQL Server支持二進(jìn)制數(shù)支持二進(jìn)制數(shù)據(jù)類(lèi)型。據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型字節(jié)數(shù)binary(n)18 000 varbinary(n)18 000 varbinary(max)最多2 Gimage最多2 G清華大學(xué)出版社. SQL Server
11、 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.5 其他數(shù)據(jù)類(lèi)型其他數(shù)據(jù)類(lèi)型 2. 特殊數(shù)據(jù)類(lèi)型特殊數(shù)據(jù)類(lèi)型 nSQL Server 2005還提供了還提供了7種特殊數(shù)據(jù)類(lèi)型,包括種特殊數(shù)據(jù)類(lèi)型,包括cursor、sql_variant、timestamp、table、uniqueidentifier與與xml。ntimestamp 用于表示用于表示SQL server 活動(dòng)的先后順序,以二活動(dòng)的先后順序,以二進(jìn)投影的格式表示。進(jìn)投影的格式表示。timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日數(shù)據(jù)與插入數(shù)據(jù)或者日期和時(shí)間沒(méi)有關(guān)系。期和時(shí)間沒(méi)有關(guān)系。nbit 由由 1 或者或者 0 組成,當(dāng)表示真或者假、組成,當(dāng)表
12、示真或者假、on 或者或者 off 時(shí),時(shí),使用使用 bit 數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型。nuniqueidentifier 由由 16 字節(jié)的十六進(jìn)制數(shù)字組成,表示字節(jié)的十六進(jìn)制數(shù)字組成,表示一個(gè)全局唯一的。一個(gè)全局唯一的。n當(dāng)表的記錄行要求唯一時(shí),當(dāng)表的記錄行要求唯一時(shí),GUID是非常有用。是非常有用。 具體作用參看表具體作用參看表3.7清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.5 其他數(shù)據(jù)類(lèi)型其他數(shù)據(jù)類(lèi)型 3. 自定義數(shù)據(jù)類(lèi)型自定義數(shù)據(jù)類(lèi)型 nSQL Server 2005允許用戶(hù)根據(jù)自己的需要自定義允許用戶(hù)根據(jù)自己的需要自定義數(shù)據(jù)類(lèi)型(數(shù)據(jù)類(lèi)型(UDT),并可以
13、用此數(shù)據(jù)類(lèi)型來(lái)聲明),并可以用此數(shù)據(jù)類(lèi)型來(lái)聲明變量或列。變量或列。n自定義類(lèi)型提供了一種可以將更能清楚地說(shuō)明對(duì)自定義類(lèi)型提供了一種可以將更能清楚地說(shuō)明對(duì)象中值的類(lèi)型的名稱(chēng)應(yīng)用于數(shù)據(jù)類(lèi)型的機(jī)制,這象中值的類(lèi)型的名稱(chēng)應(yīng)用于數(shù)據(jù)類(lèi)型的機(jī)制,這使程序員或數(shù)據(jù)庫(kù)管理員能夠更容易地理解用該使程序員或數(shù)據(jù)庫(kù)管理員能夠更容易地理解用該數(shù)據(jù)類(lèi)型定義的對(duì)象的用途。數(shù)據(jù)類(lèi)型定義的對(duì)象的用途。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.1表的類(lèi)型表的類(lèi)型 1. 按照表的用途分類(lèi)按照表的用途分類(lèi)(1)系統(tǒng)表:用于維護(hù))系統(tǒng)表:用于維護(hù)SQL Server 2005服務(wù)器和數(shù)據(jù)庫(kù)正服務(wù)器和數(shù)
14、據(jù)庫(kù)正常工作的只讀數(shù)據(jù)表。系統(tǒng)表存在于各個(gè)數(shù)據(jù)庫(kù)中,由常工作的只讀數(shù)據(jù)表。系統(tǒng)表存在于各個(gè)數(shù)據(jù)庫(kù)中,由DBMS系統(tǒng)自動(dòng)維護(hù)。系統(tǒng)自動(dòng)維護(hù)。(2)用戶(hù)表:由用戶(hù)自己創(chuàng)建的、用于各種數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng))用戶(hù)表:由用戶(hù)自己創(chuàng)建的、用于各種數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)的表。開(kāi)發(fā)的表。(3)已分區(qū)表:已分區(qū)表是將數(shù)據(jù)水平劃分為多個(gè)單元的表,)已分區(qū)表:已分區(qū)表是將數(shù)據(jù)水平劃分為多個(gè)單元的表,這些單元可以分布到數(shù)據(jù)庫(kù)中的多個(gè)文件組中。在維護(hù)整這些單元可以分布到數(shù)據(jù)庫(kù)中的多個(gè)文件組中。在維護(hù)整個(gè)集合的完整性時(shí),使用分區(qū)可以快速而有效地訪(fǎng)問(wèn)或管個(gè)集合的完整性時(shí),使用分區(qū)可以快速而有效地訪(fǎng)問(wèn)或管理數(shù)據(jù)子集,從而使大型表或索引
15、更易于管理。理數(shù)據(jù)子集,從而使大型表或索引更易于管理。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.1表的類(lèi)型表的類(lèi)型 2. 按照表的存儲(chǔ)時(shí)間分類(lèi)按照表的存儲(chǔ)時(shí)間分類(lèi)(1)永久表:包括)永久表:包括SQL Server 2005的系統(tǒng)表和用戶(hù)數(shù)據(jù)庫(kù)的系統(tǒng)表和用戶(hù)數(shù)據(jù)庫(kù)中創(chuàng)建的數(shù)據(jù)表,該類(lèi)表除非人工刪除,否則一直存儲(chǔ)在中創(chuàng)建的數(shù)據(jù)表,該類(lèi)表除非人工刪除,否則一直存儲(chǔ)在介質(zhì)中。介質(zhì)中。(2)臨時(shí)表:臨時(shí)表是臨時(shí)使用的表結(jié)構(gòu)。臨時(shí)表分為全局)臨時(shí)表:臨時(shí)表是臨時(shí)使用的表結(jié)構(gòu)。臨時(shí)表分為全局的臨時(shí)表和局部臨時(shí)表,并且可以由任何用戶(hù)創(chuàng)建。所有的臨時(shí)表和局部臨時(shí)表,并且可以由任
16、何用戶(hù)創(chuàng)建。所有的臨時(shí)表都是在的臨時(shí)表都是在tempdb數(shù)據(jù)庫(kù)中創(chuàng)建的。數(shù)據(jù)庫(kù)中創(chuàng)建的。n如果服務(wù)器關(guān)閉,則所有臨時(shí)表會(huì)被清空、關(guān)閉。如果服務(wù)器關(guān)閉,則所有臨時(shí)表會(huì)被清空、關(guān)閉。n通過(guò)使用通過(guò)使用CREATE TABLE命令并在表名前添加一個(gè)字命令并在表名前添加一個(gè)字符符(#),可以創(chuàng)建局部臨時(shí)表。,可以創(chuàng)建局部臨時(shí)表。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 1.在在SQL Server Management Studio中創(chuàng)建數(shù)中創(chuàng)建數(shù)據(jù)表?yè)?jù)表 首先以創(chuàng)建如表所示的學(xué)生信息表首先以創(chuàng)建如表所示的學(xué)生信息表student表表結(jié)構(gòu)為例,說(shuō)明
17、如何為數(shù)據(jù)庫(kù)結(jié)構(gòu)為例,說(shuō)明如何為數(shù)據(jù)庫(kù)teaching創(chuàng)建創(chuàng)建表,具體步驟如下。表,具體步驟如下。列序號(hào)列名類(lèi)型取值說(shuō)明1studentnonchar(10)主鍵2snamenchar(8)否3sexnchar(1)否4birthdaydatetime否5classnonchar(6)否6pointsmallint否7phonenchar(12)否8Emailnchar(20)否清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 1.在在SQL Server Management Studio中創(chuàng)建數(shù)中創(chuàng)建數(shù)據(jù)表?yè)?jù)表 (1)啟動(dòng))啟動(dòng)SQL Serv
18、er Management Studio,在,在“對(duì)對(duì)象資源管理器象資源管理器”中,展開(kāi)要新建表的數(shù)據(jù)庫(kù)中,展開(kāi)要新建表的數(shù)據(jù)庫(kù)teaching。(2)右擊)右擊“表表”項(xiàng),在快捷菜單里選擇項(xiàng),在快捷菜單里選擇“新建表新建表”項(xiàng),項(xiàng),(3)在彈出的如圖所示的)在彈出的如圖所示的“表設(shè)計(jì)器表設(shè)計(jì)器”窗口中,依窗口中,依次輸入列名、數(shù)據(jù)類(lèi)型及允許空否等選項(xiàng)。次輸入列名、數(shù)據(jù)類(lèi)型及允許空否等選項(xiàng)。列名列名數(shù)據(jù)類(lèi)型與列長(zhǎng)度數(shù)據(jù)類(lèi)型與列長(zhǎng)度允許空允許空 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 1.在在SQL Server Management St
19、udio中創(chuàng)建中創(chuàng)建數(shù)據(jù)表數(shù)據(jù)表 (4)依次類(lèi)推,設(shè)置其他列的名稱(chēng)、數(shù)據(jù)類(lèi)型、列長(zhǎng)度和)依次類(lèi)推,設(shè)置其他列的名稱(chēng)、數(shù)據(jù)類(lèi)型、列長(zhǎng)度和允許空等選項(xiàng),并單擊允許空等選項(xiàng),并單擊“保存保存”按鈕。按鈕。(5)右擊)右擊studentno列,在彈出的快捷菜單中選擇列,在彈出的快捷菜單中選擇“設(shè)置主設(shè)置主鍵鍵”命令,或者使用命令,或者使用“設(shè)置主鍵設(shè)置主鍵”按鈕來(lái)設(shè)置主鍵,如按鈕來(lái)設(shè)置主鍵,如圖所示,設(shè)置主鍵為圖所示,設(shè)置主鍵為studentno。(6)設(shè)置完畢后,單擊)設(shè)置完畢后,單擊“保存保存”按鈕。在彈出的對(duì)話(huà)框中按鈕。在彈出的對(duì)話(huà)框中輸入表名輸入表名student后,單擊后,單擊“確定確定”按
20、鈕,即完成了創(chuàng)建按鈕,即完成了創(chuàng)建表的操作。表的操作。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 2.利用利用Transact-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)表語(yǔ)句創(chuàng)建數(shù)據(jù)表 CREATE TABLE的語(yǔ)法格式如下:的語(yǔ)法格式如下:CREATE TABLE database_name. schema_name.|schema_name. table_name ( | computed_column_definition ,.n ) ON partition_scheme_name( partition_column_name ) | filegroup
21、| default TEXTIMAGE_ON filegroup |default ;清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 例例3.1 利用利用CREATE TABLE命令建立課程信息表命令建立課程信息表course,表結(jié)構(gòu)如表所示。,表結(jié)構(gòu)如表所示。列序號(hào)列名類(lèi)型取值說(shuō)明1coursenonchar(6)主鍵2cnamenchar(20)否3typenchar(8)否4period tinyint否5creditnumeric(4,1) 否清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建
22、例例3.1 利用利用CREATE TABLE命令建立課程信息表命令建立課程信息表course,表結(jié)構(gòu)如表所示。,表結(jié)構(gòu)如表所示。利用利用CREATE TABLE語(yǔ)句在數(shù)據(jù)庫(kù)語(yǔ)句在數(shù)據(jù)庫(kù)teaching建立課建立課程信息表程信息表course的程序代碼如下:的程序代碼如下:CREATE TABLE teaching.dbo.course(courseno nchar(6) NOT NULL,cname nchar(20) NULL,type nchar(8) NULL,period tinyint NULL,credit numeric(4, 1) NULL, CONSTRAINT PK_cou
23、rse PRIMARY KEY CLUSTERED (Courseno ASC ) ON PRIMARY其中:其中:nPK_course 表示創(chuàng)建主鍵時(shí)的索引名稱(chēng),可以是任意標(biāo)識(shí)符。表示創(chuàng)建主鍵時(shí)的索引名稱(chēng),可以是任意標(biāo)識(shí)符。nCLUSTERED項(xiàng)表示聚集索引類(lèi)型。項(xiàng)表示聚集索引類(lèi)型。nASC表示按表示按courseno值升序方式排列數(shù)據(jù),若是值升序方式排列數(shù)據(jù),若是DESC則表示則表示降序。降序。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 例例3.2利用利用CREATE TABLE命令建立學(xué)生分?jǐn)?shù)表命令建立學(xué)生分?jǐn)?shù)表score,表結(jié)構(gòu)如表所
24、示。該表中主鍵由兩個(gè)列構(gòu),表結(jié)構(gòu)如表所示。該表中主鍵由兩個(gè)列構(gòu)成。成。 列序號(hào)列名類(lèi)型取值說(shuō)明1studentnonchar(10)主鍵2coursenonchar(6)3usuallynumeric(6,2)否4finalnumeric(6,2)否程序代碼如下:程序代碼如下:CREATE TABLE dbo.score(studentno nchar(10) NOT NULL,courseno nchar(6) NOT NULL,usually numeric(6, 2) NULL,final numeric(6, 2) NULL, CONSTRAINT PK_score PRIMARY K
25、EY CLUSTERED (studentno ASC,courseno ASC ) ) 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 例例3.3 利用利用CREATE TABLE命令建立教師信息表命令建立教師信息表teacher,表結(jié)構(gòu)如表所示。,表結(jié)構(gòu)如表所示。 列序號(hào)列名類(lèi)型取值說(shuō)明1teachernonchar(6)主鍵2tnamenchar(8)否3majornchar(10)否4profnchar(10)是5departmentnchar(12)否建立教師信息表teacher的程序代碼如下:CREATE TABLE dbo.teac
26、her(teacherno nchar(6) NOT NULL,tname nchar(8) NULL,major nchar(10) NULL,prof nchar(10) NOT NULL,department nchar(12) NULL, CONSTRAINT PK_teacher PRIMARY KEY CLUSTERED (teacherno ASC ) 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 3創(chuàng)建數(shù)據(jù)表的腳本代碼創(chuàng)建數(shù)據(jù)表的腳本代碼利用利用CREATE TABLE命令創(chuàng)建表,和利用可視化命令創(chuàng)建表,和利用可視化方式創(chuàng)建表,
27、實(shí)現(xiàn)的功能基本是一樣的。只要表方式創(chuàng)建表,實(shí)現(xiàn)的功能基本是一樣的。只要表結(jié)構(gòu)創(chuàng)建完成,就可以查看表的腳本代碼。結(jié)構(gòu)創(chuàng)建完成,就可以查看表的腳本代碼。例例3.4 利用利用CREATE TABLE命令建立班級(jí)信息表命令建立班級(jí)信息表class,表結(jié)構(gòu)如表所示。,表結(jié)構(gòu)如表所示。列序號(hào)列名類(lèi)型取值說(shuō)明1classnonchar(6)主鍵2classnamenchar(12)否3departmentnchar(12)否清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 n在在SQL Server Management Studio中右擊中右擊“資源管理器資源
28、管理器”|“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”|teaching|class表表。n在彈出的菜單中,選擇在彈出的菜單中,選擇“編寫(xiě)表腳本為編寫(xiě)表腳本為(S)”|“CREATE到(到(C)”|“新查詢(xún)編新查詢(xún)編輯器窗口輯器窗口”在在“查詢(xún)編輯器窗口查詢(xún)編輯器窗口”可以顯可以顯示如下代碼。示如下代碼。SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo. class(classno nchar(6) COLLATE Chinese_PRC_CI_AS NOT NULL,classname nchar(12) COLLATE Chinese_PRC_
29、CI_AS NULL,department nchar(12) COLLATE Chinese_PRC_CI_AS NULL,monitor nchar(8) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_class PRIMARY KEY CLUSTERED (classno ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2 表的創(chuàng)建表的創(chuàng)建 例例3.5 為了完善為了完善teaching數(shù)據(jù)庫(kù)的表間聯(lián)系,創(chuàng)建表數(shù)
30、據(jù)庫(kù)的表間聯(lián)系,創(chuàng)建表結(jié)構(gòu)如表所示的紐帶表結(jié)構(gòu)如表所示的紐帶表teach_class。然后查看該表。然后查看該表的有關(guān)的有關(guān)CREATE TABLE命令腳本信息。命令腳本信息。(代碼從略)(代碼從略)列序號(hào)列名類(lèi)型取值說(shuō)明1teachernonchar(6)主鍵2classnonchar(6)3coursenonchar(6)清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2表的創(chuàng)建表的創(chuàng)建 4為數(shù)據(jù)表輸入數(shù)據(jù)為數(shù)據(jù)表輸入數(shù)據(jù)為數(shù)據(jù)表輸入數(shù)據(jù)的方式有多種,常見(jiàn)的有通過(guò)命為數(shù)據(jù)表輸入數(shù)據(jù)的方式有多種,常見(jiàn)的有通過(guò)命令方式添加行數(shù)據(jù)的,也可以通過(guò)程序?qū)崿F(xiàn)表數(shù)令方式添加行數(shù)
31、據(jù)的,也可以通過(guò)程序?qū)崿F(xiàn)表數(shù)據(jù)的添加。為據(jù)的添加。為student表輸入數(shù)據(jù)的步驟如下:表輸入數(shù)據(jù)的步驟如下:(1)啟動(dòng))啟動(dòng)SQL Server Management Studio中窗口,中窗口,展開(kāi)展開(kāi)“資源管理器資源管理器”|“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”|teaching數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù),右擊右擊student表,在彈出的菜單中,單擊表,在彈出的菜單中,單擊“打開(kāi)表打開(kāi)表”命令。命令。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.2表的創(chuàng)建表的創(chuàng)建 4為數(shù)據(jù)表輸入數(shù)據(jù)為數(shù)據(jù)表輸入數(shù)據(jù)(2)進(jìn)入的數(shù)據(jù)輸入界面,依次按照表結(jié)構(gòu)的要求)進(jìn)入的數(shù)據(jù)輸入界面,依次按照表結(jié)構(gòu)的要求為每
32、一列輸入數(shù)據(jù)。每輸入完一行,系統(tǒng)會(huì)自動(dòng)為每一列輸入數(shù)據(jù)。每輸入完一行,系統(tǒng)會(huì)自動(dòng)進(jìn)入下一行的輸狀態(tài)。在輸入過(guò)程中,要針對(duì)不進(jìn)入下一行的輸狀態(tài)。在輸入過(guò)程中,要針對(duì)不同的數(shù)據(jù)類(lèi)型輸入合法的數(shù)據(jù)。如果輸入不合規(guī)同的數(shù)據(jù)類(lèi)型輸入合法的數(shù)據(jù)。如果輸入不合規(guī)則的數(shù)據(jù),系統(tǒng)不接受。需要重新輸入該行數(shù)據(jù)。則的數(shù)據(jù),系統(tǒng)不接受。需要重新輸入該行數(shù)據(jù)。(3)輸入數(shù)據(jù)完畢,單擊)輸入數(shù)據(jù)完畢,單擊“保存保存”按鈕,即可完成按鈕,即可完成數(shù)據(jù)的輸入過(guò)程。數(shù)據(jù)的輸入過(guò)程。(4)如果需要添加數(shù)據(jù),重復(fù)上述過(guò)程即可。)如果需要添加數(shù)據(jù),重復(fù)上述過(guò)程即可。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3
33、.2.3 數(shù)據(jù)瀏覽數(shù)據(jù)瀏覽1. 在查詢(xún)窗口中瀏覽表數(shù)據(jù)在查詢(xún)窗口中瀏覽表數(shù)據(jù)在查詢(xún)窗口中瀏覽表數(shù)據(jù)的步驟如下:在查詢(xún)窗口中瀏覽表數(shù)據(jù)的步驟如下:(1)啟動(dòng))啟動(dòng)SQL Server Management Studio中窗口,中窗口,展開(kāi)展開(kāi)“資源管理器資源管理器”|“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”|teaching數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù),右擊右擊teacher表,在彈出的菜單中,單擊表,在彈出的菜單中,單擊“打開(kāi)表打開(kāi)表”命令。命令。(2)在如圖所示的瀏覽數(shù)據(jù)窗口,可以發(fā)現(xiàn)該窗口)在如圖所示的瀏覽數(shù)據(jù)窗口,可以發(fā)現(xiàn)該窗口與數(shù)據(jù)輸入的窗口是一樣的。與數(shù)據(jù)輸入的窗口是一樣的。清華大學(xué)出版社. SQL Server 200
34、5數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.3 數(shù)據(jù)瀏覽數(shù)據(jù)瀏覽2. 利用利用Transact-SQL語(yǔ)句在查詢(xún)窗口中瀏覽表數(shù)據(jù)語(yǔ)句在查詢(xún)窗口中瀏覽表數(shù)據(jù)(1)啟動(dòng))啟動(dòng)SQL Server Management Studio中窗口,單擊中窗口,單擊“新新建查詢(xún)建查詢(xún)”按鈕。按鈕。(2)然后在)然后在“查詢(xún)?cè)O(shè)計(jì)器查詢(xún)?cè)O(shè)計(jì)器”窗口中輸入一條查詢(xún)語(yǔ)句如下:窗口中輸入一條查詢(xún)語(yǔ)句如下:use teachinggoselect * from course(3)單擊)單擊“執(zhí)行執(zhí)行”按鈕,可發(fā)現(xiàn)按鈕,可發(fā)現(xiàn)course表的相關(guān)數(shù)據(jù)顯示出表的相關(guān)數(shù)據(jù)顯示出來(lái)來(lái) 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與
35、開(kāi)發(fā) 3.2.4表結(jié)構(gòu)的修改表結(jié)構(gòu)的修改1在在SQL Server Management Studio中修改表結(jié)構(gòu)中修改表結(jié)構(gòu)步驟如下:步驟如下:(1)啟動(dòng))啟動(dòng)SQL Server Management Studio后,在對(duì)后,在對(duì)象資源管理器中展開(kāi)其中的樹(shù)形目錄,找到要修象資源管理器中展開(kāi)其中的樹(shù)形目錄,找到要修改結(jié)構(gòu)的數(shù)據(jù)表。改結(jié)構(gòu)的數(shù)據(jù)表。(2)若要修改數(shù)據(jù)表名,可右擊數(shù)據(jù)表,在彈出的)若要修改數(shù)據(jù)表名,可右擊數(shù)據(jù)表,在彈出的快捷菜單中選擇快捷菜單中選擇“重命名重命名”命令。命令。(3)若要對(duì)表中的列進(jìn)行插入、刪除等操作,如圖)若要對(duì)表中的列進(jìn)行插入、刪除等操作,如圖所示所示清華大學(xué)出
36、版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.4表結(jié)構(gòu)的修改表結(jié)構(gòu)的修改1在在SQL Server Management Studio中修改表結(jié)構(gòu)中修改表結(jié)構(gòu)(4)若要修改列數(shù)據(jù)類(lèi)型,)若要修改列數(shù)據(jù)類(lèi)型,“表設(shè)計(jì)器表設(shè)計(jì)器”窗口中,窗口中,直接單擊要修改在直接單擊要修改在“數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型”項(xiàng)處修改。同樣,項(xiàng)處修改。同樣,可修改數(shù)據(jù)表的索引、約束??尚薷臄?shù)據(jù)表的索引、約束。(5)若要修改數(shù)據(jù)表屬性,在)若要修改數(shù)據(jù)表屬性,在“表設(shè)計(jì)器表設(shè)計(jì)器”窗口中,窗口中,單擊單擊“屬性屬性”按鈕,在打開(kāi)的對(duì)話(huà)框中進(jìn)行修改。按鈕,在打開(kāi)的對(duì)話(huà)框中進(jìn)行修改。清華大學(xué)出版社. SQL Ser
37、ver 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.4表結(jié)構(gòu)的修改表結(jié)構(gòu)的修改2. 利用利用Transact-SQL語(yǔ)句修改表結(jié)構(gòu)語(yǔ)句修改表結(jié)構(gòu)n利用利用Transact-SQL語(yǔ)句語(yǔ)句ALTER TABLE的命的命令,可以更改、添加或刪除列和約束,從而令,可以更改、添加或刪除列和約束,從而修改表的定義。修改表的定義。nALTER TABLE的語(yǔ)法格式如下:的語(yǔ)法格式如下:ALTER TABLE database_name.schema_name. |schema_name.table_name ALTER COLUMN column_name type_schema_name. type_name (
38、precision,scale | max|xml_schema_collection) COLLATE collation_name NULL|NOT NULL |ADD|DROPROWGUIDCOL|PERSISTED |WITHCHECK|NOCHECKADD | | ,.n |DROP CONSTRAINT constraint_name WITH( ,.n) |COLUMN column_name ,.n ;清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.4表結(jié)構(gòu)的修改表結(jié)構(gòu)的修改例例3.6 在在test01數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新表數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新表stude
39、nt1,然后,然后修改其列屬性。修改其列屬性。程序代碼如下:程序代碼如下:CREATE TABLE student1 (column_grade int) -創(chuàng)創(chuàng)建新表建新表GOEXEC sp_help student1 -查看表的信息查看表的信息GOALTER TABLE student1 ADD column_class VARCHAR(20) NULL -添加列添加列GOEXEC sp_help student1GOALTER TABLE student1 DROP COLUMN column_grade -刪除列刪除列GOEXEC sp_help student1GO清華大學(xué)出版社.
40、SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.4表結(jié)構(gòu)的修改表結(jié)構(gòu)的修改例例3.7 修改修改test01中表中表student1的列的列column_class數(shù)據(jù)數(shù)據(jù)類(lèi)型和名稱(chēng)。類(lèi)型和名稱(chēng)。程序代碼如下:程序代碼如下:Use test01GOALTER TABLE student1 ALTER COLUMN column_class char(20) NOT NULL GOEXEC sp_rename student1.column_class,st_class GO清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.5 表數(shù)據(jù)的修改表數(shù)據(jù)的修改1. 利用利用
41、INSERT語(yǔ)句輸入數(shù)據(jù)語(yǔ)句輸入數(shù)據(jù)INSERT 語(yǔ)句的語(yǔ)法格式如下:語(yǔ)句的語(yǔ)法格式如下:INSERT TOP (expression)PERCENT INTO |rowset_function_limited WITH ( .n ) (column_list) VALUES (DEFAULT|NULL|expression,.n ) |derived_table|execute_statement |DEFAULT VALUES ; 例3.8 向teaching數(shù)據(jù)庫(kù)中的score表中添加數(shù)據(jù)。程序代碼如下:INSERT INTO score (usually,courseno,final,
42、studentno)VALUES (79, c05109,91,0937221508 )INSERT INTO scoreVALUES(0824113307,c05127,93,78) 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.5 表數(shù)據(jù)的修改表數(shù)據(jù)的修改2. 利用利用UPDATE語(yǔ)句更新表數(shù)據(jù)語(yǔ)句更新表數(shù)據(jù)UPDATE 語(yǔ)句的基本語(yǔ)法格式如下:語(yǔ)句的基本語(yǔ)法格式如下:UPDATE TOP(expression) PERCENT |rowset_function_limited WITH( .n) SET column_name = expression | D
43、EFAULT | NULL ,.n FROM ,.n WHERE ; 例3.9更改teaching數(shù)據(jù)庫(kù)中的score表中的學(xué)號(hào)為0824113307、課程號(hào)為c05127的期末成績(jī)修改為87。程序代碼如下:UPDATE score SET final =87WHERE studentno=0824113307 AND courseno=c05127例例3.10 為數(shù)據(jù)庫(kù)為數(shù)據(jù)庫(kù)test01中表中表student1輸入輸入3行數(shù)行數(shù)據(jù),然后將列據(jù),然后將列st_class的值全部改為的值全部改為jsj1012。程序代碼如下:程序代碼如下:INSERT INTO student1 VALUES(
44、jixie0809)INSERT INTO student1 VALUES(huag0902)INSERT INTO student1 VALUES(txun0912)GO UPDATE student1SET st_class= jsj1012 GO 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.5 表數(shù)據(jù)的修改表數(shù)據(jù)的修改3. 利用利用DELETE語(yǔ)句刪除表中數(shù)據(jù)語(yǔ)句刪除表中數(shù)據(jù)DELETE 語(yǔ)句的基本語(yǔ)法格式如下:語(yǔ)句的基本語(yǔ)法格式如下:DELETE TOP(expression)PERCENT FROM |rowset_function_limited WI
45、TH ( .n) FROM ,.n WHERE ; 例3.11刪除數(shù)據(jù)庫(kù)test01中表student1的列st_class的值為jsj1012的行。程序代碼如下:DELETE FROM student1 WHERE st_class=jsj1012清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.5 表數(shù)據(jù)的修改表數(shù)據(jù)的修改4利用利用Truncate Table語(yǔ)句刪除表中數(shù)據(jù)語(yǔ)句刪除表中數(shù)據(jù)nTransact-SQL語(yǔ)言也支持利用語(yǔ)言也支持利用Truncate Table語(yǔ)句語(yǔ)句刪除表中數(shù)據(jù)。刪除表中數(shù)據(jù)。nTruncate Table語(yǔ)句從一個(gè)表中刪除所有行的速度
46、語(yǔ)句從一個(gè)表中刪除所有行的速度要快于要快于DELETE。Truncate Table語(yǔ)句的格式為:語(yǔ)句的格式為:Truncate Table table_name n若要?jiǎng)h除表中的所有行,則若要?jiǎng)h除表中的所有行,則Truncate Table語(yǔ)句是語(yǔ)句是一種快速、無(wú)日志記錄的方法。一種快速、無(wú)日志記錄的方法。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.6 刪除表刪除表 1. 在在SQL Server Management Studio中刪除數(shù)中刪除數(shù)據(jù)表?yè)?jù)表在對(duì)象資源管理器中,展開(kāi)樹(shù)形目錄,選取要在對(duì)象資源管理器中,展開(kāi)樹(shù)形目錄,選取要?jiǎng)h除的數(shù)據(jù)表。右擊該表名,在
47、彈出的快捷刪除的數(shù)據(jù)表。右擊該表名,在彈出的快捷菜單中選擇菜單中選擇“刪除刪除”命令。在彈出的命令。在彈出的“刪除刪除對(duì)象對(duì)象”對(duì)話(huà)框中,會(huì)出現(xiàn)要?jiǎng)h除的表,可單對(duì)話(huà)框中,會(huì)出現(xiàn)要?jiǎng)h除的表,可單擊擊“確定確定”按鈕。按鈕。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.2.6 刪除表刪除表 2. 利用利用Transact-SQL語(yǔ)句刪除數(shù)據(jù)表語(yǔ)句刪除數(shù)據(jù)表利用利用Transact-SQL語(yǔ)句語(yǔ)句DROP TABLE就可刪除數(shù)據(jù)就可刪除數(shù)據(jù)表定義及表的所有數(shù)據(jù)、索引、觸發(fā)器、約束和指表定義及表的所有數(shù)據(jù)、索引、觸發(fā)器、約束和指定的權(quán)限。定的權(quán)限。 其語(yǔ)法格式如下:其語(yǔ)法格式如
48、下:DROP TABLEdatabase_name.schema name. |schema_name.table_name ,.n ;例例3.12在數(shù)據(jù)庫(kù)在數(shù)據(jù)庫(kù)test01中創(chuàng)建表中創(chuàng)建表stud,為表添加、刪除,為表添加、刪除列和行,再刪除該表。列和行,再刪除該表。例例3.13 局部臨時(shí)表的創(chuàng)建與數(shù)據(jù)輸入。局部臨時(shí)表的創(chuàng)建與數(shù)據(jù)輸入。 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 數(shù)據(jù)完整性是指數(shù)據(jù)的精確性和可靠性,數(shù)據(jù)完整性是指數(shù)據(jù)的精確性和可靠性,是為防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)是為防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù),防止因錯(cuò)誤信息的輸入、定的數(shù)據(jù),防止因錯(cuò)誤信
49、息的輸入、輸出而造成無(wú)效的操作或錯(cuò)誤信息而輸出而造成無(wú)效的操作或錯(cuò)誤信息而提出的,數(shù)據(jù)完整性在數(shù)據(jù)庫(kù)管理系提出的,數(shù)據(jù)完整性在數(shù)據(jù)庫(kù)管理系統(tǒng)中是十分重要的。統(tǒng)中是十分重要的。 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.1 數(shù)據(jù)完整性的類(lèi)型數(shù)據(jù)完整性的類(lèi)型根據(jù)數(shù)據(jù)完整性促使所作用的數(shù)據(jù)庫(kù)對(duì)象和范圍不根據(jù)數(shù)據(jù)完整性促使所作用的數(shù)據(jù)庫(kù)對(duì)象和范圍不同,可以將其分為以下幾類(lèi):同,可以將其分為以下幾類(lèi):(1)域()域(Domain)完整性。)完整性。 (2)實(shí)體()實(shí)體(Entity)完整性。)完整性。 (3)引用完整性。)引用完整性。 (4)用戶(hù)定義完整性。用戶(hù)定義完整性
50、的實(shí)現(xiàn)機(jī)制)用戶(hù)定義完整性。用戶(hù)定義完整性的實(shí)現(xiàn)機(jī)制有規(guī)則(有規(guī)則(Rule)、觸發(fā)器()、觸發(fā)器(Trigger)和存儲(chǔ)過(guò)程)和存儲(chǔ)過(guò)程(Stored Procedure)及創(chuàng)建數(shù)據(jù)表時(shí)的所有約束)及創(chuàng)建數(shù)據(jù)表時(shí)的所有約束(Constraint)。)。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.2 約束約束 1SQL Server 2005支持的約束類(lèi)型支持的約束類(lèi)型(1)NOT NULL約束約束 (2)PRIMARY KEY約束:約束:標(biāo)識(shí)具有唯一標(biāo)識(shí)表標(biāo)識(shí)具有唯一標(biāo)識(shí)表中行的值的列或列集。中行的值的列或列集。 (3)FOREIGN KEY約束約束:外鍵用于建
51、立和加強(qiáng):外鍵用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的連接的一列或多列。兩個(gè)表數(shù)據(jù)之間的連接的一列或多列。 (4)UNIQUE約束:約束:強(qiáng)制實(shí)施列集中值的唯一性。強(qiáng)制實(shí)施列集中值的唯一性。 (5)CHECK約束:約束:通過(guò)限制可放入列中的值來(lái)通過(guò)限制可放入列中的值來(lái)強(qiáng)制實(shí)施域完整性。強(qiáng)制實(shí)施域完整性。 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.2 約束約束 2在在SQL Server Management Studio中創(chuàng)建約束中創(chuàng)建約束()創(chuàng)建()創(chuàng)建NOT NULL約束。在約束。在SQL Server Management Studio中選擇表,利用執(zhí)行中選擇表,利
52、用執(zhí)行“修改修改”命令后彈出窗體中,對(duì)表中的列的命令后彈出窗體中,對(duì)表中的列的“允許空允許空”項(xiàng)進(jìn)行選擇即可。項(xiàng)進(jìn)行選擇即可。()創(chuàng)建()創(chuàng)建PRIMARY KEY 約束。在約束。在SQL Server Management Studio中選擇表,利用執(zhí)行中選擇表,利用執(zhí)行“修改修改”命令后彈出窗體中,右擊表中被選擇的列,在命令后彈出窗體中,右擊表中被選擇的列,在彈出的菜單中執(zhí)行彈出的菜單中執(zhí)行“設(shè)置主鍵設(shè)置主鍵”命令即可。命令即可。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.2 約束約束 2在在SQL Server Management Studio中創(chuàng)中創(chuàng)建約
53、束建約束()創(chuàng)建()創(chuàng)建FOREIGN KEY 約束。約束。 在在SQL Server Management Studio中選中選擇表?yè)癖韘core,執(zhí)行,執(zhí)行“修改修改”命令后彈出窗體,命令后彈出窗體,單擊單擊“關(guān)系關(guān)系”按鈕,如圖所示。按鈕,如圖所示。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.2 約束約束 2在在SQL Server Management Studio中創(chuàng)建約中創(chuàng)建約束束()創(chuàng)建()創(chuàng)建FOREIGN KEY 約束。約束。 在彈出的在彈出的“外鍵關(guān)系外鍵關(guān)系”對(duì)話(huà)框中,單擊對(duì)話(huà)框中,單擊“添加添加”按鈕,然后選擇按鈕,然后選擇“表和列規(guī)范表和
54、列規(guī)范”后后的的按鈕按鈕,如圖所示。如圖所示。 在彈出的在彈出的“表和列表和列”對(duì)話(huà)框中,選擇主鍵表對(duì)話(huà)框中,選擇主鍵表student和外鍵表和外鍵表score及共有的列及共有的列studentno。單擊。單擊“確定確定”按鈕,外鍵約束創(chuàng)建完畢。按鈕,外鍵約束創(chuàng)建完畢。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.2 約束約束 2在在SQL Server Management Studio中創(chuàng)中創(chuàng)建約束建約束()創(chuàng)建()創(chuàng)建UNIQUE約束。約束。 在在SQL Server Management Studio中選擇中選擇表表score,執(zhí)行,執(zhí)行“修改修改”命令后彈
55、出窗體,命令后彈出窗體,單擊單擊“管理索引和鍵管理索引和鍵”按鈕,如圖所示。按鈕,如圖所示。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.2 約束約束 2在在SQL Server Management Studio中創(chuàng)中創(chuàng)建約束建約束()創(chuàng)建()創(chuàng)建UNIQUE約束。約束。 在彈出的在彈出的“索引索引/鍵鍵”對(duì)話(huà)框中,單擊對(duì)話(huà)框中,單擊“添加添加”按鈕,然后選擇按鈕,然后選擇“是唯一的是唯一的”后后的列表框按鈕的列表框按鈕,如圖所示。選擇如圖所示。選擇“是是”,單,單擊擊“關(guān)閉關(guān)閉”按鈕即可。按鈕即可。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)
56、 3.1.2 約束約束 2在在SQL Server Management Studio中創(chuàng)中創(chuàng)建約束建約束()創(chuàng)建()創(chuàng)建CHECK約束。約束。在在SQL Server Management Studio中選中選擇表?yè)癖韘tudent,執(zhí)行,執(zhí)行“修改修改”命令后彈出窗命令后彈出窗體,單擊體,單擊“管理管理Check約束約束”按鈕,如圖按鈕,如圖所示。所示。 清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.2 約束約束 2在在SQL Server Management Studio中創(chuàng)中創(chuàng)建約束建約束()創(chuàng)建()創(chuàng)建CHECK約束。約束。 在彈出的在彈出的“CHECK
57、約束約束”對(duì)話(huà)框中,單對(duì)話(huà)框中,單擊擊“添加添加”按鈕,然后選擇按鈕,然后選擇“表達(dá)式表達(dá)式”后后的的按鈕按鈕,如圖所示。如圖所示。清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.1.2 約束約束 2在在SQL Server Management Studio中創(chuàng)中創(chuàng)建約束建約束()創(chuàng)建()創(chuàng)建CHECK約束。約束。 在彈出的在彈出的“CHECK約束表達(dá)式約束表達(dá)式”對(duì)話(huà)對(duì)話(huà)框中,輸入表達(dá)式框中,輸入表達(dá)式“ sex=男男 OR sex=女女 ”。如圖所示。單擊。如圖所示。單擊“確定確定”按鈕,按鈕,CHECK約束創(chuàng)建完畢。約束創(chuàng)建完畢。清華大學(xué)出版社. SQL Serv
58、er 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.2約束約束 3利用利用Transact-SQL語(yǔ)句創(chuàng)建或修改約束語(yǔ)句創(chuàng)建或修改約束利用利用Transact-SQL語(yǔ)句創(chuàng)建或修改約束的語(yǔ)法格式如下:語(yǔ)句創(chuàng)建或修改約束的語(yǔ)法格式如下: := CONSTRAINT constraint_name WITHCHECK|NOCHECK ADD ,.n |DROP CONSTRAINT constraint_name | COLUMN column_name ,.n | CHECK | NOCHECK CONSTRAINT ALL | constraint_name ,.n 清華大學(xué)出版社. SQL Server
59、 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.2約束約束 3利用利用Transact-SQL語(yǔ)句創(chuàng)建或修改約束語(yǔ)句創(chuàng)建或修改約束例3.14 為數(shù)據(jù)庫(kù)teaching中的班級(jí)表class的列classno創(chuàng)建FOREIGN KEY 約束,并將其中的classname、department、monitor的“允許空”修改為NOT NULL。程序代碼如下:ALTER TABLE classADD CONSTRAINT PK_class PRIMARY KEY CLUSTERED (classno ASC)GOALTER TABLE classALTER COLUMN classname nchar(12) N
60、OT NULL GOALTER TABLE classALTER COLUMN department nchar(12) NOT NULLGOALTER TABLE classALTER COLUMN monitor nchar(8) NOT NULL GO清華大學(xué)出版社. SQL Server 2005數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā) 3.3.2約束約束 例例3.15 為數(shù)據(jù)庫(kù)為數(shù)據(jù)庫(kù)teaching中的成績(jī)表中的成績(jī)表score的的兩個(gè)列兩個(gè)列usually和和final添加添加CHECK約束,限定約束,限定其值在其值在0100范圍內(nèi)。范圍內(nèi)。程序代碼如下:程序代碼如下:ALTER TABLE score
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國(guó)沙地探測(cè)中繼閥行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024至2030年中國(guó)有柄厄絨棒數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年柔和凈白潔面乳項(xiàng)目可行性研究報(bào)告
- 隔離dcdc變換器課程設(shè)計(jì)
- 光與影的創(chuàng)作課程設(shè)計(jì)
- 中國(guó)銀亮鋼絲行業(yè)市場(chǎng)運(yùn)營(yíng)模式及未來(lái)發(fā)展動(dòng)向預(yù)測(cè)研究報(bào)告(2024-2030版)
- 2024年中國(guó)平推式自動(dòng)門(mén)市場(chǎng)調(diào)查研究報(bào)告
- 中國(guó)責(zé)任保險(xiǎn)行業(yè)運(yùn)行態(tài)勢(shì)分析及發(fā)展前景展望研究報(bào)告(2024-2030版)
- 中國(guó)藥械檢驗(yàn)檢測(cè)行業(yè)運(yùn)營(yíng)趨勢(shì)與未來(lái)前景預(yù)測(cè)研究報(bào)告(2024-2030版)
- 中國(guó)舷外機(jī)行業(yè)發(fā)展機(jī)遇與前景動(dòng)態(tài)預(yù)測(cè)研究報(bào)告(2024-2030版)
- 干部人事檔案任前審核登記表范表
- 北京市道德與法治初一上學(xué)期期中試卷及答案指導(dǎo)(2024年)
- 高校實(shí)驗(yàn)室安全基礎(chǔ)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 四川省綿陽(yáng)市高中2025屆高三一診考試物理試卷含解析
- 朗致集團(tuán)邏輯測(cè)評(píng)試卷2024
- 焦化廠生產(chǎn)工序及工藝流程圖
- 汽車(chē)排放控制系統(tǒng)的檢修
- 《新能源》題庫(kù)(試題及答案29個(gè))
- (完整版)油罐換底工程施工方案
- 懸吊技術(shù)的臨床應(yīng)
- 精益管理與精益服務(wù)
評(píng)論
0/150
提交評(píng)論