創(chuàng)建數(shù)據(jù)庫表與約束課件_第1頁
創(chuàng)建數(shù)據(jù)庫表與約束課件_第2頁
創(chuàng)建數(shù)據(jù)庫表與約束課件_第3頁
創(chuàng)建數(shù)據(jù)庫表與約束課件_第4頁
創(chuàng)建數(shù)據(jù)庫表與約束課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章創(chuàng)建數(shù)據(jù)庫表與約束第二章創(chuàng)建數(shù)據(jù)庫表與約束1內(nèi)容提要2.1表相關(guān)的幾個基本概念2.2建立數(shù)據(jù)庫表2.3建立表間關(guān)系2.4建立檢查約束2.5導入和導出數(shù)據(jù)2.6刪除表內(nèi)容提要2.1表相關(guān)的幾個基本概念22.1表相關(guān)的幾個基本概念一、數(shù)據(jù)完整性數(shù)據(jù)完整性是要求數(shù)據(jù)庫中的數(shù)據(jù)具有準確性。準確性是通過數(shù)據(jù)庫表的設計和約束來實現(xiàn)的。SQLServer提供了以下4種類型的約束(Constraint):1、實體完整性約束實體完整性約束要求表中的每一行數(shù)據(jù)都反映不同的實體,不能在表中存在完全相同的數(shù)據(jù)行。實現(xiàn)方法:索引、唯一約束、主鍵約束或標識列屬性。2.1表相關(guān)的幾個基本概念一、數(shù)據(jù)完整性32、域完整性約束域完整性約束是給定列的輸入有效性。實現(xiàn)方法:限制數(shù)據(jù)類型、檢查約束、輸入格式、外鍵約束、默認值、非空約束。

例如:學生的成績?nèi)舳x為整數(shù)類型則不能輸入帶小數(shù)的分數(shù);學生選修的課程必須是課程表中實際存在的課程。2、域完整性約束43、引用完整性

在輸入或刪除數(shù)據(jù)行時,引用完整性約束來保持表之間已經(jīng)定義的關(guān)系。在強制引用完整性時,SQLServer禁止用戶進行下列操作:(1)當主表中沒有關(guān)聯(lián)的記錄時,將記錄添加到相關(guān)表中。(2)更改主表中的值導致相關(guān)表中的記錄孤立。(3)從主表中刪除記錄,但仍存在與該記錄匹配的相關(guān)記錄。實現(xiàn)方法:通過主鍵和外鍵之間的引用關(guān)系來實現(xiàn)。3、引用完整性5學號姓名性別年齡……200901李爽女19200902吳小蘭女18200903張麗娟女19200904趙華男20學生表:(主表)學號課程號成績……200901180200901575200902190200903260………………成績表:(子表)學號姓名性別年齡……200901李爽女19200902吳小蘭64、自定義完整性約束

