版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章關(guān)系數(shù)據(jù)庫
標(biāo)準(zhǔn)語言SQLDatabasePrinciplesandApplications第3章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2數(shù)據(jù)定義3.3數(shù)據(jù)查詢3.4數(shù)據(jù)更新3.5索引3.6視圖3.1SQL概述SQL(StructuredQueryLanguage)結(jié)構(gòu)化查詢語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL是一個通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言DatabasePrinciplesandApplicationsSQL概述SQL的起源與發(fā)展1986年10月美國國家標(biāo)準(zhǔn)局ANSI批準(zhǔn)SQL作為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn)。稱為SQL86。1989年10月頒布增強(qiáng)完整性特征的SQL89標(biāo)準(zhǔn)1992年ISO對標(biāo)準(zhǔn)又進(jìn)行了修訂,稱為SQL921999年ISO頒布了SQL99。SQL標(biāo)準(zhǔn)經(jīng)歷三次修訂,分別為SQL2003、SQL2006和SQL2008DatabasePrinciplesandApplicationsSQL概述SQL的起源與發(fā)展
標(biāo)準(zhǔn)大致頁數(shù)發(fā)布日期SQL/861986.10SQL/89(FIPS127-1)120頁1989年SQL/92622頁1992年SQL991700頁1999年SQL20033600頁2003年DatabasePrinciplesandApplicationsSQL概述SQL組成數(shù)據(jù)定義語言(DDL)
對模式、基本表、視圖、索引、域等的創(chuàng)建、修改和刪除操作。數(shù)據(jù)操縱語言(DML)
查詢和更新數(shù)據(jù)庫中的數(shù)據(jù)。數(shù)據(jù)控制語言(DCL)
對基本表和視圖的授權(quán)、完整性規(guī)則的描述、事務(wù)控制等。嵌入式SQL語言(ESQL)
規(guī)定SQL語句在高級程序設(shè)計語言中使用的規(guī)范與標(biāo)準(zhǔn)DatabasePrinciplesandApplicationsSQL概述SQL特點1.綜合統(tǒng)一集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(DCL)功能于一體??梢元毩⑼瓿蓴?shù)據(jù)庫生命周期中的全部活動:定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫;對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢和更新;數(shù)據(jù)庫重構(gòu)和維護(hù)數(shù)據(jù)庫安全性、完整性控制等用戶數(shù)據(jù)庫投入運行后,可根據(jù)需要隨時逐步修改模式,不影響數(shù)據(jù)的運行。數(shù)據(jù)操作符統(tǒng)一DatabasePrinciplesandApplicationsSQL概述SQL特點(續(xù))2.高度非過程化非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程”,必須制定存取路徑SQL只要提出“做什么”,無須了解存取路徑存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動完成。DatabasePrinciplesandApplicationsSQL概述SQL特點(續(xù))3.面向集合的操作方式非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對象是一條記錄SQL采用集合操作方式操作對象、查找結(jié)果可以是元組的集合一次插入、刪除、更新操作的對象可以是元組的集合DatabasePrinciplesandApplicationsSQL概述SQL特點(續(xù))4.語言簡潔,易學(xué)易用 SQL功能極強(qiáng),完成核心功能只用了9個動詞。DatabasePrinciplesandApplicationsSQL概述SQL特點(續(xù))5.以同一種語法結(jié)構(gòu)提供多種使用方式SQL是獨立的語言能夠獨立地用于聯(lián)機(jī)交互的使用方式SQL又是嵌入式語言
SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設(shè)計程序時使用DatabasePrinciplesandApplicationsSQL概述SQL特點(續(xù))6.支持三級模式結(jié)構(gòu)DatabasePrinciplesandApplicationsSQL概述SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲文件2存儲文件1外模式模式內(nèi)模式SQL特點(續(xù))基本表本身獨立存在的表SQL中一個關(guān)系就對應(yīng)一個基本表一個(或多個)基本表對應(yīng)一個存儲文件一個表可以帶若干索引存儲文件邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式物理結(jié)構(gòu)是任意的,對用戶透明視圖從一個或幾個基本表導(dǎo)出的表數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù)視圖是一個虛表用戶可以在視圖上再定義視圖DatabasePrinciplesandApplicationsSQL概述示例數(shù)據(jù)庫DatabasePrinciplesandApplicationsSQL概述nonamegenderagespecialty14001王建立男18CP14002張玲女19FR14003王軍男20IF14004李建國男19CP14005趙文娟女18MAisbnnameauthorpublisherpricecategory04-012955-7積分變換張元林高等教育出版社8.00理04-023909-6線性代數(shù)賈蘭香高等教育出版社16.00理302-00860-4C程序設(shè)計譚浩強(qiáng)清華大學(xué)出版社20.00工302-02368-5數(shù)據(jù)結(jié)構(gòu)_C語言版嚴(yán)蔚敏清華大學(xué)出版社22.00工302-03314-5數(shù)據(jù)結(jié)構(gòu)題集嚴(yán)蔚敏清華大學(xué)出版社16.00工5613-3644-6讀者文摘精粹版周宏陜西師范大學(xué)出版社38.00文81080-159-1大學(xué)英語李蔭華上海外語教育出版社35.00文noisbnstartdateenddatefine14001302-00860-42013/8/6
0.0014001302-02368-52013/3/102013/6/152.0014001302-03314-52013/3/102013/7/123.001400304-012955-72013/10/72013/12/203.5014004302-00860-42013/1/92013/3/90.0014004302-03314-52013/5/9
0.0014005302-00860-42013/6/182013/7/100.00reader表book表borrow表數(shù)據(jù)類型數(shù)據(jù)庫中的所有數(shù)據(jù)都存放在按行與列格式組織的基本表中,數(shù)據(jù)類型是數(shù)據(jù)的一種屬性,決定數(shù)據(jù)存儲的空間、數(shù)據(jù)的長度以及數(shù)據(jù)能參與的運算。SQL提供的數(shù)據(jù)類型可以歸納為:數(shù)值類型、字符類型、日期時間類型、貨幣類型和其他數(shù)據(jù)類型。
說明:不同的SQL實現(xiàn)定義的數(shù)據(jù)類型以及使用的關(guān)鍵字有所不同。以下所述數(shù)據(jù)類型適用SQLServer,其他SQL實現(xiàn)請參照其說明。DatabasePrinciplesandApplicationsSQL基本知識數(shù)據(jù)類型(續(xù))1.數(shù)值類型數(shù)值類型根據(jù)其所存儲數(shù)據(jù)的精確與否,分為精確數(shù)值類型和近似數(shù)值類型。(1)精確數(shù)值類型精確數(shù)值類型用來存儲沒有小數(shù)位的整數(shù)或定點小數(shù)DatabasePrinciplesandApplicationsSQL基本知識類別數(shù)據(jù)類型字節(jié)數(shù)取值范圍Integerbigint8-263~263-1int4-231~231-1smallint2-32768~32767tinyint10~255Exactnumricdecimal(p[,s])5~17-1038+1~1038-1numeric(p[,s])5~17-1038+1~1038-1數(shù)據(jù)類型(續(xù))decimal和numeric數(shù)據(jù)類型需要提供兩個參數(shù),第1個參數(shù)說明數(shù)據(jù)類型的精度,即數(shù)字的個數(shù),第2個參數(shù)說明數(shù)據(jù)類型的小數(shù)位數(shù),例如decimal(12,4),定義一個數(shù)據(jù)類型,其中可以存放12位數(shù)字,其中小數(shù)點后面有4位數(shù)字。在SQL
Server中decimal和numeric兩者唯一的區(qū)別在于decimal不能用于帶有identity關(guān)鍵字的列。數(shù)據(jù)類型bigint,int,smallint和tinyint數(shù)據(jù)類型只能用于存儲整數(shù)。decimal和numeric數(shù)據(jù)類型既可以存放小數(shù)數(shù)值,也可以存放整數(shù),當(dāng)參數(shù)s的值取0時,表示這兩種數(shù)據(jù)類型中存放的是整數(shù)DatabasePrinciplesandApplicationsSQL基本知識數(shù)據(jù)類型(續(xù))(2)近似數(shù)值類型近似數(shù)字?jǐn)?shù)據(jù)類型可以存儲十進(jìn)制值,用于表示浮點數(shù)據(jù)。此類型的數(shù)據(jù)不一定有精確的表示。SQLServer存儲數(shù)據(jù)時對小數(shù)點右邊的數(shù)進(jìn)行四舍五入。只有在精確數(shù)據(jù)類型不夠大,不能存儲數(shù)值時,才考慮使用float。float[(n)]中n的取值范圍為1~53。當(dāng)1≤n≤24時,占用4字節(jié),精度為7;當(dāng)25≤n≤53時,占用8字節(jié),精度為15。DatabasePrinciplesandApplicationsSQL基本知識數(shù)據(jù)類型字節(jié)數(shù)取值范圍float[(n)]4或8-2.23E308~2.23E308real4-3.4E38~3.4E38數(shù)據(jù)類型(續(xù))2.字符類型字符類型是用于存儲字符型數(shù)據(jù)的。該數(shù)據(jù)類型可以使用ASCII編碼或Unicode編碼。ASCII編碼要求用8個二進(jìn)制位來表示字母的范圍。Unicode標(biāo)準(zhǔn)使用2個字節(jié)來表示每個字符。在Unicode標(biāo)準(zhǔn)中,包括了以各種字符集定義的全部字符。字符類型常量應(yīng)該用單引號括起來。DatabasePrinciplesandApplicationsSQL基本知識數(shù)據(jù)類型(續(xù))DatabasePrinciplesandApplicationsSQL基本知識數(shù)據(jù)類型字節(jié)數(shù)字符數(shù)作用char(n)1~8000最多8000個字符固定寬度的ASCII數(shù)據(jù)類型varchar(n)1~8000最多8000個字符可變寬度的ASCII數(shù)據(jù)類型varchar(max)最大2G最多1073741824個字符可變寬度的ASCII數(shù)據(jù)類型text最大2G最多1073741824個字符可變寬度的ASCII數(shù)據(jù)類型nchar(n)2~8000最多4000個字符固定寬度的Unicode數(shù)據(jù)類型nvarchar(n)2~8000最多4000個字符可變寬度的Unicode數(shù)據(jù)類型nvarchar(max)最大2G最多536870912個字符固定寬度的Unicode數(shù)據(jù)類型ntext最大2G最多536870912個字符固定寬度的Unicode數(shù)據(jù)類型數(shù)據(jù)類型(續(xù))3.日期時間類型日期時間類型數(shù)據(jù),可具體分為datetime與smalldatetime兩種類型。datetime和smalldatetime數(shù)據(jù)類型在計算機(jī)內(nèi)部是作為整數(shù)存儲的。datetime類型存儲為1對4字節(jié)整數(shù),前4字節(jié)存儲日期值,后4字節(jié)存儲時間值。它們一起表示自1753年1月1日午夜12點鐘經(jīng)過的毫秒數(shù)。smalldatetime類型存儲為一對2字節(jié)整數(shù),前2字節(jié)存儲日期值,后2字節(jié)存儲時間值,它們一起表示自1900年1月1日午夜12點鐘經(jīng)過的分鐘SQL基本知識DatabasePrinciplesandApplications數(shù)據(jù)類型(續(xù))日期時間數(shù)據(jù)類型由有效的日期和時間組成。如有下列日期和時間數(shù)據(jù)“12/05/9812:26:00:00:00PM”和“2:38:29:15:01AM6/15/98”。前一個數(shù)據(jù)是日期在前,時間在后。SQLServer中常用的日期和時間表示格式如下:分隔符可用'/'、'-'或'.',例如'4/15/2005'、'4-15-05'或'4.15.2005';字母日期格式:'April15,2005';不用分隔符:'20050501';時:分:秒:毫秒:'08:05:25:28'時:分AM|PM:'05:08AM'、'08:05PM'SQL基本知識DatabasePrinciplesandApplications數(shù)據(jù)類型(續(xù))SQL基本知識DatabasePrinciplesandApplications日期類型字節(jié)數(shù)取值范圍datetime8從1753-1-1到9999-12-31,精度為3.33毫秒smalldatetime4從1900-1-1到2079-12-31,精度為1分鐘數(shù)據(jù)類型(續(xù))4.貨幣類型貨幣數(shù)據(jù)類型可用于存儲精確到小數(shù)點后4個小數(shù)位的貨幣值。貨幣數(shù)據(jù)類型的特點是小數(shù)點后存儲4位小數(shù),所以在金融應(yīng)用程序中很少使用這種數(shù)據(jù)類型。通常使用decimal數(shù)據(jù)類型代替貨幣數(shù)據(jù)類型,因為使用decimal數(shù)據(jù)類型可以更靈活地指定小數(shù)點后多位數(shù)。貨幣類型常量應(yīng)以貨幣單位符號做前綴,默認(rèn)$SQL基本知識DatabasePrinciplesandApplications數(shù)據(jù)類型
字節(jié)數(shù)
取值范圍money8-922
337
203
685
477.5808~922
337
203
685
477.5807smallmoney4-214
748.3648~214
748.3647數(shù)據(jù)類型(續(xù))5.二進(jìn)制數(shù)據(jù)類型SQLServer提供了3種二進(jìn)制數(shù)據(jù)類型,允許在一個表中存儲各種數(shù)量的二進(jìn)制數(shù)據(jù)。SQL基本知識DatabasePrinciplesandApplications數(shù)據(jù)類型字節(jié)數(shù)作用binary(n)1~8000存儲固定大小的二進(jìn)制數(shù)據(jù)varbinary(n)1~8000存儲可變大小的二進(jìn)制數(shù)據(jù)varbinary(max)最多2G存儲可變大小的二進(jìn)制數(shù)據(jù)image最多2G存儲可變大小的二進(jìn)制數(shù)據(jù)數(shù)據(jù)類型(續(xù))二進(jìn)制數(shù)據(jù)類型用于存儲SQLServer中的文件,如Word、Excel、PDF、Visio以及圖像等文件。image數(shù)據(jù)類型除了可以存儲圖像文件以外,也可以存儲其他二進(jìn)制文件。varbinary(max)數(shù)據(jù)類型是SQLServer2005新增的一種數(shù)據(jù)類型,它可以存儲與image數(shù)據(jù)類型相同大小的數(shù)據(jù),并且所有能夠在binary/varbinary數(shù)據(jù)類型上執(zhí)行的操作和函數(shù)都可以在varbinary(max)數(shù)據(jù)類型上使用,這是image數(shù)據(jù)類型不能做到的。二進(jìn)制類型常量是以0x作前綴的十六進(jìn)制數(shù)字字符串。SQL基本知識DatabasePrinciplesandApplications運算符1.比較運算符 =、<、<=、>、>=、<>(或者!=)2.邏輯運算符 AND、OR和NOT3.算術(shù)運算符 +、-、*和/SQL基本知識DatabasePrinciplesandApplications運算符(續(xù))4.謂詞BETWEEN…AND…NOTBETWEEN…AND…用于判斷屬性列值是否在指定范圍內(nèi)。rageBETWEEN18AND20rageNOTBETWEEN18AND20IN和NOTIN用于判斷屬性列值是否在指定集合內(nèi)。rageIN(15,17,18)rageNOTIN(15,17,18)SQL基本知識DatabasePrinciplesandApplications運算符(續(xù))LIKE和NOTLIKE用于進(jìn)行字符串匹配。語法格式:[NOT]LIKE匹配串[ESCAPE轉(zhuǎn)義字符]匹配串由普通字符和/或通配符組成。通配符:%(百分號):代表任意長度(長度可以為0)的字符串。_(下劃線):代表任意單個字符。SQL基本知識DatabasePrinciplesandApplications運算符(續(xù))通配符SQL基本知識DatabasePrinciplesandApplications通配符說明示例%包含零個或多個字符的任意字符串。LIKE'%cpu%'將查找在任意位置包含單詞cpu的所有字符串。_(下劃線)任何單個字符。LIKE'_en'將查找以en結(jié)尾的所有3個字母的字符串。[]指定范圍([a-f])或([abcdef])中的任何單個字符。LIKE'[C-P]ars'將查找以ars結(jié)尾并且以介于C與P之間的任何單個字符開始的字符串。[^]不屬于指定范圍([a-f])或([abcdef])的任何單個字符。LIKE'de[^l]%'將查找以de開始并且其后的字母不為l的所有字符串。運算符(續(xù))如果要查詢的字符串本身含有%或_,需要使用ESCAPE‘<換碼字符>’短語對通配符進(jìn)行轉(zhuǎn)義。例:查詢課程“Delphi_6.0”的課程號SELECT課程名,課號FROM課程WHERE課程名LIKE‘Delphi/_6.0’ESCAPE‘/’ESCAPE‘/’短語表示“/”是換碼字符,這樣匹配串中緊跟在/之后的字符“_”不再具有通配符的含義,轉(zhuǎn)意為普通的“_”字符,請注意“/”不參與匹配過程。SQL基本知識DatabasePrinciplesandApplications運算符(續(xù))ISNULL和ISNOTNULL用于判斷是否為空。SQL基本知識DatabasePrinciplesandApplications運算符(續(xù))運算符的優(yōu)先級SQL基本知識DatabasePrinciplesandApplications優(yōu)先級運算符1()(圓括號)2+(正)、-(負(fù))、~(位非)3*(乘)、/(除)、%(取模)4+(加)、(+連接)、-(減)、&(位與)5=,>、<、>=、<=、<>、!=、!>、!<(比較運算符)6^(位異或)、|(位或)7NOT8AND9ALL、ANY、BETWEEN、IN、LIKE、OR、SOME10=(賦值)3.2數(shù)據(jù)定義SQL的數(shù)據(jù)定義功能:數(shù)據(jù)庫定義、模式定義、表定義、視圖和索引的定義。數(shù)據(jù)定義DatabasePrinciplesandApplications文件和文件組數(shù)據(jù)庫是存儲數(shù)據(jù)的容器,數(shù)據(jù)庫在磁盤上是以文件為單位存儲的,SQLServer將數(shù)據(jù)庫映射為一組操作系統(tǒng)文件。每個SQLServer數(shù)據(jù)庫至少具有兩個操作系統(tǒng)文件:一個主數(shù)據(jù)文件和一個日志文件。SQLServer的數(shù)據(jù)庫具有三種類型的文件:(1)主數(shù)據(jù)文件:主數(shù)據(jù)文件是數(shù)據(jù)庫的起點,指向數(shù)據(jù)庫中的其他文件。每個數(shù)據(jù)庫都有且只有一個主數(shù)據(jù)文件。主數(shù)據(jù)文件的推薦文件擴(kuò)展名是.mdf。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications文件和文件組(2)次要數(shù)據(jù)文件(輔助數(shù)據(jù)文件):次要數(shù)據(jù)文件可用作存儲用戶數(shù)據(jù)和對象。如果主數(shù)據(jù)文件可以存儲數(shù)據(jù)庫中的所有數(shù)據(jù),那么數(shù)據(jù)庫就不需要次要數(shù)據(jù)文件。有些數(shù)據(jù)庫可能比較大,所以需要多個次要數(shù)據(jù)文件,或使用位于不同磁盤驅(qū)動器上的輔助文件將數(shù)據(jù)擴(kuò)展到多個磁盤。并不是所有的數(shù)據(jù)庫都需要次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦擴(kuò)展名為.ndf。(3)事務(wù)日志文件:日志文件包含著用于恢復(fù)數(shù)據(jù)庫的所有日志信息。每個數(shù)據(jù)庫必須至少有一個日志文件,當(dāng)然也可以有多個。SQLServer2005事務(wù)日志采用提前寫入的方式,即對數(shù)據(jù)庫的修改先寫入事務(wù)日志中,然后再寫入數(shù)據(jù)庫。日志文件的推薦文件擴(kuò)展名是.ldf。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications文件和文件組數(shù)據(jù)庫文件組SQLServer中的數(shù)據(jù)庫文件組分為主文件組和用戶定義文件組。①主文件組:主文件組包含主要數(shù)據(jù)庫文件和任何沒有明確指派給其他文件組的其他文件。數(shù)據(jù)庫的系統(tǒng)表都包含在主文件組中。②用戶定義文件組:用戶定義文件組是在CREATEDATABASE或ALTERDATABASE語句中,使用FILEGROUP關(guān)鍵字指定的文件組。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications文件和文件組文件和文件組應(yīng)用的規(guī)則:(1)一個文件只能存在于一個文件組中,一個文件組也只能被一個數(shù)據(jù)庫使用。(2)主文件組中包含了所有的系統(tǒng)表。當(dāng)建立數(shù)據(jù)庫時,主文件組包括主數(shù)據(jù)庫文件和未指定組的其它文件。(3)在創(chuàng)建數(shù)據(jù)庫對象時如果沒有指定將其放在哪一個文件組中,就會將它放在默認(rèn)文件組中。如果沒有指定默認(rèn)文件組,則主文件組為默認(rèn)文件組。(4)事務(wù)日志文件不屬于任何文件組。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications創(chuàng)建數(shù)據(jù)庫用戶要創(chuàng)建數(shù)據(jù)庫,必須確定數(shù)據(jù)庫的名稱、所有者、大小以及存儲該數(shù)據(jù)庫的文件和文件組。數(shù)據(jù)庫名稱必須遵循為標(biāo)識符指定的規(guī)則:數(shù)據(jù)庫名稱長度為1~128個字符。名稱首字符必須是一個英文字母或“_”、“#”和“@”中的任意字符(中文版包括漢字)。在中文版SQLServer中,可以直接使用漢字為數(shù)據(jù)庫命名。名稱中不能出現(xiàn)空格,不允許使用SQLServer的保留字。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications創(chuàng)建數(shù)據(jù)庫在SQLServer中創(chuàng)建用戶數(shù)據(jù)庫主要有以下兩種形式:在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫。利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫的過程如下:啟動SQLServerManagementStudio,在對象資源管理器中,右擊“數(shù)據(jù)庫”選項,在彈出的快捷菜單中選擇“新建數(shù)據(jù)庫”命令,如圖3.1所示,打開“新建數(shù)據(jù)庫”窗口。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.1選擇“新建數(shù)據(jù)庫”命令在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications在“新建數(shù)據(jù)庫”窗口中的“常規(guī)”選項卡,如圖4.3所示,有以下幾個可選項。在“數(shù)據(jù)庫名稱”文本框中,輸入要創(chuàng)建的數(shù)據(jù)庫名稱,如“學(xué)生選課”。若要通過接受所有的默認(rèn)值來創(chuàng)建數(shù)據(jù)庫,則單擊“確定”按鈕;否則,繼續(xù)后面的可選項目的選擇。若要更改所有者名稱,單擊“所有者”后的按鈕選擇其他所有者。若要啟用數(shù)據(jù)庫的全文搜索,選中“使用全文索引”復(fù)選框。在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications若要更改主數(shù)據(jù)文件和事務(wù)日志文件的默認(rèn)值,并輸入新值。各項的具體含義如下:邏輯名稱:用來輸入數(shù)據(jù)文件或日志文件的邏輯文件名。邏輯文件名是在所有Transact-SQL語句中引用物理文件時所使用的名稱。文件類型:數(shù)據(jù)庫文件的類型。對于新添加的數(shù)據(jù)庫文件可以選擇“數(shù)據(jù)”或“日志”。文件組:數(shù)據(jù)庫中的數(shù)據(jù)文件所屬的文件組。日志文件沒有文件組的概念。初始大?。捍_定數(shù)據(jù)庫文件的初始大小。默認(rèn)的數(shù)據(jù)文件初始大小為3M,日志文件為1M。自動增長:顯示設(shè)置的數(shù)據(jù)文件和日志文件的增長方式增量。單擊后面的按鈕可以修改。路徑:顯示數(shù)據(jù)庫物理文件的存放路徑。單擊后面的按鈕可以選擇新的存放路徑。在SQLServerManagementStudio中創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications切換到“新建數(shù)據(jù)庫”窗口中的“選項”選項卡中,如圖3.3所示。其中有以下幾個可選項:若要更改數(shù)據(jù)庫的排序規(guī)則,從“排序規(guī)則”下拉列表框中選擇一個排序規(guī)則。若要更改恢復(fù)模式,從“恢復(fù)模式”下拉列表框中選擇一個恢復(fù)模式。若要更改數(shù)據(jù)庫其他選項,從下面的列表中根據(jù)需要修改選項值。切換到“文件組”選項卡進(jìn)行設(shè)置,如圖3.4所示。如果要添加文件組,可以單擊“添加”按鈕,然后輸入文件組的名稱。所有參數(shù)設(shè)置完畢后,單擊“確定”按鈕,新的數(shù)據(jù)庫就創(chuàng)建成功。展開對象資源管理器中的數(shù)據(jù)庫項,可以看到新建的數(shù)據(jù)庫。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.3新建數(shù)據(jù)庫“常規(guī)”選項對話框創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.4新建數(shù)據(jù)庫“文件組”選項對話框利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫CREATEDATABASE語句的基本格式CREATEDATABASEdatabase_name--設(shè)置數(shù)據(jù)庫名稱
[ON[PRIMARY][<filespec>[,...n]]--設(shè)置數(shù)據(jù)文件
[,<filegroup>[,...n]]--設(shè)置文件組
[LOGON{<filespec>[,...n]}]--設(shè)置日志文件
][COLLATEcollation_name]--設(shè)置排序規(guī)則名稱
[WITH<external_access_option>]--設(shè)置外部訪問
][;]創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications說明:在T-SQL語言的命令格式中,用[]括起來的內(nèi)容表示是可選的;[,…n]表示重復(fù)前面的內(nèi)容;用<>括起來的內(nèi)容表示在實際編寫語句時,用相應(yīng)的內(nèi)容替代;用{}括起來的內(nèi)容表示是必選的;類似A|B的格式,表示A和B只能選擇一個,不能同時都選。語句中參數(shù)的說明如下:database_name:新建數(shù)據(jù)庫的名稱。同一個SQLServer的實例中數(shù)據(jù)庫名稱必須唯一,且最長為128個字符。利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫ON:顯式定義用來存儲數(shù)據(jù)庫數(shù)據(jù)部分的磁盤文件(數(shù)據(jù)文件)。當(dāng)后面是以逗號分隔的用以定義主文件組的數(shù)據(jù)文件的<filespec>列表時,需使用ON。<filespec>列表用于定義主文件組的數(shù)據(jù)文件。主文件組的文件列表后可以包含用逗號分隔的<filegroup>列表,<filegroup>列表用于定義用戶文件組及其中的文件。filespec的定義格式:<filespec>::=--<filespec>語法格式{(NAME=logical_file_name,FILENAME='os_file_name'[,SIZE=size[KB|MB|GB|TB]][,MAXSIZE={maxsize[KB|MB|GB|TB]|UNLIMITED}][,FILEGROWTH=growth_increment[KB|MB|GB|TB|%]])[,...n]}創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫filegroup的定義格式:<filegroup>::={FILEGROUPfilegroup_name[DEFAULT]
<filespec>[,...n]}PRIMARY:用于指定主文件組中的文件。主文件組不僅包含數(shù)據(jù)庫系統(tǒng)表中的全部內(nèi)容,而且還包含用戶文件組中沒有包含的全部對象。一個數(shù)據(jù)庫只能有一個主文件,默認(rèn)情況下,如果不指定PRIMARY關(guān)鍵字,則在命令中列出的第一個文件將被默認(rèn)為主文件。LOGON:顯式定義用來存儲數(shù)據(jù)庫日志的日志文件。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫NAME:指定數(shù)據(jù)庫文件的邏輯名稱,這是在SQLServer系統(tǒng)中使用的名稱,是數(shù)據(jù)庫文件在SQLServer中的標(biāo)識符。FILENAME:指定數(shù)據(jù)庫文件的在操作系統(tǒng)中文件名稱和路徑,該操作系統(tǒng)文件名和NAME的邏輯名稱一一對應(yīng)。SIZE:指定數(shù)據(jù)庫的初始容量大小。如果沒有指定主文件的大小,則SQLServer默認(rèn)其與模板數(shù)據(jù)庫中的主文件大小一致,其他數(shù)據(jù)庫文件和事務(wù)日志文件則默認(rèn)為1MB。指定大小的數(shù)字size可以使用KB、MB、GB和TB后綴,默認(rèn)的后綴為MB。size中不能使用小數(shù),其最小值為512KB,默認(rèn)值為1MB。主文件的size不能小于模板數(shù)據(jù)庫中的主文件。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫MAXSIZE:指定操作系統(tǒng)文件可以增長到的最大尺寸。如果沒有指定,則文件可以不斷增大直到充滿磁盤。FILEGROWTH:指定文件每次增加容量的大小,當(dāng)指定數(shù)據(jù)為0時,表示文件不增長。增加量可以確定為以KB、MB作后綴的字節(jié)數(shù)或以%作后綴的被增加容量文件的百分比來表示。默認(rèn)后綴為MB。如果沒有指定FILEGROWTH,則默認(rèn)值為10%,每次擴(kuò)容的最小值為64KB。COLLATEcollation_name:指定數(shù)據(jù)庫的默認(rèn)排序規(guī)則。排序規(guī)則名稱既可以是Windows排序規(guī)則名稱,也可以是SQL排序規(guī)則名稱。如果沒有指定排序規(guī)則,則將SQLServer實例的默認(rèn)排序規(guī)則分配為數(shù)據(jù)庫的排序規(guī)則。不能對數(shù)據(jù)庫快照指定排序規(guī)則名稱。WITH<external_access_option>
:控制外部與數(shù)據(jù)庫之間的雙向訪問。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫【例3-1】使用CREATEDATABASE創(chuàng)建一個新的數(shù)據(jù)庫,名稱為“STUDENT1”,其他所有參數(shù)均取默認(rèn)值。
CREATEDATABASESTUDENT1【例3-2】創(chuàng)建數(shù)據(jù)庫名為“STUDENT2”的數(shù)據(jù)庫,包含一個主數(shù)據(jù)文件和一個事務(wù)日志文件。主數(shù)據(jù)文件的邏輯名為“STUDENT2_DATA”,操作系統(tǒng)文件名為“STUDENT2_DATA.MDF”,初始容量大小為5M,最大容量為20M,文件的增長量為20%。事務(wù)日志文件的邏輯文件名為“STUDENT2_LOG”,物理文件名為“STUDENT2_LOG.LDF”,初始容量大小為5M,最大容量為10M,文件增長量為2M。數(shù)據(jù)文件與事務(wù)日志文件都放在D:\SQLDATA目錄。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫CREATEDATABASESTUDENT2ONPRIMARY(NAME='STUDENT2_DATA',FILENAME='D:\SQLDATA\STUDENT2_DATA.MDF',SIZE=5MB,MAXSIZE=20MB,FILEGROWTH=20%)LOGON(NAME='STUDENT2_LOG',FILENAME='D:\SQLDATA\STUDENT2_LOG.LDF',SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=2MB)GO說明:必須事先在D盤建立好SQLDATA文件夾。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫【例3-3】創(chuàng)建一個指定多個數(shù)據(jù)文件和日志文件的數(shù)據(jù)庫。該數(shù)據(jù)庫名稱為TEACHINGDB,有1個5MB和1個10MB的數(shù)據(jù)文件和2個5MB的事務(wù)日志文件。數(shù)據(jù)文件邏輯名稱為TEACHINGDB1和TEACHINGDB2,物理文件名為TEACHINGDB1.mdf和TEACHINGDB2.ndf。主文件是TEACHINGDB1,由PRIMARY指定,兩個數(shù)據(jù)文件的最大尺寸分別為無限大和100MB,增長速度分別為10%和1MB。事務(wù)日志文件的邏輯名為TEACHINGDBLOG1和TEACHINGDBLOG2,物理文件名為TEACHINGDBLOG1.ldf和TEACHINGDBLOG2.ldf,最大尺寸均為50MB,文件增長速度為1MB。要求數(shù)據(jù)庫文件和日志文件的物理文件都存放在D盤的SQLDATA文件夾下。DatabasePrinciplesandApplicationsCREATEDATABASETEACHINGDBONPRIMARY(NAME=TEACHINGDB1,FILENAME='D:\SQLDATA\TEACHINGDB1.mdf',SIZE=5,MAXSIZE=unlimited,FILEGROWTH=10%),(NAME=TEACHINGDB2,FILENAME='D:\SQLDATA\TEACHINGDB2.ndf',SIZE=10,MAXSIZE=100,FILEGROWTH=1)LOGON(NAME=TEACHINGDBLOG1,FILENAME='D:\SQLDATA\TEACHINGDBLOG1.ldf',SIZE=5,MAXSIZE=50,FILEGROWTH=1),(NAME=TEACHINGDBLOG2,FILENAME='D:\SQLDATA\TEACHINGDBLOG2.ldf',SIZE=5,MAXSIZE=50,filegrowth=1)GO創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫【例3-4】在【例4-3】創(chuàng)建一個新的文件組,并將邏輯名稱為TEACHINGDB2的文件加入此文件組中。CREATEDATABASETEACHINGDBONPRIMARY(NAME=TEACHINGDB1,FILENAME='D:\SQLDATA\TEACHINGDB1.mdf',SIZE=5,MAXSIZE=unlimited,FILEGROWTH=10%),FILEGROUPTEACHINGDB_DATA(NAME=TEACHINGDB12,FILENAME='D:\SQLDATA\TEACHINGDB2.ndf',SIZE=10,MAXSIZE=100,FILEGROWTH=1)創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建數(shù)據(jù)庫LOGON(NAME=TEACHINGDBLOG1,FILENAME='D:\SQLDATA\TEACHINGDBLOG1.ldf',SIZE=5,MAXSIZE=50,FILEGROWTH=1),(NAME=TEACHINGDBLOG2,FILENAME='D:\SQLDATA\TEACHINGDBLOG2.ldf',SIZE=5,MAXSIZE=50,filegrowth=1)GO創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications修改數(shù)據(jù)庫建好數(shù)據(jù)庫后,可以對其進(jìn)行修改。修改數(shù)據(jù)庫包括增減數(shù)據(jù)文件和日志文件、修改文件屬性(包括更改文件名和文件大?。?、修改數(shù)據(jù)庫選項等??梢允褂肧QLServerManagementStudio與Transact-SQL語句兩種方法修改數(shù)據(jù)庫。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications使用SQLServerManagementStudio修改數(shù)據(jù)庫啟動SQLServerManagementStudio,在對象資源管理器中,右擊所需要修改的數(shù)據(jù)庫如students,在快捷菜單中選擇“屬性”命令打開“數(shù)據(jù)庫屬性”窗口,如圖3.5所示。在“數(shù)據(jù)庫屬性”窗口的“常規(guī)”選項卡中,顯示的是數(shù)據(jù)庫的基本信息,這些信息不能修改。單擊“文件”選項卡,如圖3.6所示,可以修改數(shù)據(jù)庫的邏輯名稱、初始大小、自動增長等屬性,也可以根據(jù)需要添加數(shù)據(jù)文件和日志文件,還可以更改數(shù)據(jù)庫的所有者。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.5數(shù)據(jù)庫屬性“文件”選項卡創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.6數(shù)據(jù)庫屬性“文件”選項卡使用SQLServerManagementStudio修改數(shù)據(jù)庫在“文件組”選項卡中,可以修改現(xiàn)有的文件組,也可以指定數(shù)據(jù)庫的默認(rèn)文件組、添加新文件組。在“選項”選項卡中,修改數(shù)據(jù)庫的排序規(guī)則?!皵?shù)據(jù)庫屬性”窗口包含的各種屬性,只要需要,就可以選擇相應(yīng)的選項卡來修改。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplicationsTransact-SQL提供了修改數(shù)據(jù)庫的語句ALTERDATABASE,語句格式如下:
ALTERDATABASEdatabase_name--需修改的數(shù)據(jù)庫名
{<add_or_modify_files>--增加或修改數(shù)據(jù)庫文件
|<add_or_modify_filegroups>--增加或修改數(shù)據(jù)庫文件組
|<set_database_options>--設(shè)置數(shù)據(jù)庫選項
|MODIFYNAME=new_database_name--數(shù)據(jù)庫重命名
|COLLATEcollation_name--更改排序規(guī)則
}[;]利用Transact-SQL語句修改數(shù)據(jù)庫下面說明上述格式的主要參數(shù):(1)database_name:要修改的數(shù)據(jù)庫的名稱。(2)<add_or_modify_files>:指定要添加或修改的文件。(3)<add_or_modify_filegroups>:在數(shù)據(jù)庫中添加或刪除文件組。(4)<set_database_options>:設(shè)置數(shù)據(jù)庫選項。(5)MODIFYNAME=new_database_name:使用指定的名稱重命名數(shù)據(jù)庫。(6)COLLATEcollationname:指定數(shù)據(jù)庫的排序規(guī)則。<add_or_modify_files>子句的語法:創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數(shù)據(jù)庫
<add_or_modify_files>::=--增加或修改數(shù)據(jù)庫文件語法塊
{ADDFILE<filespec>[,...n]--文件屬性修改
[TOFILEGROUP{filegroup_name|DEFAULT}] |ADDLOGFILE<filespec>[,...n] |REMOVEFILElogical_file_name |MODIFYFILE<filespec>}下面說明上述格式的主要參數(shù):(1)ADDFILE:將文件添加到數(shù)據(jù)庫。(2)TOFILEGROUP{filegroup_nameIDEFAULT}:指定要將指定文件添加到的文件組。(3)ADDLOGFILE:添加日志文件。(4)REMOVEFILElogical_file_name:從SQLServer的實例中刪除邏輯文件說明并刪除物理文件。除非文件為空,否則無法刪除文件。MODIFYFILE:指定應(yīng)修改的文件,一次只能更改一個<filespec>屬性。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數(shù)據(jù)庫<add_or_modify_filegroups>的語法:<add_or_modify_filegroups>::={|ADDFILEGROUPfilegroup_name--增加文件組
|REMOVEFILEGROUPfilegroup_name--刪除文件組
|MODIFYFILEGROUPfilegroup_name--修改文件組
{<filegroup_updatability_option>
|DEFAULT
|NAME=new_filegroup_name}}創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數(shù)據(jù)庫【例3-5】為STUDENT2數(shù)據(jù)庫增加容量,原來數(shù)據(jù)庫文件STUDENT2_DATA的初始分配空間為5M,現(xiàn)在將STUDENT2_DATA的分配空間增加至20M。
ALTERDATABASESTUDENT2 MODIFYFILE (NAME=STUDENT2_DATA, SIZE=20MB)創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數(shù)據(jù)庫【例3-6】為數(shù)據(jù)庫STUDENT2添加文件組studentfgrp,再增加數(shù)據(jù)文件STUDENT2_DATA1,初始大小10M,最大50M,按照5%增長,并將此文件添加到studentfgrp中。ALTERDATABASESTUDENT2ADDFILEGROUPSTUDENTFGRPGOALTERDATABASESTUDENT2ADDFILE(NAME='STUDENT2_DATA1',FILENAME='D:\DATA\STUDENT2_DATA1.NDF',SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%)TOFILEGROUPSTUDENTFGRPGO創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數(shù)據(jù)庫【例3-7】將數(shù)據(jù)庫STUDENT2中增加的數(shù)據(jù)文件STUDENT2_DATA1刪除。
ALTERDATABASESTUDENT2
REMOVEFILESTUDENT2_DATA1
指定當(dāng)前上下文數(shù)據(jù)庫
USEdatabase
【例】將STUDENT2數(shù)據(jù)庫指定為當(dāng)前缺省使用的數(shù)據(jù)庫
USESTUDENT2創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications刪除數(shù)據(jù)庫可以使用SQLServerManagementStudio與Transact-SQL語句兩種方法刪除數(shù)據(jù)庫。使用SQLServerManagementStudio刪除數(shù)據(jù)庫打開SQLServerManagementStudio,連接到服務(wù)器(即實例)。在對象資源管理器中展開“數(shù)據(jù)庫”目錄,右擊要刪除的數(shù)據(jù)庫,在彈出的快捷菜單中選擇“刪除”命令,在隨后出現(xiàn)的“刪除對象”對話框中單擊“確定”按鈕,即可完成對指定數(shù)據(jù)庫的刪除操作。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications刪除數(shù)據(jù)庫使用Transact-SQL語句刪除數(shù)據(jù)庫Transact-SQL提供了數(shù)據(jù)庫刪除語句DROPDATABASE。具體格式如下:DROPDATABASE{database_name}[,...n][;]其中:database_name為指定要刪除的數(shù)據(jù)庫的名稱。該語句一次可以刪除一個或多個數(shù)據(jù)庫?!纠?-8】刪除已創(chuàng)建的數(shù)據(jù)庫TEACHINGDB
DROPDATABASETEACHINGDB說明:用戶只能根據(jù)自己的權(quán)限刪除用戶數(shù)據(jù)庫;不能刪除當(dāng)前正在使用(正打開供用戶讀寫)的數(shù)據(jù)庫;無法刪除系統(tǒng)數(shù)據(jù)庫(msdb、model、master、tempdb。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications數(shù)據(jù)庫的分離和附加在SQLServer中,除了系統(tǒng)數(shù)據(jù)庫外,其他數(shù)據(jù)庫都可以從服務(wù)器的管理中進(jìn)行分離,以脫離服務(wù)器的管理,同時保持?jǐn)?shù)據(jù)文件與日志文件的完整性和一致性。而分離出來的數(shù)據(jù)庫可以附加到其他SQLServer服務(wù)器上,構(gòu)成完整的數(shù)據(jù)庫。分離數(shù)據(jù)庫(1)在SQLServerManagementStudio的“對象資源管理器”窗口中展開“數(shù)據(jù)庫”結(jié)點,右擊需要分離的數(shù)據(jù)庫,如students,從彈出的快捷菜單中選擇“任務(wù)→分離”命令。(2)在彈出的對話框(如圖3.7所示)中設(shè)置數(shù)據(jù)庫students的分離參數(shù),單擊“確定”按鈕,即可完成操作。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.7分離數(shù)據(jù)庫數(shù)據(jù)庫的分離和附加其中的主要參數(shù)項含義如下:刪除連接:是否斷開與指定服務(wù)器的連接。更新統(tǒng)計信息:選擇在分離數(shù)據(jù)庫之前是否更新過時的優(yōu)化統(tǒng)計信息。默認(rèn)情況下,分離操作將在分離數(shù)據(jù)庫時保留過期的優(yōu)化統(tǒng)計信息。保留全文目錄:選擇是否保留與數(shù)據(jù)庫相關(guān)聯(lián)的所有全文目錄。狀態(tài):顯示數(shù)據(jù)庫分離前是否“就緒”或“未就緒”。如果狀態(tài)是“未就緒”,則“消息”列將顯示有關(guān)數(shù)據(jù)庫的超鏈接信息。當(dāng)數(shù)據(jù)庫涉及復(fù)制時,“消息”列將顯示Databasereplicated。數(shù)據(jù)庫有一個或多個活動連接時,“消息”列將顯示<活動連接數(shù)>個活動連接;例如,1個活動連接。在可以分離數(shù)據(jù)列之前,必須選中“刪除連接”復(fù)選框來斷開與所有活動連接的連接。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications數(shù)據(jù)庫的分離和附加附加數(shù)據(jù)庫(1)右擊“對象資源管理器”窗口中的“數(shù)據(jù)庫”,從彈出的快捷菜單中選擇“附加”命令。(2)在彈出的“附加數(shù)據(jù)庫”對話框中,單擊“添加”按鈕。在彈出的“定位數(shù)據(jù)庫文件”對話框中,選擇要添加的數(shù)據(jù)庫的主數(shù)據(jù)文件(文件后綴為.mdf)(3)單擊“確定”按鈕,返回“附加數(shù)據(jù)庫”對話框(圖3.8所示)。在“附加數(shù)據(jù)庫”對話框中可以修改附加后數(shù)據(jù)庫的名稱。(4)單擊“確定”按鈕。創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications創(chuàng)建數(shù)據(jù)庫DatabasePrinciplesandApplications圖3.8附加數(shù)據(jù)庫3.2.1模式定義對于數(shù)據(jù)庫設(shè)計者,模式代表一個完整數(shù)據(jù)庫整體的邏輯設(shè)計。對于SQL,模式是基本表、視圖、索引等數(shù)據(jù)庫對象一個容器。定義模式相當(dāng)于定義了一個命名空間,在該空間中可以進(jìn)一步定義各種數(shù)據(jù)庫對象。模式定義DatabasePrinciplesandApplications創(chuàng)建模式SQL中創(chuàng)建模式的語句為CREATESCHEMA:CREATESCHEMA {
schema_name
|AUTHORIZATIONowner_name
|schema_nameAUTHORIZATIONowner_name}模式定義DatabasePrinciplesandApplications創(chuàng)建模式【例3-9】為數(shù)據(jù)庫STUDENT2創(chuàng)建一個圖書借閱模式borrowUSESTUDENT2CREATESCHEMAborrow;默認(rèn)情況下,模式屬于創(chuàng)建它的用戶。如果要將模式分配給其它擁有者而不是創(chuàng)建者本身,可以在創(chuàng)建模式時使用AUTHORIZATION子句。模式定義DatabasePrinciplesandApplications創(chuàng)建模式【例3-10】為用戶LI創(chuàng)建一個圖書借閱模式borrowCREATESCHEMAborrowAUTHORIZATIONLI;或者CREATESCHEMAAUTHORIZATIONLI;該語句沒有指定模式名,則其用戶名即為隱含的模式名模式定義DatabasePrinciplesandApplications在模式中創(chuàng)建數(shù)據(jù)庫對象在創(chuàng)建模式時,直接創(chuàng)建數(shù)據(jù)庫對象CREATESCHEMA模式名AUTHORIZATION用戶名
表定義子句|視圖定義子句|授權(quán)定義子句【例3-11】為用戶LI創(chuàng)建一個圖書借閱模式borrow,并且在該模式下定義讀者數(shù)據(jù)表readerCREATESCHEMAborrowAUTHORIZATIONLICREATETABLEreader(
noCHAR(5)PRIMARYKEY, nameCHAR(20),
genderCHAR(2),
ageINT, specialtyCHAR(20));模式定義DatabasePrinciplesandApplications在模式中創(chuàng)建數(shù)據(jù)庫對象在數(shù)據(jù)庫對象前限定模式名【例3-12】在圖書借閱模式borrow下定義圖書數(shù)據(jù)表bookCREATETABLEborrow.book(
isbnCHAR(12)PRIMARYKEY, nameCHAR(20),
authorCHAR(10),
publisher
CHAR(30),
pricemoney); 模式定義DatabasePrinciplesandApplications在模式中創(chuàng)建數(shù)據(jù)庫對象使用SETSCHEMA語句指定當(dāng)前模式
SETSCHEMA模式名其中,模式名即為當(dāng)前模式。例如, SETSCHEMAborrow;指定當(dāng)前模式后,就可以直接使用 CREATETABLEreader( ……
);說明:SQLServer中不能使用此語句模式定義DatabasePrinciplesandApplications刪除模式在SQL中刪除模式的語句為DROPSCHEMA:
DROPSCHEMAschema_name
[CASCADE|RESTRICT]CASCADE(級聯(lián))表示在刪除模式的同時把該模式中所有的數(shù)據(jù)庫對象一并刪除;RESTRICT(限制)表示在刪除模式時,如果該模式中已經(jīng)定義了數(shù)據(jù)庫對象,在拒絕刪除該模式。如果在該模式中沒有任何數(shù)據(jù)庫對象,則可以刪除該模式。模式定義DatabasePrinciplesandApplications刪除模式【例3-13】刪除圖書借閱模式borrowDROPSCHEMAreader_borrowCASCADE;
說明:在SQLServer中沒有“級聯(lián)”和“限制”兩個選項。要刪除的架構(gòu)不能包含任何對象。如果架構(gòu)包含對象,則DROP語句將失敗。在SQLServer中SCHEMA稱為架構(gòu)模式定義DatabasePrinciplesandApplications3.2.2基本表定義在數(shù)據(jù)庫中,表是由數(shù)據(jù)按一定的順序和格式構(gòu)成的數(shù)據(jù)集合,是數(shù)據(jù)庫的主要對象。每一行代表一條記錄,每一列代表記錄的一個字段。沒有記錄的表稱為空表。在SQLServer2005中,每個數(shù)據(jù)庫最多可包含20億個表,每個表可包含1,024個字段。每個表通常都有一個主關(guān)鍵字(又稱為主碼),用于唯一地確定一條記錄。在同一個表中不允許有相同名稱的字段?;颈矶xDatabasePrinciplesandApplications基本表定義對于具體的某一個表,在創(chuàng)建之前,需要確定表的下列特征:表要包含的數(shù)據(jù)的類型;表中的列數(shù),每一列中數(shù)據(jù)的類型和長度(如果必要);哪些列允許空值;是否要使用以及何處使用約束、默認(rèn)設(shè)置和規(guī)則;所需索引的類型,哪里需要索引,哪些列是主鍵,哪些是外鍵。創(chuàng)建表有兩種方法:一種是在SQLServerManagementStudio中創(chuàng)建表,另一種是利用Transact-SQL語句創(chuàng)建表。基本表定義DatabasePrinciplesandApplications利用SQLServerManagementStudio創(chuàng)建表以下表所示的讀者信息表結(jié)構(gòu)為例,說明如何利用SSMS在數(shù)據(jù)庫Library中創(chuàng)建reader表?;颈矶xDatabasePrinciplesandApplications列名數(shù)據(jù)類型長度是否為空說明nochar5否主碼namechar20否genderchar2否ageint是specialtychar20是telchar15是emailvarchar30是利用SQLServerManagementStudio創(chuàng)建表(1)啟動SQLServerManagementStudio,連接到服務(wù)器。在“對象資源管理器”中,展開要新建表的數(shù)據(jù)庫Library。(2)右擊“表”項,在快捷菜單里選擇“新建表”命令?;颈矶xDatabasePrinciplesandApplications利用SQLServerManagementStudio創(chuàng)建表(3)彈出如圖3.9所示的“表設(shè)計器”窗口。在其上半部分對每一列依次輸入列名、數(shù)據(jù)類型(包括列長)及允許空否等基本屬性,在表設(shè)計器窗口下半部分的列屬性,指定列的詳細(xì)屬性。(4)選中要設(shè)置為主鍵的列(如學(xué)號),右擊。在彈出的快捷菜單中選擇“設(shè)置主鍵”命令,或單擊表設(shè)計工具欄上的“設(shè)置主鍵”按鈕,或執(zhí)行“表設(shè)計器”菜單下的“設(shè)置主鍵”命令,將其設(shè)置為主鍵。(5)定義好表中的所有列后,單擊保存按鈕或“文件”菜單中的“保存表名”命令,在彈出的“選擇名稱”對話框中,為該表鍵入一個名稱,單擊“確定”按鈕?;颈矶xDatabasePrinciplesandApplications基本表定義DatabasePrinciplesandApplications圖3.9表設(shè)計器利用Transact-SQL語句創(chuàng)建表CREATETABLE的語法格式如下:CREATETABLE[數(shù)據(jù)庫名.[架構(gòu)名].|架構(gòu)名
.]表名
(列名
數(shù)據(jù)類型
[列級完整性約束] [,列名
數(shù)據(jù)類型
[列級完整性約束]
… [,表級完整性約束] [,完整性約束命名子句])基本表定義DatabasePrinciplesandApplications利用Transact-SQL語句創(chuàng)建表【例3-14】在Library數(shù)據(jù)庫中建立“圖書”表book,表結(jié)構(gòu)如下表所示?;颈矶xDatabasePrinciplesandApplications列名數(shù)據(jù)類型長度是否為空說明isbnchar11否主碼namevarchar50否authorvarchar40否pulisherchar30是pricemoney是categorychar10是利用Transact-SQL語句創(chuàng)建表USELibraryCREATETABLEbook( isbnCHAR(11), /*圖書ISBN號*/ nameCHAR(50), /*圖書名稱*/ authorVARCHAR(40), /*作者*/ publisherVARCHAR(30), /*出版社*/ priceNU
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度存量房交易稅費減免合作協(xié)議3篇
- 裝修能源利用方案
- 玉環(huán)市種植養(yǎng)護(hù)施工方案
- 2025年雙偏心半球閥項目可行性研究報告
- 中國乳腺X機(jī)行業(yè)投資分析及發(fā)展戰(zhàn)略咨詢報告
- 中國封裝氮化鎵發(fā)光二極管行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 2024-2030年中國市政工程PPP模式行業(yè)市場全景監(jiān)測及投資前景展望報告
- 中國數(shù)字電視機(jī)頂盒行業(yè)發(fā)展監(jiān)測及投資前景展望報告
- 2025年中國水運行業(yè)市場調(diào)研及未來發(fā)展趨勢預(yù)測報告
- 中國清潔機(jī)器人行業(yè)發(fā)展?jié)摿︻A(yù)測及投資戰(zhàn)略研究報告
- 割接方案的要點、難點及采取的相應(yīng)措施
- 2025年副護(hù)士長競聘演講稿(3篇)
- 2025至2031年中國臺式燃?xì)庠钚袠I(yè)投資前景及策略咨詢研究報告
- 原發(fā)性腎病綜合征護(hù)理
- 第三章第一節(jié)《多變的天氣》說課稿2023-2024學(xué)年人教版地理七年級上冊
- 2025年中國電科集團(tuán)春季招聘高頻重點提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場安全管理合同2篇
- 建筑垃圾回收利用標(biāo)準(zhǔn)方案
- 福建省廈門市2023-2024學(xué)年高二上學(xué)期期末考試語文試題(解析版)
- 分子標(biāo)記及遺傳連鎖圖譜
- 防火墻施工組織設(shè)計
評論
0/150
提交評論