版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第3 3章章 數(shù)據(jù)表和索引數(shù)據(jù)表和索引 本章主要內(nèi)容:本章主要內(nèi)容: SQL Server SQL Server數(shù)據(jù)表數(shù)據(jù)表 1 1創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表 2 2對數(shù)據(jù)表的操作對數(shù)據(jù)表的操作 3 3索引索引 4 4創(chuàng)建和管理索引創(chuàng)建和管理索引 5 53.1 SQL Server 3.1 SQL Server 數(shù)據(jù)表數(shù)據(jù)表3.1.1 3.1.1 數(shù)據(jù)表數(shù)據(jù)表表的特點:表的特點:表是一個存儲數(shù)據(jù)的實體,具有唯一的名稱。表是一個存儲數(shù)據(jù)的實體,具有唯一的名稱。表由行和列組成。表由行和列組成。行和列的順序是任意的。行和列的順序是任意的。列名在表中的唯一性由列名在表中的唯一性由SQL ServerSQL
2、 Server強制實現(xiàn),行在表中的強制實現(xiàn),行在表中的唯一性通過增加列的關(guān)鍵字來實現(xiàn),在一個表中,沒有相唯一性通過增加列的關(guān)鍵字來實現(xiàn),在一個表中,沒有相同的兩行。同的兩行。 在在SQL Server 2000SQL Server 2000中,一個數(shù)據(jù)庫中最多可以創(chuàng)中,一個數(shù)據(jù)庫中最多可以創(chuàng)建建200200萬萬個表,用戶創(chuàng)建數(shù)據(jù)庫表時,一個表至少有一個表,用戶創(chuàng)建數(shù)據(jù)庫表時,一個表至少有一列,最多不超過列,最多不超過10241024個列。個列。 在一個表中,列名是唯一的,但一個數(shù)據(jù)庫中的不在一個表中,列名是唯一的,但一個數(shù)據(jù)庫中的不同表可以有相同名稱的列。同表可以有相同名稱的列。 在一個數(shù)據(jù)庫
3、中,可能有由不同用戶創(chuàng)建的表,由在一個數(shù)據(jù)庫中,可能有由不同用戶創(chuàng)建的表,由不同用戶創(chuàng)建的表可以具有相同的名稱。不同用戶創(chuàng)建的表可以具有相同的名稱。 在同一個數(shù)據(jù)庫的不同表中,可以有相同的字段,在同一個數(shù)據(jù)庫的不同表中,可以有相同的字段,但在同一個表中不允許有相同的字段,而且每個字段但在同一個表中不允許有相同的字段,而且每個字段都要求數(shù)據(jù)類型相同。都要求數(shù)據(jù)類型相同。 表的列名在同一個表中具有唯一性,同一列的數(shù)據(jù)表的列名在同一個表中具有唯一性,同一列的數(shù)據(jù)都屬于同一種數(shù)據(jù)類型。除了用列名和數(shù)據(jù)類型來指都屬于同一種數(shù)據(jù)類型。除了用列名和數(shù)據(jù)類型來指定列的屬性外,還可以定義其他屬性:定列的屬性外,
4、還可以定義其他屬性:NULLNULL、NOT NULLNOT NULL和和IDENTITYIDENTITY屬性。屬性。SQL Server 2000SQL Server 2000表的類型表的類型 l系統(tǒng)表系統(tǒng)表 同數(shù)據(jù)庫一樣,同數(shù)據(jù)庫一樣,SQL Server2000SQL Server2000中的表也分為中的表也分為系統(tǒng)表系統(tǒng)表和用戶表和用戶表。系統(tǒng)表存儲有關(guān)系統(tǒng)表存儲有關(guān)SQL ServerSQL Server系統(tǒng)行為信息的數(shù)據(jù),無系統(tǒng)行為信息的數(shù)據(jù),無論是系統(tǒng)數(shù)據(jù)庫還是用戶數(shù)據(jù)庫,都包含系統(tǒng)表。論是系統(tǒng)數(shù)據(jù)庫還是用戶數(shù)據(jù)庫,都包含系統(tǒng)表。用戶數(shù)據(jù)庫里的系統(tǒng)表是在創(chuàng)建數(shù)據(jù)庫時從用戶數(shù)據(jù)庫里
5、的系統(tǒng)表是在創(chuàng)建數(shù)據(jù)庫時從ModelModel系統(tǒng)系統(tǒng)數(shù)據(jù)庫中復(fù)制而來的。數(shù)據(jù)庫中復(fù)制而來的。系統(tǒng)表的表名都以系統(tǒng)表的表名都以“sys”sys”作前綴,且在企業(yè)管理器中作前綴,且在企業(yè)管理器中顯示時類型都標(biāo)有顯示時類型都標(biāo)有“系統(tǒng)系統(tǒng)”二字。二字。 l用戶表用戶表 用戶表是數(shù)據(jù)庫中真正存放用戶數(shù)據(jù)的用戶表是數(shù)據(jù)庫中真正存放用戶數(shù)據(jù)的“容器容器”,是數(shù),是數(shù)據(jù)庫設(shè)計的關(guān)鍵。據(jù)庫設(shè)計的關(guān)鍵。 SQL ServerSQL Server中的資料表分為中的資料表分為永久表和臨時表永久表和臨時表兩種。兩種。 永久表在創(chuàng)建后一直存儲在數(shù)據(jù)庫文件中,直至用永久表在創(chuàng)建后一直存儲在數(shù)據(jù)庫文件中,直至用戶刪除為止
6、。戶刪除為止。 而臨時表則在用戶退出或系統(tǒng)修復(fù)時被自動刪除。而臨時表則在用戶退出或系統(tǒng)修復(fù)時被自動刪除。 臨時表又分為臨時表又分為局部臨時表和全局臨時表局部臨時表和全局臨時表兩種;兩種;l 局部臨時表只能由創(chuàng)建它的用戶使用,在該用戶局部臨時表只能由創(chuàng)建它的用戶使用,在該用戶連接斷開時,它被自動刪除。連接斷開時,它被自動刪除。l 全局臨時表對系統(tǒng)當(dāng)前的所有連接用戶來說都是全局臨時表對系統(tǒng)當(dāng)前的所有連接用戶來說都是可用的,在使用它的最后一個會話結(jié)束時它被自動刪可用的,在使用它的最后一個會話結(jié)束時它被自動刪除。除。l 在創(chuàng)建表時,系統(tǒng)根據(jù)當(dāng)前表名來確定是創(chuàng)建臨在創(chuàng)建表時,系統(tǒng)根據(jù)當(dāng)前表名來確定是創(chuàng)建
7、臨時表還是永久表,臨時表的表名以時表還是永久表,臨時表的表名以# #開頭,除此之外開頭,除此之外為永久表。為永久表。局部臨時表表名開頭包含一個局部臨時表表名開頭包含一個# #號,而全號,而全局臨時表的表名開頭包含兩個局臨時表的表名開頭包含兩個# #號。號。3.1.2 3.1.2 表的設(shè)計表的設(shè)計設(shè)計數(shù)據(jù)庫時,應(yīng)先確定需要什么樣的數(shù)據(jù)表、各數(shù)據(jù)設(shè)計數(shù)據(jù)庫時,應(yīng)先確定需要什么樣的數(shù)據(jù)表、各數(shù)據(jù)表中都有哪些數(shù)據(jù)、各個表之間的關(guān)系以及用戶對各個表數(shù)表中都有哪些數(shù)據(jù)、各個表之間的關(guān)系以及用戶對各個表數(shù)據(jù)的存取權(quán)限等。據(jù)的存取權(quán)限等。在創(chuàng)建和操作數(shù)據(jù)表的過程中,將對數(shù)據(jù)表進行更為細在創(chuàng)建和操作數(shù)據(jù)表的過程
8、中,將對數(shù)據(jù)表進行更為細致的設(shè)計。致的設(shè)計。 設(shè)計時應(yīng)注意以下內(nèi)容設(shè)計時應(yīng)注意以下內(nèi)容: : 表所包含的數(shù)據(jù)類型。表所包含的數(shù)據(jù)類型。 表的各列及每一列的數(shù)據(jù)類型。表的各列及每一列的數(shù)據(jù)類型。哪一列或哪幾列的組合為主鍵。哪一列或哪幾列的組合為主鍵。 哪些列允許空值。哪些列允許空值。 是否要使用約束、默認(rèn)設(shè)置等來限制列。是否要使用約束、默認(rèn)設(shè)置等來限制列。 是否要設(shè)置外鍵約束表與表之間的聯(lián)系。是否要設(shè)置外鍵約束表與表之間的聯(lián)系。 哪里需要索引,所需索引的類型。哪里需要索引,所需索引的類型。 3.1.3 3.1.3 數(shù)據(jù)類型數(shù)據(jù)類型SQL Server 2000 SQL Server 2000 的
9、數(shù)據(jù)類型分為基本數(shù)據(jù)類型和用戶定的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和用戶定義數(shù)據(jù)類型二種。義數(shù)據(jù)類型二種。系統(tǒng)數(shù)據(jù)類型是系統(tǒng)數(shù)據(jù)類型是SQL ServerSQL Server系統(tǒng)固有的,可直接使用的數(shù)系統(tǒng)固有的,可直接使用的數(shù)據(jù)類型據(jù)類型; ;用戶定義數(shù)據(jù)類型是基于系統(tǒng)數(shù)據(jù)類型和有關(guān)參數(shù)修改整用戶定義數(shù)據(jù)類型是基于系統(tǒng)數(shù)據(jù)類型和有關(guān)參數(shù)修改整合而來,用于增強基本數(shù)據(jù)類型的功能,或方便用戶在多合而來,用于增強基本數(shù)據(jù)類型的功能,或方便用戶在多個列中設(shè)置的數(shù)據(jù)類型和參數(shù)保持一致。個列中設(shè)置的數(shù)據(jù)類型和參數(shù)保持一致。1.1.常用系統(tǒng)數(shù)據(jù)類型常用系統(tǒng)數(shù)據(jù)類型 (1 1)數(shù)字類型)數(shù)字類型 數(shù)字類型數(shù)據(jù)只包含數(shù)
10、字類型數(shù)據(jù)只包含數(shù)字和正負(fù)號數(shù)字和正負(fù)號(對非整型還有?。▽Ψ钦瓦€有小數(shù)點),可進行算術(shù)運算或直接放入表達式中。數(shù)點),可進行算術(shù)運算或直接放入表達式中。數(shù)字類型數(shù)據(jù)包括數(shù)字類型數(shù)據(jù)包括整型數(shù)據(jù)、小數(shù)數(shù)據(jù)和浮點數(shù)據(jù)整型數(shù)據(jù)、小數(shù)數(shù)據(jù)和浮點數(shù)據(jù)三種。三種。l整型數(shù)據(jù)整型數(shù)據(jù) 整型數(shù)據(jù)由負(fù)整數(shù)或正整數(shù)組成,如整型數(shù)據(jù)由負(fù)整數(shù)或正整數(shù)組成,如 -15 -15、0 0、5 5 和和 2509 2509。在在SQL Server 2000 SQL Server 2000 中,整型數(shù)據(jù)使用中,整型數(shù)據(jù)使用 bigintbigint、intint、smallintsmallint、tinyinttinyi
11、nt 和和bitbit數(shù)據(jù)類型存儲。數(shù)據(jù)類型存儲。存儲數(shù)據(jù)大小依次為:存儲數(shù)據(jù)大小依次為:bigintbigint數(shù)據(jù)類型數(shù)據(jù)類型 intint數(shù)據(jù)類型數(shù)據(jù)類型 smallintsmallint數(shù)據(jù)類型數(shù)據(jù)類型 tinyinttinyint數(shù)據(jù)類型數(shù)據(jù)類型bit bit 數(shù)據(jù)類型只能包括數(shù)據(jù)類型只能包括 0 0 或或 1 1??梢杂谩?梢杂?bit bit 數(shù)據(jù)類數(shù)據(jù)類型表示型表示TRUETRUE或或FALSEFALSE、YESYES或或NONO這樣的邏輯數(shù)據(jù)。這樣的邏輯數(shù)據(jù)。l小數(shù)數(shù)據(jù)小數(shù)數(shù)據(jù) 在在 SQL ServerSQL Server中,帶小數(shù)的數(shù)據(jù)使用中,帶小數(shù)的數(shù)據(jù)使用 decim
12、al decimal 或或 numericnumeric 數(shù)據(jù)類型存儲。數(shù)據(jù)類型存儲。這種數(shù)字類型的描述,一般要用圓括號內(nèi)的數(shù)字指出這種數(shù)字類型的描述,一般要用圓括號內(nèi)的數(shù)字指出精度和小數(shù)位數(shù)。如需要一個精度為精度和小數(shù)位數(shù)。如需要一個精度為7 7,小數(shù)位數(shù)為,小數(shù)位數(shù)為3 3的帶小數(shù)類型,可描述為的帶小數(shù)類型,可描述為 dicimal(7,3) dicimal(7,3) 或或 numeric(7,3) numeric(7,3) 。在在 SQL ServerSQL Server中,中,numericnumeric 數(shù)據(jù)類數(shù)據(jù)類型等價于型等價于 decimal decimal 數(shù)據(jù)類型。數(shù)據(jù)類型
13、。l浮點數(shù)據(jù)浮點數(shù)據(jù) 浮點數(shù)據(jù)包括按二進制計數(shù)系統(tǒng)所能提供的最大精度浮點數(shù)據(jù)包括按二進制計數(shù)系統(tǒng)所能提供的最大精度保留的數(shù)據(jù)。保留的數(shù)據(jù)。在在 SQL Server SQL Server 中,浮點數(shù)據(jù)以中,浮點數(shù)據(jù)以 floatfloat(雙精度)和雙精度)和realreal(單精度)數(shù)據(jù)類型存儲。單精度)數(shù)據(jù)類型存儲。由于在實際使用中,對大多數(shù)使用浮點數(shù)據(jù)類型的應(yīng)由于在實際使用中,對大多數(shù)使用浮點數(shù)據(jù)類型的應(yīng)用程序,指定的精確值與近似值之間的差異并不明顯,用程序,指定的精確值與近似值之間的差異并不明顯,且浮點類型的字段不適宜進行大小比較,所以應(yīng)盡可且浮點類型的字段不適宜進行大小比較,所以應(yīng)盡
14、可能使用能使用decimaldecimal或或numericnumeric類型而避免用浮點數(shù)據(jù)類型類型而避免用浮點數(shù)據(jù)類型。(2 2)貨幣類型)貨幣類型 在在SQL Server 2000 SQL Server 2000 中使用中使用 money money 和和 smallmoneysmallmoney 數(shù)數(shù)據(jù)類型存儲貨幣數(shù)據(jù)。據(jù)類型存儲貨幣數(shù)據(jù)。貨幣數(shù)據(jù)存儲的精確度為四位小數(shù)。貨幣數(shù)據(jù)存儲的精確度為四位小數(shù)。如果數(shù)值超過了上述范圍(或需超過如果數(shù)值超過了上述范圍(或需超過4 4位小數(shù)的精度),位小數(shù)的精度),則可使用則可使用 decimal decimal 數(shù)據(jù)類型代替。數(shù)據(jù)類型代替。(3
15、 3)字符類型)字符類型 字符類型數(shù)據(jù)由字符類型數(shù)據(jù)由字母、數(shù)字和符號字母、數(shù)字和符號組成。組成。例如,例如,“928”“928”、“張三張三”、“(0“(0* *&(%&(%B99nhB99nh jkJjkJ”等。等。在在SQL Server 2000 SQL Server 2000 中,字符數(shù)據(jù)類型分為中,字符數(shù)據(jù)類型分為單字符串單字符串?dāng)?shù)據(jù)類型和雙字符串?dāng)?shù)據(jù)類型數(shù)據(jù)類型和雙字符串?dāng)?shù)據(jù)類型。 l單字節(jié)字符串單字節(jié)字符串?dāng)?shù)據(jù)類型:一個字符一個字節(jié)數(shù)據(jù)類型:一個字符一個字節(jié)定長定長charchar:空間不足截斷尾部,空間多余空格填充;:空間不足截斷尾部,空間多余空格填充;變長變長varchar
16、varchar:空間不足截斷尾部,多余空間不填空格;:空間不足截斷尾部,多余空間不填空格;l雙字節(jié)字符串雙字節(jié)字符串?dāng)?shù)據(jù)類型,數(shù)據(jù)類型,unicodeunicode字符類型字符類型(N(N代表國際代表國際語言語言National Language)National Language)一個字符一個字符/ /漢字占兩個字節(jié)。漢字占兩個字節(jié)。定長字符串定長字符串( (ncharnchar) ):空間不足截斷尾部,空間多:空間不足截斷尾部,空間多余空格填充;余空格填充;變長字符串變長字符串( (nvarcharnvarchar) ):空間不足截斷尾部,多余:空間不足截斷尾部,多余空間不填空格;空間不填
17、空格;變長字符串變長字符串( (ntextntext) ):存儲大小是所輸入字符:存儲大小是所輸入字符/ /漢字漢字個數(shù)的兩倍個數(shù)的兩倍( (以字節(jié)為單位以字節(jié)為單位) )。(4 4)日期時間類型)日期時間類型默認(rèn)時間是默認(rèn)時間是“00:00:00.000”“00:00:00.000”,默認(rèn)的日期是,默認(rèn)的日期是“1899-12-“1899-12-30”30”。在在SQL Server 2000 SQL Server 2000 中,日期和時間數(shù)據(jù)使用中,日期和時間數(shù)據(jù)使用 datetimedatetime 和和 smalldatetimesmalldatetime 數(shù)據(jù)類型:數(shù)據(jù)類型: dat
18、etimedatetime 類型存儲從類型存儲從17531753年年1 1月月1 1日至日至99999999年年1212月月3131日日的日期(每個數(shù)值要求的日期(每個數(shù)值要求8 8個字節(jié)的存儲空間)。個字節(jié)的存儲空間)。 smalldatetimesmalldatetime類型存儲從類型存儲從19001900年年1 1月月1 1日至日至20792079年年6 6月月6 6日的日期(每個數(shù)值要求日的日期(每個數(shù)值要求4 4個字節(jié)的存儲空間)。個字節(jié)的存儲空間)。(5 5)二進制類型)二進制類型在在SQL Server 2000SQL Server 2000中,二進制數(shù)據(jù)使用中,二進制數(shù)據(jù)使用b
19、inarybinary、varbinaryvarbinary和和imageimage數(shù)據(jù)類型存儲。數(shù)據(jù)類型存儲。binarybinary數(shù)據(jù)類型的列在每行中都是固定的長度(最多數(shù)據(jù)類型的列在每行中都是固定的長度(最多為為8 8KBKB)。)。varbinaryvarbinary類型的列所包含的位數(shù)可以根據(jù)實際存儲而類型的列所包含的位數(shù)可以根據(jù)實際存儲而變化(最多為變化(最多為8 8KBKB)。)。ImageImage類型的數(shù)據(jù)列可以用來存儲超過類型的數(shù)據(jù)列可以用來存儲超過8 8KBKB的二進制數(shù)的二進制數(shù)據(jù),如據(jù),如Microsoft WordMicrosoft Word文檔、文檔、Micro
20、soft ExcelMicrosoft Excel電子表電子表格、包含位圖的圖像、圖形交換格式格、包含位圖的圖像、圖形交換格式( (GIF)GIF)文件和聯(lián)合文件和聯(lián)合圖像專家組圖像專家組( (JPEG)JPEG)文件等。文件等。類型類型名稱名稱取值范圍取值范圍整數(shù)整數(shù)bigintbigint、intint、smallintsmallint、tinyinttinyint( (922922億億億億) 8) 8( (2121億億) 4) 4( (32768) 232768) 2(0-255) 1(0-255) 1位型位型BitBit由由0 0和和1 1表示真、假。表示真、假。貨幣型貨幣型money
21、money、smallmoneysmallmoney( (922922萬億萬億) )( (2121萬萬) ),精確到萬分之一。,精確到萬分之一。十進制十進制DecimalDecimal、NumericNumeric10103838-1-1,最大位數(shù),最大位數(shù)3838位位浮點數(shù)浮點數(shù)floatfloat、realreal( (1.79E+308) (1.79E+308) (3.40E+38)3.40E+38)類型類型名稱名稱取值范圍取值范圍日期日期時間時間DatetimeDatetime、smalldatetimesmalldatetime1753.1.11753.1.1- -9999.12.3
22、19999.12.31, ,精確精確到到3.333.33毫秒毫秒1900.1.11900.1.1- -2079.12.312079.12.31,精確,精確到分鐘到分鐘單字節(jié)單字節(jié)字符字符char / char / varcharvarchar / / texttext定定/ /變長單字節(jié)字符變長單字節(jié)字符, ,最長最長80008000; UnicodeUnicode字符字符ncharnchar / / nvarcharnvarchar / / ntextntext定定/ /變長雙字節(jié)字符,最長變長雙字節(jié)字符,最長40004000; 二進制二進制數(shù)據(jù)數(shù)據(jù)Binary / Binary / var
23、binaryvarbinary / image/ image定定/ /變長二進制數(shù)據(jù),最長變長二進制數(shù)據(jù),最長80008000;變長二進制數(shù)據(jù);變長二進制數(shù)據(jù)特殊特殊類型類型timestamptimestampSQL SQL 活動的先后順序?;顒拥南群箜樞颉niqueidentifieruniqueidentifier全局唯一標(biāo)識全局唯一標(biāo)識 2.幾個特殊的系統(tǒng)數(shù)據(jù)類型幾個特殊的系統(tǒng)數(shù)據(jù)類型UniqueidentifierUniqueidentifier uniqueidentifieruniqueidentifier數(shù)據(jù)類型存儲數(shù)據(jù)類型存儲1616字節(jié)的二進制值,字節(jié)的二進制值,該值的使用
24、與全局唯一標(biāo)識符該值的使用與全局唯一標(biāo)識符 ( (GUID)GUID)一樣。一樣。GUIDGUID是一個唯一的二進制數(shù)字,世界上的任何兩臺是一個唯一的二進制數(shù)字,世界上的任何兩臺計算機都不會生成重復(fù)的計算機都不會生成重復(fù)的GUIDGUID值。值。timestamptimestamp 這種數(shù)據(jù)類型表現(xiàn)為自動生成的二進制數(shù),確保這些這種數(shù)據(jù)類型表現(xiàn)為自動生成的二進制數(shù),確保這些數(shù)在數(shù)據(jù)庫中是唯一的。存儲大小為數(shù)在數(shù)據(jù)庫中是唯一的。存儲大小為8 8字節(jié)。字節(jié)。每次插入或更新包含每次插入或更新包含timestamptimestamp列的行時,列的行時,timestamptimestamp列中的值均會更
25、新。這一屬性使我們可以依據(jù)該列的列中的值均會更新。這一屬性使我們可以依據(jù)該列的值判斷原數(shù)據(jù)是否已被改動過。值判斷原數(shù)據(jù)是否已被改動過。一個表只能有一個一個表只能有一個timestamptimestamp列。列。sql_variantsql_variant sql_variantsql_variant是一種可混合存儲是一種可混合存儲SQL ServerSQL Server支持的各種支持的各種數(shù)據(jù)類型(除數(shù)據(jù)類型(除texttext、ntextntext、imageimage、timestamptimestamp和和sql_variantsql_variant之外)數(shù)值的數(shù)據(jù)類型。之外)數(shù)值的數(shù)據(jù)
26、類型。一個數(shù)據(jù)表可以有任意多個一個數(shù)據(jù)表可以有任意多個sql_variantsql_variant列。列。sql_variantsql_variant的最大長度可達的最大長度可達80168016字節(jié)。字節(jié)。 3.用戶定義數(shù)據(jù)類型用戶定義數(shù)據(jù)類型 創(chuàng)建用戶定義的數(shù)據(jù)類型時必須提供以下三個參數(shù):創(chuàng)建用戶定義的數(shù)據(jù)類型時必須提供以下三個參數(shù):名稱、新數(shù)據(jù)類型所依據(jù)的系統(tǒng)數(shù)據(jù)類型和允許為空名稱、新數(shù)據(jù)類型所依據(jù)的系統(tǒng)數(shù)據(jù)類型和允許為空性性(數(shù)據(jù)類型是否允許空值)。(數(shù)據(jù)類型是否允許空值)。如果為空性未明確定義,系統(tǒng)將依據(jù)數(shù)據(jù)庫默認(rèn)設(shè)置如果為空性未明確定義,系統(tǒng)將依據(jù)數(shù)據(jù)庫默認(rèn)設(shè)置進行指派。進行指派。
27、用企業(yè)管理器創(chuàng)建用企業(yè)管理器創(chuàng)建-用戶定義數(shù)據(jù)類型用戶定義數(shù)據(jù)類型 啟動企業(yè)管理器。啟動企業(yè)管理器。 在樹狀結(jié)構(gòu)窗口中選擇要創(chuàng)建用戶定義數(shù)據(jù)類型的數(shù)在樹狀結(jié)構(gòu)窗口中選擇要創(chuàng)建用戶定義數(shù)據(jù)類型的數(shù)據(jù)庫,如據(jù)庫,如“teachdbteachdb”。在指定數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在指定數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在彈出的快捷菜單上,選擇在彈出的快捷菜單上,選擇“新建新建”命令中的命令中的“用戶用戶定義的數(shù)據(jù)類型(定義的數(shù)據(jù)類型(Y Y)”選項。選項。 3.3.2 2 創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表3.2.1 3.2.1 準(zhǔn)備工作準(zhǔn)備工作創(chuàng)建用戶表的過程實際上是定義創(chuàng)建用戶表的過程實際上是定義表的結(jié)構(gòu)表的結(jié)構(gòu)和和表內(nèi)部
28、約束表內(nèi)部約束關(guān)系關(guān)系的過程。的過程。 表結(jié)構(gòu)包括表結(jié)構(gòu)包括表的名稱表的名稱,表中各字段的名稱、數(shù)據(jù)類型及,表中各字段的名稱、數(shù)據(jù)類型及其他其他屬性屬性。如該列是否允許為空(如該列是否允許為空(NULLNULL);是否有默認(rèn)值;是否有默認(rèn)值;是否是標(biāo)識(自動編號)字段;是否是標(biāo)識(自動編號)字段;是否是計算字段等;是否是計算字段等;除此之外的一個重要內(nèi)容是除此之外的一個重要內(nèi)容是實施數(shù)據(jù)完整性約束實施數(shù)據(jù)完整性約束(如設(shè)(如設(shè)置主鍵、外鍵、唯一性約束、檢查約束等),其中主鍵置主鍵、外鍵、唯一性約束、檢查約束等),其中主鍵和外鍵的設(shè)置也建立了表與表之間的聯(lián)系。和外鍵的設(shè)置也建立了表與表之間的聯(lián)系
29、。3.2.2 3.2.2 用企業(yè)管理器創(chuàng)建數(shù)據(jù)表用企業(yè)管理器創(chuàng)建數(shù)據(jù)表 1.1.表設(shè)計器表設(shè)計器2.2.建立數(shù)據(jù)表建立數(shù)據(jù)表見課本見課本P61P61頁表頁表3.1-3.1-表表3.5 3.5 ,分別為,分別為教學(xué)數(shù)據(jù)庫教學(xué)數(shù)據(jù)庫的的5 5個表結(jié)構(gòu)。個表結(jié)構(gòu)。3.3.標(biāo)識字段和計算字段標(biāo)識字段和計算字段 (1 1)標(biāo)識字段)標(biāo)識字段 每個表中可以有一個標(biāo)識字段,該字段的值是在插入每個表中可以有一個標(biāo)識字段,該字段的值是在插入記錄時由系統(tǒng)自動生成的序列數(shù)字(如:記錄時由系統(tǒng)自動生成的序列數(shù)字(如:1 1、2 2、3 3、4 4、或或100100、150150、200200、250250、),可以用
30、來標(biāo)),可以用來標(biāo)識表中每一行,或者說給每一行自動編號。識表中每一行,或者說給每一行自動編號。 SQL ServerSQL Server能夠在標(biāo)識字段自動插入唯一值的序列數(shù)能夠在標(biāo)識字段自動插入唯一值的序列數(shù)字。字。 將一個字段設(shè)置為標(biāo)識(將一個字段設(shè)置為標(biāo)識(IDENTITYIDENTITY)字段,該字段必字段,該字段必須是以下數(shù)據(jù)類型之一:須是以下數(shù)據(jù)類型之一: intint、bigintbigint、smallintsmallint、tinyinttinyint或小數(shù)位數(shù)為或小數(shù)位數(shù)為0 0的的 decimaldecimal、numericnumeric字段字段。標(biāo)識字段不允許為空,且不
31、能有默認(rèn)值。標(biāo)識字段不允許為空,且不能有默認(rèn)值。 在計算字段的公式中的表達式可以是非計算列的列名、在計算字段的公式中的表達式可以是非計算列的列名、常量、函數(shù)、變量,也可以是用一個或多個運算符連常量、函數(shù)、變量,也可以是用一個或多個運算符連接的上述元素的任意組合。接的上述元素的任意組合。圖3-7 設(shè)置計算字段(2)(2)計算字段計算字段 計算字段實際上是一個虛擬的字段,它并未將計算結(jié)計算字段實際上是一個虛擬的字段,它并未將計算結(jié)果實際存儲在表中,而只是在果實際存儲在表中,而只是在運行運行時才立即計算出結(jié)時才立即計算出結(jié)果。在設(shè)置計算字段時,不需指定該字段的數(shù)據(jù)類型,果。在設(shè)置計算字段時,不需指定
32、該字段的數(shù)據(jù)類型,保存表結(jié)構(gòu)時,保存表結(jié)構(gòu)時,SQL ServerSQL Server會自動決定計算字段的數(shù)會自動決定計算字段的數(shù)據(jù)類型。據(jù)類型。 由于計算字段的特性,決定了我們不可以直接向計算由于計算字段的特性,決定了我們不可以直接向計算字段中輸入數(shù)據(jù),也不能直接修改其中的數(shù)值。字段中輸入數(shù)據(jù),也不能直接修改其中的數(shù)值。4.4.設(shè)置約束設(shè)置約束l在創(chuàng)建表時的一項重要工作是為字段設(shè)置在創(chuàng)建表時的一項重要工作是為字段設(shè)置約束條件約束條件,從而保證數(shù)據(jù)完整性。從而保證數(shù)據(jù)完整性。 l實施數(shù)據(jù)完整性的主要工具是添加各種約束,除了規(guī)實施數(shù)據(jù)完整性的主要工具是添加各種約束,除了規(guī)定表中字段定表中字段是否
33、允許為空是否允許為空(NULLNULL)和和有無默認(rèn)值有無默認(rèn)值外,外,還包括以下幾種約束:還包括以下幾種約束: 主鍵約束主鍵約束 唯一性約束唯一性約束 檢查約束檢查約束 外鍵約束外鍵約束 (1 1)主鍵約束)主鍵約束(2)(2)設(shè)置唯一性約束設(shè)置唯一性約束 唯一性約束可保證非主鍵列(或幾個列的組合)的數(shù)據(jù)不唯一性約束可保證非主鍵列(或幾個列的組合)的數(shù)據(jù)不重復(fù)。重復(fù)。 (3)(3)設(shè)置設(shè)置CHECKCHECK約束約束在數(shù)據(jù)庫中設(shè)置檢查約束(在數(shù)據(jù)庫中設(shè)置檢查約束(CHECKCHECK約束)以限制輸入到列約束)以限制輸入到列中的值中的值. .CHECKCHECK約束通過邏輯表達式來判斷并控制列
34、中數(shù)據(jù)的有效約束通過邏輯表達式來判斷并控制列中數(shù)據(jù)的有效性。性。在表設(shè)計器中,選取要建立約束的列,這里選取在表設(shè)計器中,選取要建立約束的列,這里選取“score”score”(成績)列。成績)列。 在在“約束表達式約束表達式”文本框中輸入該列的約束條件,這是輸文本框中輸入該列的約束條件,這是輸入入score=0 and score=0 and score= 1980-01-01 and = 1980-01-01 and 出生日期出生日期 = = getdategetdate()()綁定規(guī)則綁定規(guī)則規(guī)則綁定到用戶的規(guī)則綁定到用戶的自定義類型自定義類型規(guī) 則 綁 定規(guī) 則 綁 定到表的列到表的列解
35、除綁定解除綁定刪除規(guī)則:刪除規(guī)則:drop rule drop rule 刪除規(guī)則之前,應(yīng)該首先解除該規(guī)則的所用綁定關(guān)系。刪除規(guī)則之前,應(yīng)該首先解除該規(guī)則的所用綁定關(guān)系。注意:注意:規(guī)則只允許在當(dāng)前數(shù)據(jù)庫中創(chuàng)建。規(guī)則只允許在當(dāng)前數(shù)據(jù)庫中創(chuàng)建。規(guī)則不能綁定到系統(tǒng)數(shù)據(jù)類型,如規(guī)則不能綁定到系統(tǒng)數(shù)據(jù)類型,如charchar和和intint等。等。規(guī)則不能綁定到數(shù)據(jù)類型為規(guī)則不能綁定到數(shù)據(jù)類型為imageimage、texttext或或timestamptimestamp的列。的列。use use 學(xué)生課程數(shù)據(jù)庫學(xué)生課程數(shù)據(jù)庫 gogo drop rule drop rule score_rulesc
36、ore_rule 注注: : 使用規(guī)則的限制條件使用規(guī)則的限制條件l 規(guī)則只能處理常量、函數(shù),不能用來查找表,也不能規(guī)則只能處理常量、函數(shù),不能用來查找表,也不能用來比較表中的列。用來比較表中的列。l 表中的每列只能與一條規(guī)則綁定。如果某列已經(jīng)綁定表中的每列只能與一條規(guī)則綁定。如果某列已經(jīng)綁定了一條規(guī)則,而又為該列綁定了一條新規(guī)則,那么舊規(guī)則了一條規(guī)則,而又為該列綁定了一條新規(guī)則,那么舊規(guī)則將被新規(guī)則代替。將被新規(guī)則代替。l 如果規(guī)則與某列綁定,那么規(guī)則不能被直接刪除,須如果規(guī)則與某列綁定,那么規(guī)則不能被直接刪除,須先解除規(guī)則與所有的列和數(shù)據(jù)庫類型綁定關(guān)系,然后才能先解除規(guī)則與所有的列和數(shù)據(jù)庫
37、類型綁定關(guān)系,然后才能用用drop ruledrop rule命令刪除。命令刪除。l 向系統(tǒng)中大量拷貝數(shù)據(jù)時,規(guī)則不起作用。向系統(tǒng)中大量拷貝數(shù)據(jù)時,規(guī)則不起作用。l 在使用規(guī)則時,要確保規(guī)則中的值與其綁定列的數(shù)據(jù)在使用規(guī)則時,要確保規(guī)則中的值與其綁定列的數(shù)據(jù)類型相一致。類型相一致。默認(rèn)默認(rèn)是一種數(shù)據(jù)庫對象,它與默認(rèn)值約束的功能一樣。是一種數(shù)據(jù)庫對象,它與默認(rèn)值約束的功能一樣。和規(guī)則一樣,默認(rèn)在創(chuàng)建后和規(guī)則一樣,默認(rèn)在創(chuàng)建后, ,必須和某一列綁定才能必須和某一列綁定才能生效生效。功能功能: : 創(chuàng)建稱為默認(rèn)值的對象。創(chuàng)建稱為默認(rèn)值的對象。 默認(rèn)值定義是限制列數(shù)據(jù)的首選,也是標(biāo)準(zhǔn)的方法,默認(rèn)值定義
38、是限制列數(shù)據(jù)的首選,也是標(biāo)準(zhǔn)的方法,因為定義和表存儲在一起,當(dāng)除去表時,將自動除去因為定義和表存儲在一起,當(dāng)除去表時,將自動除去默認(rèn)值定義。默認(rèn)值定義。 常量表達式只包含常量值的表達式,不能包含任何常量表達式只包含常量值的表達式,不能包含任何或其他數(shù)據(jù)庫對象的名稱?;蚱渌麛?shù)據(jù)庫對象的名稱。 可以使用任何常量、內(nèi)可以使用任何常量、內(nèi)建函數(shù)或數(shù)學(xué)表達式。建函數(shù)或數(shù)學(xué)表達式。2.2.默認(rèn)默認(rèn)(1 1)使用企業(yè)管理器創(chuàng)建默認(rèn))使用企業(yè)管理器創(chuàng)建默認(rèn) create defaultcreate default as as 例:例: 創(chuàng)建默認(rèn)創(chuàng)建默認(rèn) use use 學(xué)生信息學(xué)生信息 gogo create
39、 default create default time_defaulttime_default asas getdategetdate()()(2 2)使用)使用create defaultcreate default語句創(chuàng)建默認(rèn)語句創(chuàng)建默認(rèn)綁定默認(rèn)綁定默認(rèn)解除綁定解除綁定刪除綁定:刪除綁定:Drop default use use 學(xué)生學(xué)生信息信息 gogo drop default drop default 1 13.2.4 3.2.4 用用Transact-SQLTransact-SQL語句創(chuàng)建數(shù)據(jù)表語句創(chuàng)建數(shù)據(jù)表 一、創(chuàng)建數(shù)據(jù)表的一、創(chuàng)建數(shù)據(jù)表的Transact-SQLTransac
40、t-SQL語句語句: :CREATE TABLECREATE TABLE 數(shù)據(jù)庫名數(shù)據(jù)庫名. . 所有者所有者.| .| 所有者所有者. . 表名表名 ( ( ,. ,.n n ) ) 列名列名 列數(shù)據(jù)類型列數(shù)據(jù)類型 列寬度列寬度 DEFAULT DEFAULT 默認(rèn)值默認(rèn)值 , . .n n 的格式如下:的格式如下:用用CREATE TABLECREATE TABLE語句創(chuàng)建數(shù)據(jù)表語句創(chuàng)建數(shù)據(jù)表 【例【例3.3.1 1】用用CREATE TABLECREATE TABLE語句創(chuàng)建教師表語句創(chuàng)建教師表teacherteacher。USE USE teachdbteachdb / /* *打開數(shù)
41、據(jù)庫打開數(shù)據(jù)庫* */ /CREATE TABLE teacherCREATE TABLE teacher( t_no char (4) NOT NULL PRIMARY KEY, ( t_no char (4) NOT NULL PRIMARY KEY, / /* *用列約束將職工號定義為非空,主鍵用列約束將職工號定義為非空,主鍵* */ / t_name char (10),t_name char (10), t_sex char (2) DEFAULT t_sex char (2) DEFAULT 男男, /, /* *定義默認(rèn)值定義默認(rèn)值* */ / t_duty char (10)t
42、_duty char (10) )注意:在列定義時,同一列的列名、數(shù)據(jù)類型和約束之間注意:在列定義時,同一列的列名、數(shù)據(jù)類型和約束之間用空格分隔,但各列之間要用逗號用空格分隔,但各列之間要用逗號“,”分隔。分隔。 約束類型約束類型功功 能能 說說 明明primary keyprimary key保證主鍵的實體完整性保證主鍵的實體完整性主鍵的值不能有重復(fù)值,主鍵的值不能有重復(fù)值,且不為且不為nullnull。使用時,。使用時,往往在其上建立索引,往往在其上建立索引,以提高數(shù)據(jù)庫的性能。以提高數(shù)據(jù)庫的性能。uniqueunique保證非主鍵的實體完整保證非主鍵的實體完整性性非主鍵非主鍵( (即非主
43、關(guān)鍵字即非主關(guān)鍵字) )的值不能有重復(fù)值。的值不能有重復(fù)值。foreign keyforeign key保證參照完整性保證參照完整性一個表中的值,須參照一個表中的值,須參照另外一個表中的主鍵值。另外一個表中的主鍵值。checkcheck域完整性域完整性字段可以取值的范圍。字段可以取值的范圍。defaultdefault域完整性域完整性為字段賦予特定的值。為字段賦予特定的值。Not nullNot null實體完整性實體完整性非空約束。非空約束。二、二、 約束約束1 1、約束的定義、約束的定義 在在SQL ServerSQL Server系統(tǒng)中,約束的定義主要是通過系統(tǒng)中,約束的定義主要是通過c
44、reate create tabletable語句語句或或alter tablealter table語句來實現(xiàn)的。語句來實現(xiàn)的。 使用使用create tablecreate table語句,是在建立新表的同時定義了約語句,是在建立新表的同時定義了約束。束。 使用使用alter tablealter table語句,是向已經(jīng)存在的表中添加約束。語句,是向已經(jīng)存在的表中添加約束。 約束可以是約束可以是字段級字段級約束,也可以是約束,也可以是表級表級約束。約束。l 字段級約束是把約束放在某個字段列上的,字段級約束是把約束放在某個字段列上的,且約束僅對該字段列起作用;且約束僅對該字段列起作用;l
45、表級約束是把約束放在表中的多個字段列上。表級約束是把約束放在表中的多個字段列上。由列約束和表約束的格式來看,它們的功能是基本相同的。由列約束和表約束的格式來看,它們的功能是基本相同的。區(qū)別是區(qū)別是列約束在定義完指定列后直接定義列約束在定義完指定列后直接定義,而,而表約束是在表約束是在定義完所有列之后定義定義完所有列之后定義。使用使用create tablecreate table語句創(chuàng)建約束語句創(chuàng)建約束其語法形式為:其語法形式為:CREATE TABLE CREATE TABLE table_nametable_name( ( column_namecolumn_name data_typed
46、ata_type CONSTRAINT CONSTRAINT constraint_nameconstraint_name constraint_typeconstraint_type , ,n )n ) constraint_nameconstraint_name:要創(chuàng)建的約束的名字。若缺省約束名,要創(chuàng)建的約束的名字。若缺省約束名,則則SQL ServerSQL Server會自動為約束提供一個名字。會自動為約束提供一個名字。 constraint_typeconstraint_type:要創(chuàng)建的約束類型。要創(chuàng)建的約束類型。 使用使用alter tablealter table語句創(chuàng)建約束語
47、句創(chuàng)建約束 其語法形式為:其語法形式為:ALTER TABLE ALTER TABLE table_nametable_name WITH CHECK | WITH NOCHECK WITH CHECK | WITH NOCHECK ADD CONSTRAINT ADD CONSTRAINT constraint_nameconstraint_name constraint_typeconstraint_typeDrop constraint Drop constraint constraint_name WITH CHECK | WITH NOCHECK WITH CHECK | WITH
48、NOCHECK:新加入的約束對表中現(xiàn)有的:新加入的約束對表中現(xiàn)有的數(shù)據(jù)是否進行檢查。數(shù)據(jù)是否進行檢查。 CONSTRAINT CONSTRAINT constraint_nameconstraint_name:強制起索引文件名:強制起索引文件名 例例1 1:創(chuàng)建列級主鍵約束,:創(chuàng)建列級主鍵約束,。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫 gogo create table create table 學(xué)生表學(xué)生表1 1 ( ( 學(xué)號學(xué)號 varcharvarchar(9) not null (9) not null primary keyprimary key, , 姓名姓名 varcha
49、rvarchar(8),(8), 性別性別 varcharvarchar(2),(2), 年齡年齡 tinyinttinyint, , 所在院系所在院系 varcharvarchar(10),(10), 班級名班級名 varcharvarchar(10),(10), 入學(xué)年份入學(xué)年份 datetimedatetime ) )Primary keyPrimary key約束約束例例2 2:創(chuàng)建列級主鍵約束,:創(chuàng)建列級主鍵約束,。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫 gogo create table create table 學(xué)生表學(xué)生表2 2 ( (學(xué)號學(xué)號 varchar(9) v
50、archar(9) constraint constraint pk_pk_學(xué)號學(xué)號 not null primary key, not null primary key, 姓名姓名 varchar(8), varchar(8), 性別性別 varchar(2), varchar(2), 年齡年齡 tinyinttinyint, , 所在院系所在院系 varchar(10), varchar(10), 班級名班級名 varchar(10), varchar(10), 入學(xué)年份入學(xué)年份 datetimedatetime, , ) )Primary keyPrimary key約束約束例例3 3:
51、創(chuàng)建列級主鍵約束,有約束名。:創(chuàng)建列級主鍵約束,有約束名。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫 gogo create table create table 選課表選課表 ( (學(xué)號學(xué)號 varchar(9), varchar(9), 課程號課程號 varcharvarchar( (1010),), 學(xué)分學(xué)分 tinyinttinyint, ,constraint constraint pk_pk_學(xué)號學(xué)號課程號課程號 not null primary key( not null primary key(學(xué)號學(xué)號,課程號課程號) ) ) )Primary keyPrimary key
52、約束約束例例4:課程表以創(chuàng)建,但沒有設(shè)置主鍵,請將:課程表以創(chuàng)建,但沒有設(shè)置主鍵,請將課程號設(shè)置為主鍵。課程號設(shè)置為主鍵。ALTER TABLE ALTER TABLE 課程表課程表ADD PRIMARY KEY(ADD PRIMARY KEY(課程號課程號) )ALTER TABLE ALTER TABLE 課程表課程表ADD CONSTRANT PK_ADD CONSTRANT PK_課程號課程號 PRIMARY KEY(PRIMARY KEY(課程號課程號) )Primary keyPrimary key約束約束uniqueunique約束約束例:創(chuàng)建列級唯一約束,無約束名。例:創(chuàng)建列級
53、唯一約束,無約束名。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫gogocreate table create table 課程表課程表3 3 ( ( 課程號課程號 varchar(4) not null primary key,varchar(4) not null primary key, 課程名課程名 varchar(12) varchar(12) uniqueunique, , 選修課選修課 varchar(4) ,varchar(4) , ) )例:創(chuàng)建列級唯一約束,有約束名。例:創(chuàng)建列級唯一約束,有約束名。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫 gogo create t
54、able create table 課程表課程表3 3 ( ( 課程號課程號 varcharvarchar(4) not null primary key,(4) not null primary key, 課程名課程名 varcharvarchar(12),(12), 選修課選修課 varcharvarchar(4) ,(4) , constraint u_constraint u_課程名課程名 unique(unique(課程名課程名) ) ) )uniqueunique約束約束例:向表添加列級唯一約束,有約束名。例:向表添加列級唯一約束,有約束名。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理
55、數(shù)據(jù)庫 gogo alter alter table table 課程表課程表3 3 add constraint add constraint u_ u_課程名課程名 unique(unique(課程名課程名) )foreign key foreign key 約束約束use use 學(xué)生管理數(shù)據(jù)學(xué)生管理數(shù)據(jù)gogocreate table create table 成績表成績表 ( ( 學(xué)號學(xué)號 varchar(9) varchar(9)constraint constraint fk_fk_學(xué)號學(xué)號 not null foreign key references not null for
56、eign key references 學(xué)生表學(xué)生表 ( (學(xué)號學(xué)號) ), , 課程號課程號 varchar(4) varchar(4) constraint constraint fk_fk_課程號課程號 not null foreign key references not null foreign key references 課程表課程表( (課程號課程號) ), ,constraint constraint pk_pk_學(xué)號學(xué)號_ _課程號課程號 primary key( primary key(學(xué)號學(xué)號, ,課程號課程號),), 成績成績 tinyinttinyint ) )例:
57、向表添加列級外鍵約束,有約束名。例:向表添加列級外鍵約束,有約束名。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫 gogo alter table alter table 成績表成績表1 1 with checkwith check add constraint add constraint fk_fk_課程號課程號1 foreign key(1 foreign key(課程號課程號) ) references references 課程表課程表1(1(課程號課程號) )default default 約束約束 當(dāng)用戶沒有為定義為當(dāng)用戶沒有為定義為defaultdefault約束的字段輸入數(shù)
58、據(jù)時約束的字段輸入數(shù)據(jù)時, , 由由default default 約束提約束提供默認(rèn)的值。供默認(rèn)的值。 例:例:use use 學(xué)生數(shù)據(jù)庫學(xué)生數(shù)據(jù)庫gogocreate table create table 成績表成績表 ( (學(xué)號學(xué)號 varchar(9) varchar(9)constraint constraint fk_fk_學(xué)號學(xué)號 not null foreign key references not null foreign key references 學(xué)生表學(xué)生表( (學(xué)號學(xué)號),), 課程號課程號 varchar(4) varchar(4) constraint cons
59、traint fk_fk_課程號課程號 not null foreign key references not null foreign key references 課程表課程表( (課程號課程號),),constraint constraint pk_pk_學(xué)號學(xué)號_ _課程號課程號 primary key( primary key(學(xué)號學(xué)號, ,課程號課程號),), 成績成績 tinyinttinyintconstraint constraint d_d_成績成績 default 0 default 0 ) ) 例:創(chuàng)建列級核查約束,無約束名。例:創(chuàng)建列級核查約束,無約束名。use us
60、e 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫gogocreate table create table 成績表成績表1 1 ( ( 學(xué)號學(xué)號 varchar(9) varchar(9), , 課程號課程號 varchar(4), varchar(4), 成績成績 tinyinttinyint check(check(成績成績 between 0 and 100) between 0 and 100) ) ) checkcheck約束約束例:向表添加列級核查約束,有約束名。例:向表添加列級核查約束,有約束名。 use use 學(xué)生管理數(shù)據(jù)庫學(xué)生管理數(shù)據(jù)庫 gogo alter table alter tab
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公室租賃合同模板
- 招標(biāo)文件范本的標(biāo)準(zhǔn)制作流程
- 軟件采購合同樣式
- 碎石采購協(xié)議書格式
- 創(chuàng)新服務(wù)采購協(xié)議
- 租房合同解除協(xié)議書范文
- 工程分包合同中的勞務(wù)培訓(xùn)計劃與實施
- 蔬菜購銷合同的解除注意事項
- 礦機設(shè)備購買合同示范
- 三方協(xié)議服務(wù)共贏
- 2024年河南省中職對口升學(xué)高考語文試題真題(解析版)
- 《食品行業(yè)ERP應(yīng)用》課件
- 41-降低懸挑式卸料平臺安全隱患發(fā)生率 棗莊華廈(4:3定稿)
- 西安交通大學(xué)《臨床流行病學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年中考語文試題分類匯編:基礎(chǔ)知識綜合(教師版)
- 2023-2024學(xué)年廣東省深圳市南山區(qū)八年級(上)期末英語試卷
- 期末 (試題) -2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 中醫(yī)跨文化傳播智慧樹知到期末考試答案章節(jié)答案2024年浙江中醫(yī)藥大學(xué)
- 廣東省中山市2023-2024學(xué)年四年級上學(xué)期期末數(shù)學(xué)試卷
- 剪刀式升降車專項施工方案
- 慢性腎衰中醫(yī)護理方案
評論
0/150
提交評論