用戶根據(jù)具體應用來定義特定的規(guī)則。如定義學生年齡必須在10到30之間。實現(xiàn)方法:定義規(guī)則、存儲過程或觸發(fā)器。4、自定義完整性約束7二、主鍵(PrimaryKey)和外鍵(ForeignKey)1、主鍵表中有一列或幾列組合的值能用來唯一地標識表中的每一行,這樣的一列或者多列的組合叫做表的主鍵。如:學號可以作為學生表的主鍵,課程號可以作為課程表的主鍵,(學號,課程號)作為成績表的主鍵(組合鍵)說明:(1)一個表只能有一個主鍵,主鍵約束確保了表中的行是唯一的。(2)表中可以沒有主鍵,但是通常情況下應當為表設置一個主鍵。二、主鍵(PrimaryKey)和外鍵(ForeignK8思考:在主鍵列輸入的數(shù)值,允許為空嗎?一個表可以有多個主鍵嗎?在一個學校數(shù)據(jù)庫中,如果一個學校內(nèi)允許重名的學員,但是一個班級內(nèi)不允許學員重名,可以組合班級和姓名兩個字段一起來作為主鍵嗎?思考:92、外鍵簡單地說,就是“子表”中對應于“主表”的列,在子表中稱為外鍵或者引用鍵。它的值要求與主表的主鍵或者唯一鍵相對應,外鍵用來強制引用完整性。例如在成績表中,學號為外鍵。一個表可以有多個外鍵。2、外鍵102.2建立數(shù)據(jù)庫表一、創(chuàng)建數(shù)據(jù)庫表在SQLServerManagementStudio中,展開“studentdb”數(shù)據(jù)庫節(jié)點,然后在“表”上右擊選擇“新建表”,在出現(xiàn)的表設計器中可以輸入表中各列的信息,如列名、數(shù)據(jù)類型、是否允許空,如下圖所示:2.2建立數(shù)據(jù)庫表一、創(chuàng)建數(shù)據(jù)庫表11圖2-1在SQLServerManagementStudio中創(chuàng)建students表圖2-1在SQLServerManagementS12輸完各列信息以后,單擊保存按鈕,輸入表名稱:students。在對象資源管理器中展開“表”節(jié)點即可看到students已經(jīng)存在。這只是建立了表的框架,還需要輸入記錄數(shù)據(jù)。方法:在students上右擊選擇“打開表”,依次輸入各條記錄。在students表中,我們用到了nchar和datetime兩種數(shù)據(jù)類型,在SQLServer中提供了豐富的數(shù)據(jù)類型供我們選擇。下面介紹一下常用的數(shù)據(jù)類型。輸完各列信息以后,單擊保存按鈕,輸入表名稱:s13二、SQLServer中常用的數(shù)據(jù)類型1、數(shù)字數(shù)據(jù)類型數(shù)據(jù)類型說明bigint從-263~263-1的整型數(shù)據(jù),存儲大小為8個字節(jié)int從-231~231-1的整型數(shù)據(jù),存儲大小為4個字節(jié)Smallint從-215~215-1的整型數(shù)據(jù),存儲大小為2個字節(jié)tinyint從0~255的整型數(shù)據(jù),存儲大小為1個字節(jié)bit只能包括0、1或NULL,可以用bit數(shù)據(jù)類型代表TRUE或FALSE、YES或NO。二、SQLServer中常用的數(shù)據(jù)類型數(shù)據(jù)類型說明big14數(shù)據(jù)類型說明decimal[(p[,s])]帶定點精度和小數(shù)位數(shù)的數(shù)值數(shù)據(jù)類型。p表示精度,指定小數(shù)點左邊和右邊可以存儲的十進制數(shù)字的最大個數(shù)。精度必須是1到38之間的整數(shù)。s表示小數(shù)位數(shù),指定小數(shù)點右邊可以存儲的十進制數(shù)字的最大個數(shù)。小數(shù)位數(shù)必須是從0到p之間的整數(shù),默認小數(shù)位數(shù)為0。numeric[(p[,s])]同decimal[(p[,s])]float[(n)]從-1.79E+308~1.79E+308之間的浮點數(shù)字數(shù)據(jù)。n為用于存儲科學計數(shù)法float數(shù)尾數(shù)的位數(shù),同時指示其精度和存儲大小。n必須為1~53之間的值。real從-3.40E+308~3.40E+308之間的浮點數(shù)字數(shù)據(jù)。存儲大小為4字節(jié)。數(shù)據(jù)類型說明decimal[(p[,s])]帶定點精度和小數(shù)152、文本數(shù)據(jù)類型可以存儲由任意字母、符號或數(shù)字字符組成的數(shù)據(jù)。根據(jù)字符長度可以分為固定長度、可變長度兩種,根據(jù)字符定義方法又分為非Unicode數(shù)據(jù)類型和Unicode數(shù)據(jù)類型兩種。Unicode(統(tǒng)一碼)數(shù)據(jù)類型用兩個字節(jié)表示一個字符。它幾乎可以表示世界上所有的字符集。具體說明如下:2、文本數(shù)據(jù)類型16數(shù)據(jù)類型說明char(n)固定長度的非Unicode字符數(shù)據(jù),n必須是一個1~8000之間的整數(shù)。varchar(n)可變長度的非Unicode字符數(shù)據(jù),n必須是一個1~8000之間的整數(shù)。text可變長度的非Unicode長文本數(shù)據(jù),最大長度為231-1個字符。nchar(n)固定長度的Unicode字符數(shù)據(jù),n必須是一個1~4000之間的整數(shù)。nvarchar(n)可變長度的Unicode字符數(shù)據(jù),n必須是一個1~4000之間的整數(shù)。ntext可變長度的Unicode長文本數(shù)據(jù),最大長度為230-1個字符。數(shù)據(jù)類型說明char(n)固定長度的非Unicode字符數(shù)據(jù)173、日期和時間類型由有效的日期或時間組成。例如:“4/01/9812:15:00:00:00PM”、”1:28:29:15:01AM8/17/98”。日期和時間類型又分為兩種:數(shù)據(jù)類型說明datetime能表示從1753年1月1日到9999年12月31日的日期和時間數(shù)據(jù),精確度為百分之三秒(3.33毫秒)。用兩個4字節(jié)整數(shù)存儲,第一個4字節(jié)存儲日期,第二個4字節(jié)存儲時間。smalldatetime能表示從1900年1月1日到2079年6月6日的日期和時間數(shù)據(jù),精確到分鐘。用兩個2字節(jié)整數(shù)存儲,第一個2字節(jié)存儲日期,第二個2字節(jié)存儲時間。3、日期和時間類型數(shù)據(jù)類型說明datetime能表示從175184、貨幣數(shù)據(jù)類型數(shù)據(jù)類型說明money介于-263~263-1之間,精確到小數(shù)點后面4位數(shù)字,存儲大小為8個字節(jié)。smallmoney介于-214748.3648~+214748.3647之間,精確到小數(shù)點后面4位數(shù)字,存儲大小為4個字節(jié)。4、貨幣數(shù)據(jù)類型數(shù)據(jù)類型說明money介于-263~263-195、二進制數(shù)據(jù)類型二進制字符串由十六進制數(shù)表示。數(shù)據(jù)類型說明Binary(n)固定長度的n個字節(jié)二進制數(shù),n必須從1~8000,存儲空間為n個字節(jié)。Varbinary(n)可變長度的n個字節(jié)二進制數(shù),n必須從1~8000,存儲空間為實際輸入數(shù)據(jù)長度+2個字節(jié)。image可以用來存儲超過8KB的可變長度的二進制數(shù)據(jù),如MicrosoftWord文檔,MicrosoftExcel電子表格、包含位圖的圖像、GIF文件和JPEG文件。5、二進制數(shù)據(jù)類型數(shù)據(jù)類型說明Binary(n)固定長度的n20思考:在創(chuàng)建表時下列列一般定義為何種數(shù)據(jù)類型?姓名、地址、電話號碼等:年齡:出生日期:照片:薪水:字符型整型日期時間型image貨幣型思考:在創(chuàng)建表時下列列一般定義為何種數(shù)據(jù)類型?字符型整型日期21三、建立主鍵建立主鍵的方法為:選擇要建立主鍵的列(如果主鍵為組合鍵,可以按住ctrl鍵單擊選中各列),右擊選擇“設置主鍵”。如果在定義表時未定義主鍵,以后可以在表名上右擊選擇“修改”,進行設置。三、建立主鍵22四、設置默認值有時候,對某項數(shù)據(jù)進行輸入的時候,它總是存在一個默認值,例如女子學院中的學員性別通常應該是“女”。四、設置默認值23五、標識列在有些情況下,存儲的信息中很難找到不重復的信息作為列的主鍵,SQLServer提供了一個“標識列”,特意對列進行區(qū)分,標識列本身沒有具體的意義。標識列的實現(xiàn)方式如下:(1)如果一列的數(shù)據(jù)屬于數(shù)字類型(例如整數(shù)),則可以把該列定義為標識列。(2)定義成標識列后,還需要分別指定“標識種子”和“標識地增量”,默認值都是1。五、標識列24(3)定義了標識列以后,在每次輸入數(shù)據(jù)的時候,該列隨數(shù)據(jù)行的增加而自動增加數(shù)字,并且不會重復,第一次的數(shù)字就是“標識種子”值,以后每次按照“標識遞增量”增加數(shù)值。標識列通常也被定義為主鍵,通常說的“自動編號”就是指標識列的數(shù)字自動增加。(3)定義了標識列以后,在每次輸入數(shù)據(jù)的時候,該列隨數(shù)據(jù)行的252.3建立表間關(guān)系建立表間關(guān)系實際上就是實施引用完整性約束,建立主表和子表關(guān)系。前面已經(jīng)創(chuàng)建了students表,主鍵為sno。在studentdb數(shù)據(jù)庫中再創(chuàng)建lessons表和scores表。這兩個表的定義如下:lessons(lno,lname,credit),主鍵為lnoscores(sno,lno,score),主鍵為(sno,lno)2.3建立表間關(guān)系建立表間關(guān)系實際上就是實施引26創(chuàng)建數(shù)據(jù)庫表與約束課件27可以按以下步驟建立students和scores這兩張表的關(guān)系:(1)在scores表的設計窗口中右擊,選擇“關(guān)系”,單擊“添加”按鈕。(2)單擊“表和列規(guī)范”最右側(cè)的小按鈕,在顯示的對話框中選擇主表為student,主鍵字段為sno,對應的外鍵表scores的字段為sno。(3)單擊確定并保存表結(jié)構(gòu),這樣它們之間的主-外鍵關(guān)系就建立了??梢园匆韵虏襟E建立students和scores28要查看表之間的關(guān)系,可以在數(shù)據(jù)庫中選擇“數(shù)據(jù)庫關(guān)系圖”選項,然后根據(jù)提示信息新建數(shù)據(jù)庫關(guān)系圖。還可以用下面的方法建立主-外鍵關(guān)系,如lessons表和scores表之間:在新建的關(guān)系圖中添加lessons表,然后將scores表的lno列拖動到lessons表的lno列上松手,在出現(xiàn)的對話框中進行設置。要查看表之間的關(guān)系,可以在數(shù)據(jù)庫中選擇“數(shù)據(jù)庫29三個表之間的關(guān)系圖如下所示:三個表之間的關(guān)系圖如下所示:302.4建立檢查約束檢查約束也叫CHECK約束,用于定義列中可接受的數(shù)據(jù)或者格式,例如scores表中的score數(shù)值應當為0~100,如果不滿足要求應當不允許輸入。方法:在設計scores表時,右擊選擇“CHECK約束”,在出現(xiàn)的對話框中單擊“添加”按鈕,添加一個新的約束。然后單擊“表達式”右側(cè)的小按鈕,在彈出的“CHECK約束表達式”對話框中輸入:0<=scoreandscore<=100單擊“確定”按鈕后保存表,該約束建立。可以打開scores表輸入或修改數(shù)據(jù)進行驗證。2.4建立檢查約束檢查約束也叫CHECK約束,用于定義列中31思考:1、如何定義約束來檢查郵件地址(SEmail)輸入是否有效?SEmailLIKE‘%@%’2、如何定義約束來檢查年齡(Sage)是否在10~50之間?Sage>=10andSage<=50思考:SEmailLIKE‘%@%’2、如何定義約束來檢323、要求學號(sno)必須為10位數(shù)字,且以2009打頭:snolike‘2009[0-9][0-9][0-9][0-9][0-9][0-9]’3、要求學號(sno)必須為10位數(shù)字,且以2009打頭:332.5導入和導出數(shù)據(jù)有時候,需要把存儲在數(shù)據(jù)庫中的數(shù)據(jù)導出保存成文本文件或Excel文件,或者把Excel文件中的數(shù)據(jù)導入到數(shù)據(jù)庫表中,這時候就可以使用數(shù)據(jù)庫的導入/導出向?qū)А?/p>

