




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
表的建立(jiànlì)與維護第一頁,共44頁。3.1.1什么(shénme)是表表類型:普通表:分區(qū)表:臨時表:系統(tǒng)表:表需要包含(bāohán)的列,每列的數(shù)據(jù)類型、精度表中哪些列允許空值或不允許空值表中是否設置主鍵,在何處設置主鍵表中是否設置約束、默認值、規(guī)則表中是否設置外鍵以及在何處設置表中是否設置索引、在何處設置以及設置什么樣的索引第二頁,共44頁。一個單詞一個字母一個數(shù)字(shùzì)一個日期一個NULL值,它表示該單元中沒有數(shù)據(jù)一個單元(dānyuán)可以包含以下內容中的一個:第三頁,共44頁。行(記錄)列第四頁,共44頁。設計數(shù)據(jù)庫實際上就是設計數(shù)據(jù)庫中的表。在設計表時,要使用盡可能少的表數(shù)量,在達到設計要求的前提下,使每個表中包含的列的數(shù)量盡可能地少。合理的表結構(jiégòu),可以大大提高整個數(shù)據(jù)庫數(shù)據(jù)的查詢效率。為了提高數(shù)據(jù)庫的效率,設計出高質量的存儲數(shù)據(jù)的表,在設計表時,應該從整體上考慮下面7個因素。第五頁,共44頁。ER圖是描述數(shù)據(jù)庫中所有實體以及實體之間關系的圖形,是輔助設計關系模型的工具。表就是關系模型,也對應著模型中的實體,是存儲數(shù)據(jù)的對象。在設計表時,應該綜合考慮這些問題:數(shù)據(jù)庫中將要包含哪些(nǎxiē)數(shù)據(jù)?數(shù)據(jù)庫中應該包含多少表?每一個表將要包含哪些(nǎxiē)數(shù)據(jù)?表和表之間是否存在關系?如果存在關系,那么存在什么樣的關系?2023年5月14日第6頁第六頁,共44頁。確定(quèdìng)了表之后,就要確定(quèdìng)表的內容。每一個表包含多個列,每一個列都有一個數(shù)據(jù)類型,數(shù)字數(shù)據(jù)類型的列還需要確定(quèdìng)列的精度和約度,這些都是設計表時必不可少的因素。數(shù)字列應該使用數(shù)字數(shù)據(jù)類型,字符列應該使用字符數(shù)據(jù)類型,日期列應該使用日期數(shù)據(jù)類型。對于數(shù)字列,需要認真考慮其精度和約度,對于字符列,應該考慮其是否使用定長字符列和字符長度??紤]這些因素的目標是:使得表中的列的數(shù)量盡可能地少。如果列的數(shù)量過多,應該考慮將該表分解成兩個表或多個表。2023年5月14日第7頁第七頁,共44頁。列允許空值,表示該列可以不包含任何的數(shù)據(jù),空值既不是數(shù)字0,也不是空字符,而是表示未知。如果允許列包含空值,表示可以不為該列輸入具體(jùtǐ)的數(shù)據(jù);如果不允許列包含空值,在輸入數(shù)據(jù)時必須為該列提供數(shù)據(jù)。例如,在包含訂單的orders表中,訂單代碼、產(chǎn)品代碼、客戶代碼等列不允許空置,但是訂單描述列則可以包含空值??紤]這個因素的目標是,盡可能地不使用允許空值的列,因為空值列有可能帶來意想不到的查詢效果。如果不得不允許某些列為空,那么應該使得這些列的數(shù)量最少。2023年5月14日第8頁第八頁,共44頁。主鍵是唯一確定每一行數(shù)據(jù)的方式,是一種數(shù)據(jù)完整性對象。主鍵往往是一個列或多個列的組合。一個表中最多只能有一個主鍵。一般地,應該為每一個表都指定(zhǐdìng)主鍵,借此可以確定行數(shù)據(jù)的唯一性。2023年5月14日第9頁第九頁,共44頁。約束、默認值、規(guī)則等都是數(shù)據(jù)完整性對象,用來確保表中的數(shù)據(jù)質量。對表中數(shù)據(jù)的查詢操作,只能在滿足定義的約束、默認值、規(guī)則等條件下,才能執(zhí)行成功。這些因素的考慮往往與表中數(shù)據(jù)的商業(yè)特性(tèxìng)相關。2023年5月14日第10頁第十頁,共44頁。在ER圖中,需要繪制出實體之間的關系。在表的設計時,實體之間的關系需要借助主鍵——外鍵對來實現(xiàn)。因此,該因素也是確保ER圖完整實施的一個(yīɡè)重要內容。只有通過這種關系,才能確保表和表之間強制的商業(yè)性關系。2023年5月14日第11頁第十一頁,共44頁。索引也是一種數(shù)據(jù)庫對象,是加快對表中數(shù)據(jù)檢索的手段,是提高數(shù)據(jù)庫使用效率的一種重要方法。在哪些列上使用索引,在哪些列上不使用索引,是使用聚集索引,還是使用非聚集索引,是否使用全文索引,等等(děnɡděnɡ)。對這些因素的認真考慮和實現(xiàn),也是對表質量的更高的要求。2023年5月14日第12頁第十二頁,共44頁。3.1.2表的數(shù)據(jù)類型種類數(shù)據(jù)類型數(shù)字整數(shù)int,bigint,smallint,tinyint精確數(shù)值decimal,numeric近似數(shù)值float,real貨幣money,smallmoney日期和時間datetime,smalldatetime字符Non-Unicodechar,varchar,varchar(max),textUnicodenchar,nvarchar,nvarchar(max),ntext二進制binary,varbinary,varbinary(max)圖像image全局標識符uniqueidentifierXMLxml特殊bit,cursor,timestamp,sysname,table,sql_variant第十三頁,共44頁。3.1.3創(chuàng)建(chuàngjiàn)表1.使用(shǐyòng)SSMS創(chuàng)建表第十四頁,共44頁。使用(shǐyòng)SQLServerManagementStudio創(chuàng)建表第十五頁,共44頁。在這個交互式多媒體中,你可以了解如何使用SQLServerManagementStudio創(chuàng)建表,請注意你需要為表指定一個自動增長的列作為ID,同時另外(lìnɡwài)一列將擁有默認值。第十六頁,共44頁。usexscjgocreatetablestudent(學號char(10)notnull,姓名varchar(8)notnull,性別char(2)notnull,專業(yè)(zhuānyè)varchar(30),出生日期smalldatetimenotnull,簡歷text)例:在xscj數(shù)據(jù)庫下創(chuàng)建(chuàngjiàn)student表2.使用(shǐyòng)T-SQL命令創(chuàng)建表第十七頁,共44頁。2023年5月14日第18頁第十八頁,共44頁。2023年5月14日第19頁第十九頁,共44頁。2023年5月14日第20頁第二十頁,共44頁。計算列由可以使用同一表中的其他列的表達式計算得來。表達式可以是非計算列的列名、常量、函數(shù),也可以是用一個或多個運算符連接(liánjiē)的上述元素的任意組合。表達式不能為子查詢。例如,在AdventureWorks示例數(shù)據(jù)庫中,Sales.SalesOrderHeader表的TotalDue列具有以下定義:TotalDueASSubtotal+TaxAmt+Freight。第二十一頁,共44頁。一般情況下,計算列是未實際存儲在表中的虛擬列。每當在查詢中引用計算列時,都將重新計算它們的值。數(shù)據(jù)庫引擎在CREATETABLE和ALTERTABLE語句中使用PERSISTED關鍵字來將計算列實際存儲在表中。如果在計算列的計算更改時涉及(shèjí)任何列,將更新計算列的值。
第二十二頁,共44頁。2023年5月14日第23頁第二十三頁,共44頁。指定(zhǐdìng)SQLServer數(shù)據(jù)庫引擎將在表中物理存儲計算值,而且,當計算列依賴的任何其他列發(fā)生更新時對這些計算值進行更新。第二十四頁,共44頁。2023年5月14日第25頁第二十五頁,共44頁。臨時表,在數(shù)據(jù)庫,顧名思義就是起到建立一個臨時性的存放某數(shù)據(jù)集的作中。臨時表一般分為:事務臨時表的管理、會話臨時表事務臨時表的話,當事務結束的時候,就會清空這個事務臨時表。所以(suǒyǐ),當我們在數(shù)據(jù)庫臨時表中插入數(shù)據(jù)后,只要事務沒有提交的話,該表中的數(shù)據(jù)就會存在。但是,當事務提交以后,該表中的數(shù)據(jù)就會被刪除。而且,這個變化不會在重做日志中顯示。會話臨時表,顧名思義,是指數(shù)據(jù)只在當前會話內有效的臨時表。關閉當前會話或者進行新的連接之后,數(shù)據(jù)表中的內容就會被清除。第二十六頁,共44頁。局部臨時表只能被當前登錄用戶(yònghù)使用,全局臨時表可以被不同登錄用戶(yònghù)使用。其實從局部和全局兩個詞就能知道。第二十七頁,共44頁。usexscjgoaltertablestudent add少數(shù)民族(shǎoshùmínzú)否bitgo例:在xscj數(shù)據(jù)庫下修改student表,增加少數(shù)民族(shǎoshùmínzú)否一列,為bit類型。然后在此表中刪除此列.3.6修改(xiūgǎi)表altertablestudent dropcolumn少數(shù)民族否go3.6.1使用SSMS圖形修改表3.6.2使用T-SQL命令修改表第二十八頁,共44頁。2數(shù)字(shùzì)數(shù)據(jù)類型引入date類型,克服了datetime類型中既有日期又有時間的缺陷,使對日期的查詢更加方便;datetimeoffset數(shù)據(jù)類型用于存儲與特定的日期和時區(qū)相關的日期和時間。一個數(shù)字(shùzì)第三十二頁,共44頁。引入date類型,克服了datetime類型中既有日期又有時間的缺陷,使對日期的查詢更加方便;第三十一頁,共44頁。char類型存儲字符數(shù)據(jù)時,每一個字符占一個字節(jié)大小。Droptablestudent該數(shù)據(jù)類型可以用在列、變量、用戶定義的函數(shù)等返回值中;第二十三頁,共44頁。專業(yè)(zhuānyè)varchar(30),每一個表將要包含哪些(nǎxiē)數(shù)據(jù)?但是,檢索結果以16進制數(shù)據(jù)格式來顯示。第二十七頁,共44頁。在這個交互式多媒體中,你可以了解如何使用SQLServerManagementStudio創(chuàng)建表,請注意你需要為表指定一個自動增長的列作為ID,同時另外(lìnɡwài)一列將擁有默認值。usexscjgoaltertablestudent altercolumn姓名(xìngmíng)varchar(10)go例:在xscj數(shù)據(jù)庫下修改(xiūgǎi)student表,將姓名長度由原來的8修改(xiūgǎi)為10;將出生日期由原來的smalldatetime修改(xiūgǎi)為date;altertablestudent altercolumn出生日期datego第二十九頁,共44頁。Droptablestudentgo例:在xscj數(shù)據(jù)庫下刪除(shānchú)student表3.7刪除(shānchú)表3.7.1使用(shǐyòng)SSMS圖形刪除表3.7.2使用T-SQL命令刪除表第三十頁,共44頁。3.2列的數(shù)據(jù)類型3.2.1數(shù)據(jù)類型的分類(fēnlèi)種類數(shù)據(jù)類型數(shù)字數(shù)據(jù)類型int,bigint,smallint,tinyint,decimal,numeric,float,real,money,smallmoney,bit字符數(shù)據(jù)類型char,varchar,nchar,nvarchar,ntexttext日期和時間datetime,smalldatetime,date,time,datetime2,datetimeoffset二進制數(shù)據(jù)類型binary,varbinary,image其他數(shù)據(jù)類型uniqueidentifier,xml,timestamp,sql_variant第三十一頁,共44頁。3.2.2數(shù)字(shùzì)數(shù)據(jù)類型數(shù)字數(shù)據(jù)類型表示符號用途精確數(shù)字類型整數(shù)數(shù)據(jù)類型int、bigint、smallint、tinyint存儲數(shù)字數(shù)據(jù),直接進行數(shù)據(jù)運算位數(shù)據(jù)類型bit用于一些條件邏輯判斷貨幣數(shù)據(jù)類型money、smallmoney存儲貨幣數(shù)據(jù)近似數(shù)字類型十進制小數(shù)型decimal、numeric存儲帶固定精度和位數(shù)的小數(shù)浮點數(shù)據(jù)類型float、real存儲范圍非常大的數(shù)字,用于表示指定數(shù)的大致數(shù)據(jù)值第三十二頁,共44頁。3.2.3字符(zìfú)數(shù)據(jù)類型字符類型表示符號用法ANSI字符char存儲指定長度的字符串varchar存儲可變長度字符text存儲大量非Unicode字符Unicode字符nchar用于存儲Unicode字符nvarchar與varchar類似,存儲可變長度Unicode字符ntext與text類似,存儲大量Unicode字符數(shù)據(jù)第三十三頁,共44頁。char類型存儲字符數(shù)據(jù)時,每一個字符占一個字節(jié)大小。使用char類型時,應該給定數(shù)據(jù)的最大長度,定義格式為:char(n)如果沒有指定(zhǐdìng)n的大小,默認值是1,最長可以容納8000個字符;如果實際數(shù)據(jù)的字符長度大于給定的最大長度時,超過的字符將會被截斷;若實際數(shù)據(jù)的字符長度小于給定的最大長度時,多余的字節(jié)被系統(tǒng)使用空格填充。varchar的使用方式與char基本相同。它們的區(qū)別在于:當列中字符長度基本一致時(如學號、姓名等),可以使用char類型;當數(shù)據(jù)長度相差較大時(如備注),使用varchar類型可以節(jié)省存儲空間;第三十四頁,共44頁。當數(shù)據(jù)有可能涉及到英語外其他語言時,應該使用(shǐyòng)Unicode字符編碼。每一個Unicode字符需要兩個字節(jié)存儲,因此,Unicode格式比ANSI格式有更大的字符集范圍:ANSI字符集僅有256個字符,Unicode字符集有65536個不同的字符。使用(shǐyòng)Unicode字符可以在表的一個列中同時出現(xiàn)中文、英文、法文等,而不會出現(xiàn)編碼沖突。通常使用(shǐyòng)以下方式來表示Unicode字符: N’Unicode字符’nchar和nvarchar分別用于存儲固定長度和可變長度的Unicode字符數(shù)據(jù);text和ntext,分別對應存儲長度很大的ANSI字符和Unicode字符數(shù)據(jù)。微軟公司建議,用戶應該避免使用(shǐyòng)text和ntext數(shù)據(jù)類型,而使用(shǐyòng)varchar和nvarchar存儲大文本數(shù)據(jù)。第三十五頁,共44頁。3.2.4日期(rìqī)時間數(shù)據(jù)類型datetime型數(shù)據(jù)長度為8字節(jié),其中前4個字節(jié)用于存儲日期,后4個字節(jié)用于存儲時間。由于(yóuyú)原因的限制,datetime支持的日期范圍從1753年1月1日至9999年12月31日,時間精確度是毫秒;由于(yóuyú)存在各種各樣的表示日期的習慣,輸入datetime數(shù)據(jù)的值是一件比較棘手的事情。如‘11/10/01’對于不同的人有不同的理解方式。當將其作為datetime型數(shù)據(jù)輸入時,SQLServer將根據(jù)當前系統(tǒng)的語言設置進行轉換。系統(tǒng)的語言由登錄SQLServer時的默認語言決定,也可以使用SETDATEFORMAT語句,指定字符D、M和Y的組合。設置格式為:SETDATEFORMAT{format|@format_var};參數(shù)format或@format_var是指日期的順序。有效的形式包括MDY、DMY、YMD、YDM、MYD和DYM,其中Y表示年,M表示月,D表示日。在默認情況下,日期格式為MDY;在SQLServer中,可以使用的時間格式是。其中HH表示小時,MI表示分鐘,SS表示秒,mmm表示千分之一秒;存在一種標準輸入格式,不受DATEFORMAT設置的影響,不會產(chǎn)生歧義。它的中間部分沒有分隔符,形式為:‘[YY]YYMMDD[HH:MI[:SS][.mmm]]’。如:’1001’、’111001’和’100120:50:30.988’都是這種格式的應用。在輸入datetime類型數(shù)據(jù)時,我們推薦使用這種格式。第三十六頁,共44頁。在SQLServer系統(tǒng)中,日期時間數(shù)據(jù)類型的最大轉變就是在datetime和smalldatetime兩種類型的基礎上又引入了4種日期時間數(shù)據(jù)類型,分別為date、time、datetime2和datetimeoffset。下面分別介紹:date數(shù)據(jù)類型只存儲日期型數(shù)據(jù)類型,不存儲時間數(shù)據(jù),取值范圍從0001-01-01到9999-12-31。引入date類型,克服了datetime類型中既有日期又有時間的缺陷,使對日期的查詢更加方便;time數(shù)據(jù)類型與date數(shù)據(jù)類型類似,如果只想存儲時間數(shù)據(jù)而不需要存儲日期部分就可以利用time數(shù)據(jù)類型,取值范圍從00:00:到23:59:;datetime2數(shù)據(jù)類型是一種日期時間混合的數(shù)據(jù)類型,不過其時間部分秒數(shù)的小數(shù)部分可以保留不同位數(shù)的值,比datetime數(shù)據(jù)類型的取值范圍要廣,可以存儲從公元元年1月1日到9999年12月31日的日期。用戶可以根據(jù)自己的需要設置不同的參數(shù)來設定小數(shù)位數(shù),最高可以設定到小數(shù)點后七位(參數(shù)為7),也可以不要小數(shù)部分(參數(shù)為0),以此類推;datetimeoffset數(shù)據(jù)類型用于存儲與特定的日期和時區(qū)相關的日期和時間。這種數(shù)據(jù)類型的日期和時間存儲為協(xié)調世界時(CoordinatedUniversalTime,UTC)的值,然后,根據(jù)與該值有關的時區(qū),定義要增加或減去的時間數(shù)。datetimeoffset類型是由年、月、日、小時、分鐘、秒和小數(shù)秒組成(zǔchénɡ)的時間戳結構。小數(shù)秒的最大小數(shù)位數(shù)為7。第三十七頁,共44頁。3.2.5二進制數(shù)據(jù)類型二進制數(shù)據(jù)類型用于表示位數(shù)據(jù)流,包括binary(固定長度)、varbinary(可變長度)和image三種(sānzhǒnɡ)。binary用于存儲固定長度的二進制數(shù)據(jù);varbinary用于存儲可變長度的二進制數(shù)據(jù),若存儲的二進制大于8000字節(jié),就必須使用varbinary(max)數(shù)據(jù)類型;image數(shù)據(jù)類型用于存儲圖像信息,在SQLServer中,只有在數(shù)據(jù)的字節(jié)數(shù)超過了8KB的情況下,才使用image數(shù)據(jù)類型,其他情況應使用varbinary(max)代替,其中max最大可以達到231-1字節(jié);當二進制數(shù)據(jù)存儲到表中時,可以使用SELECT語句來檢索。但是,檢索結果以16進制數(shù)據(jù)格式來顯示。第三十八頁,共44頁。3.2.6其他(qítā)數(shù)據(jù)類型timestamp時間戳數(shù)據(jù)類型與時間、日期無任何關系。timesta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物化學(第4版)課件 第7章 脂質代謝
- 超高性能混凝土框架節(jié)點抗震性能研究
- 兒童健康檢查培訓
- 盧桑斯的權變管理理論
- 黃疸的問診要點與護理診斷
- 頸部疾病病人護理課件
- 我的健康早餐分享
- 幼兒春游欣賞活動方案設計
- 健康素養(yǎng)大講堂
- 預防網(wǎng)絡詐騙班會課件
- 美國技術服務合同英文翻譯
- 企業(yè)數(shù)字化生存指南
- 醫(yī)院醫(yī)療器械臨床試驗項目資料備案清單
- YDT 5206-2023寬帶光纖接入工程技術規(guī)范
- 新疆警察學院面試問題及答案
- 小學三到六年級全冊單詞默寫(素材)-2023-2024學年譯林版(三起)小學英語
- 鐵嶺市高校畢業(yè)生“三支一扶”計劃招募筆試真題2022
- 天然氣泄漏事故演練方案及評估
- 《養(yǎng)老機構認知障礙照護專區(qū)設置與服務規(guī)范》
- 婦科炎癥健康教育課件
- 兒科護理學(高職)全套教學課件
評論
0/150
提交評論