方法:右擊數(shù)據(jù)庫,選擇“任務”中的“導出數(shù)據(jù)”選項,在向?qū)е羞x擇數(shù)據(jù)庫,單擊“下一步”;輸入文件名稱并確定文件相關(guān)選項;選擇是否用一條查詢語句進行復制;選擇表名并設置文本文件的格式;確定是否立即運行,是否保存該轉(zhuǎn)換設置,單擊“下一步”一直到完成。2.5導入和導出數(shù)據(jù)有時候,需要把存儲在數(shù)據(jù)342.6刪除表對于不再使用的數(shù)據(jù)表,可以刪除以釋放磁盤空間,選擇該表,右擊選擇“刪除”選項即可。對于建立主外鍵關(guān)系的表,如果要刪除主表,則首先要刪除相關(guān)的子表以保證數(shù)據(jù)的引用完整性。另外,刪除表一定要謹慎,不然會造成有用的數(shù)據(jù)丟失。2.6刪除表對于不再使用的數(shù)據(jù)表,可以刪除以釋放磁盤空間,35本章總結(jié)創(chuàng)建數(shù)據(jù)庫表需要確定表的列名、數(shù)據(jù)類型、是否允許為空,還需要確定主鍵、必要的默認值、標識列和檢查約束。創(chuàng)建表的過程是規(guī)定數(shù)據(jù)列屬性的過程,同時也是實施數(shù)據(jù)完整性(包括實體完整性、引用完整性和域完整性)的過程。本章總結(jié)創(chuàng)建數(shù)據(jù)庫表需要確定表的列名、數(shù)據(jù)類型、是否允許為空36如果建立了主表和子表的關(guān)系,則:子表中的相關(guān)項目數(shù)據(jù),在主表中必須存在主表中相關(guān)項的數(shù)據(jù)更改了,則子表對應的數(shù)據(jù)項也必須隨之更改在刪除子表之前,不能夠刪除主表如果建立了主表和子表的關(guān)系,則:37第二章創(chuàng)建數(shù)據(jù)庫表與約束第二章創(chuàng)建數(shù)據(jù)庫表與約束38內(nèi)容提要2.1表相關(guān)的幾個基本概念2.2建立數(shù)據(jù)庫表2.3建立表間關(guān)系2.4建立檢查約束2.5導入和導出數(shù)據(jù)2.6刪除表內(nèi)容提要2.1表相關(guān)的幾個基本概念392.1表相關(guān)的幾個基本概念一、數(shù)據(jù)完整性數(shù)據(jù)完整性是要求數(shù)據(jù)庫中的數(shù)據(jù)具有準確性。準確性是通過數(shù)據(jù)庫表的設計和約束來實現(xiàn)的。SQLServer提供了以下4種類型的約束(Constraint):1、實體完整性約束實體完整性約束要求表中的每一行數(shù)據(jù)都反映不同的實體,不能在表中存在完全相同的數(shù)據(jù)行。實現(xiàn)方法:索引、唯一約束、主鍵約束或標識列屬性。2.1表相關(guān)的幾個基本概念一、數(shù)據(jù)完整性402、域完整性約束域完整性約束是給定列的輸入有效性。實現(xiàn)方法:限制數(shù)據(jù)類型、檢查約束、輸入格式、外鍵約束、默認值、非空約束。

例如:學生的成績?nèi)舳x為整數(shù)類型則不能輸入帶小數(shù)的分數(shù);學生選修的課程必須是課程表中實際存在的課程。2、域完整性約束413、引用完整性

在輸入或刪除數(shù)據(jù)行時,引用完整性約束來保持表之間已經(jīng)定義的關(guān)系。在強制引用完整性時,SQLServer禁止用戶進行下列操作:(1)當主表中沒有關(guān)聯(lián)的記錄時,將記錄添加到相關(guān)表中。(2)更改主表中的值導致相關(guān)表中的記錄孤立。(3)從主表中刪除記錄,但仍存在與該記錄匹配的相關(guān)記錄。實現(xiàn)方法:通過主鍵和外鍵之間的引用關(guān)系來實現(xiàn)。3、引用完整性42學號姓名性別年齡……200901李爽女19200902吳小蘭女18200903張麗娟女19200904趙華男20學生表:(主表)學號課程號成績……200901180200901575200902190200903260………………成績表:(子表)學號姓名性別年齡……200901李爽女19200902吳小蘭434、自定義完整性約束

用戶根據(jù)具體應用來定義特定的規(guī)則。如定義學生年齡必須在10到30之間。實現(xiàn)方法:定義規(guī)則、存儲過程或觸發(fā)器。4、自定義完整性約束44二、主鍵(PrimaryKey)和外鍵(ForeignKey)1、主鍵表中有一列或幾列組合的值能用來唯一地標識表中的每一行,這樣的一列或者多列的組合叫做表的主鍵。如:學號可以作為學生表的主鍵,課程號可以作為課程表的主鍵,(學號,課程號)作為成績表的主鍵(組合鍵)說明:(1)一個表只能有一個主鍵,主鍵約束確保了表中的行是唯一的。(2)表中可以沒有主鍵,但是通常情況下應當為表設置一個主鍵。二、主鍵(PrimaryKey)和外鍵(ForeignK45思考:在主鍵列輸入的數(shù)值,允許為空嗎?一個表可以有多個主鍵嗎?在一個學校數(shù)據(jù)庫中,如果一個學校內(nèi)允許重名的學員,但是一個班級內(nèi)不允許學員重名,可以組合班級和姓名兩個字段一起來作為主鍵嗎?思考:462、外鍵簡單地說,就是“子表”中對應于“主表”的列,在子表中稱為外鍵或者引用鍵。它的值要求與主表的主鍵或者唯一鍵相對應,外鍵用來強制引用完整性。例如在成績表中,學號為外鍵。一個表可以有多個外鍵。2、外鍵472.2建立數(shù)據(jù)庫表一、創(chuàng)建數(shù)據(jù)庫表在SQLServerManagementStudio中,展開“studentdb”數(shù)據(jù)庫節(jié)點,然后在“表”上右擊選擇“新建表”,在出現(xiàn)的表設計器中可以輸入表中各列的信息,如列名、數(shù)據(jù)類型、是否允許空,如下圖所示:2.2建立數(shù)據(jù)庫表一、創(chuàng)建數(shù)據(jù)庫表48圖2-1在SQLServerManagementStudio中創(chuàng)建students表圖2-1在SQLServerManagementS49輸完各列信息以后,單擊保存按鈕,輸入表名稱:students。在對象資源管理器中展開“表”節(jié)點即可看到students已經(jīng)存在。這只是建立了表的框架,還需要輸入記錄數(shù)據(jù)。方法:在students上右擊選擇“打開表”,依次輸入各條記錄。在students表中,我們用到了nchar和datetime兩種數(shù)據(jù)類型,在SQLServer中提供了豐富的數(shù)據(jù)類型供我們選擇。下面介紹一下常用的數(shù)據(jù)類型。輸完各列信息以后,單擊保存按鈕,輸入表名稱:s50二、SQLServer中常用的數(shù)據(jù)類型1、數(shù)字數(shù)據(jù)類型數(shù)據(jù)類型說明bigint從-263~263-1的整型數(shù)據(jù),存儲大小為8個字節(jié)int從-231~231-1的整型數(shù)據(jù),存儲大小為4個字節(jié)Smallint從-215~215-1的整型數(shù)據(jù),存儲大小為2個字節(jié)tinyint從0~255的整型數(shù)據(jù),存儲大小為1個字節(jié)bit只能包括0、1或NULL,可以用bit數(shù)據(jù)類型代表TRUE或FALSE、YES或NO。二、SQLServer中常用的數(shù)據(jù)類型數(shù)據(jù)類型說明big51數(shù)據(jù)類型說明decimal[(p[,s])]帶定點精度和小數(shù)位數(shù)的數(shù)值數(shù)據(jù)類型。p表示精度,指定小數(shù)點左邊和右邊可以存儲的十進制數(shù)字的最大個數(shù)。精度必須是1到38之間的整數(shù)。s表示小數(shù)位數(shù),指定小數(shù)點右邊可以存儲的十進制數(shù)字的最大個數(shù)。小數(shù)位數(shù)必須是從0到p之間的整數(shù),默認小數(shù)位數(shù)為0。numeric[(p[,s])]同decimal[(p[,s])]float[(n)]從-1.79E+308~1.79E+308之間的浮點數(shù)字數(shù)據(jù)。n為用于存儲科學計數(shù)法float數(shù)尾數(shù)的位數(shù),同時指示其精度和存儲大小。n必須為1~53之間的值。real從-3.40E+308~3.40E+308之間的浮點數(shù)字數(shù)據(jù)。存儲大小為4字節(jié)。數(shù)據(jù)類型說明decimal[(p[,s])]帶定點精度和小數(shù)522、文本數(shù)據(jù)類型可以存儲由任意字母、符號或數(shù)字字符組成的數(shù)據(jù)。根據(jù)字符長度可以分為固定長度、可變長度兩種,根據(jù)字符定義方法又分為非Unicode數(shù)據(jù)類型和Unicode數(shù)據(jù)類型兩種。Unicode(統(tǒng)一碼)數(shù)據(jù)類型用兩個字節(jié)表示一個字符。它幾乎可以表示世界上所有的字符集。具體說明如下:2、文本數(shù)據(jù)類型53數(shù)據(jù)類型說明char(n)固定長度的非Unicode字符數(shù)據(jù),n必須是一個1~8000之間的整數(shù)。varchar(n)可變長度的非Unicode字符數(shù)據(jù),n必須是一個1~8000之間的整數(shù)。text可變長度的非Unicode長文本數(shù)據(jù),最大長度為231-1個字符。nchar(n)固定長度的Unicode字符數(shù)據(jù),n必須是一個1~4000之間的整數(shù)。nvarchar(n)可變長度的Unicode字符數(shù)據(jù),n必須是一個1~4000之間的整數(shù)。ntext可變長度的Unicode長文本數(shù)據(jù),最大長度為230-1個字符。數(shù)據(jù)類型說明char(n)固定長度的非Unicode字符數(shù)據(jù)543、日期和時間類型由有效的日期或時間組成。例如:“4/01/9812:15:00:00:00PM”、”1:28:29:15:01AM8/17/98”。日期和時間類型又分為兩種:數(shù)據(jù)類型說明datetime能表示從1753年1月1日到9999年12月31日的日期和時間數(shù)據(jù),精確度為百分之三秒(3.33毫秒)。用兩個4字節(jié)整數(shù)存儲,第一個4字節(jié)存儲日期,第二個4字節(jié)存儲時間。smalldatetime能表示從1900年1月1日到2079年6月6日的日期和時間數(shù)據(jù),精確到分鐘。用兩個2字節(jié)整數(shù)存儲,第一個2字節(jié)存儲日期,第二個2字節(jié)存儲時間。3、日期和時間類型數(shù)據(jù)類型說明datetime能表示從175554、貨幣數(shù)據(jù)類型數(shù)據(jù)類型說明money介于-263~263-1之間,精確到小數(shù)點后面4位數(shù)字,存儲大小為8個字節(jié)。smallmoney介于-214748.3648~+214748.3647之間,精確到小數(shù)點后面4位數(shù)字,存儲大小為4個字節(jié)。4、貨幣數(shù)據(jù)類型數(shù)據(jù)類型說明money介于-263~263-565、二進制數(shù)據(jù)類型二進制字符串由十六進制數(shù)表示。數(shù)據(jù)類型說明Binary(n)固定長度的n個字節(jié)二進制數(shù),n必須從1~8000,存儲空間為n個字節(jié)。Varbinary(n)可變長度的n個字節(jié)二進制數(shù),n必須從1~8000,存儲空間為實際輸入數(shù)據(jù)長度+2個字節(jié)。image可以用來存儲超過8KB的可變長度的二進制數(shù)據(jù),如MicrosoftWord文檔,MicrosoftExcel電子表格、包含位圖的圖像、GIF文件和JPEG文件。5、二進制數(shù)據(jù)類型數(shù)據(jù)類型說明Binary(n)固定長度的n57思考:在創(chuàng)建表時下列列一般定義為何種數(shù)據(jù)類型?姓名、地址、電話號碼等:年齡:出生日期:照片:薪水:字符型整型日期時間型image貨幣型思考:在創(chuàng)建表時下列列一般定義為何種數(shù)據(jù)類型?字符型整型日期58三、建立主鍵建立主鍵的方法為:選擇要建立主鍵的列(如果主鍵為組合鍵,可以按住ctrl鍵單擊選中各列),右擊選擇“設置主鍵”。如果在定義表時未定義主鍵,以后可以在表名上右擊選擇“修改”,進行設置。三、建立主鍵59四、設置默認值有時候,對某項數(shù)據(jù)進行輸入的時候,它總是存在一個默認值,例如女子學院中的學員性別通常應該是“女”。四、設置默認值60五、標識列在有些情況下,存儲的信息中很難找到不重復的信息作為列的主鍵,SQLServer提供了一個“標識列”,特意對列進行區(qū)分,標識列本身沒有具體的意義。標識列的實現(xiàn)方式如下:(1)如果一列的數(shù)據(jù)屬于數(shù)字類型(例如整數(shù)),則可以把該列定義為標識列。(2)定義成標識列后,還需要分別指定“標識種子”和“標識地增量”,默認值都是1。五、標識列61(3)定義了標識列以后,在每次輸入數(shù)據(jù)的時候,該列隨數(shù)據(jù)行的增加而自動增加數(shù)字,并且不會重復,第一次的數(shù)字就是“標識種子”值,以后每次按照“標識遞增量”增加數(shù)值。標識列通常也被定義為主鍵,通常說的“自動編號”就是指標識列的數(shù)字自動增加。(3)定義了標識列以后,在每次輸入數(shù)據(jù)的時候,該列隨數(shù)據(jù)行的622.3建立表間關(guān)系建立表間關(guān)系實際上就是實施引用完整性約束,建立主表和子表關(guān)系。前面已經(jīng)創(chuàng)建了students表,主鍵為sno。在studentdb數(shù)據(jù)庫中再創(chuàng)建lessons表和scores表。這兩個表的定義如下:lessons(lno,lname,credit),主鍵為lnoscores(sno,lno,score),主鍵為(sno,lno)2.3建立表間關(guān)系建立表間關(guān)系實際上就是實施引63創(chuàng)建數(shù)據(jù)庫表與約束課件64可以按以下步驟建立students和scores這兩張表的關(guān)系:(1)在scores表的設計窗口中右擊,選擇“關(guān)系”,單擊“添加”按鈕。(2)單擊“表和列規(guī)范”最右側(cè)的小按鈕,在顯示的對話框中選擇主表為student,主鍵字段為sno,對應的外鍵表scores的字段為sno。(3)單擊確定并保存表結(jié)構(gòu),這樣它們之間的主-外鍵關(guān)系就建立了。可以按以下步驟建立students和scores65要查看表之間的關(guān)系,可以在數(shù)據(jù)庫中選擇“數(shù)據(jù)庫關(guān)系圖”選項,然后根據(jù)提示信息新建數(shù)據(jù)庫關(guān)系圖。還可以用下面的方法建立主-外鍵關(guān)系,如lessons表和scores表之間:在新建的關(guān)系圖中添加lessons表,然后將scores表的lno列拖動到lessons表

溫馨提示

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

評論

0/150

提交評論