




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章關系數據庫
標準語言SQLDatabasePrinciplesandApplications第3章關系數據庫標準語言SQL3.1SQL概述3.2數據定義3.3數據查詢3.4數據更新3.5索引3.6視圖3.1SQL概述SQL(StructuredQueryLanguage)結構化查詢語言,是關系數據庫的標準語言SQL是一個通用的、功能極強的關系數據庫語言DatabasePrinciplesandApplicationsSQL概述SQL的起源與發展1986年10月美國國家標準局ANSI批準SQL作為關系數據庫語言的美國標準。稱為SQL86。1989年10月頒布增強完整性特征的SQL89標準1992年ISO對標準又進行了修訂,稱為SQL921999年ISO頒布了SQL99。SQL標準經歷三次修訂,分別為SQL2003、SQL2006和SQL2008DatabasePrinciplesandApplicationsSQL概述SQL的起源與發展
標準大致頁數發布日期SQL/861986.10SQL/89(FIPS127-1)120頁1989年SQL/92622頁1992年SQL991700頁1999年SQL20033600頁2003年DatabasePrinciplesandApplicationsSQL概述SQL組成數據定義語言(DDL)
對模式、基本表、視圖、索引、域等的創建、修改和刪除操作。數據操縱語言(DML)
查詢和更新數據庫中的數據。數據控制語言(DCL)
對基本表和視圖的授權、完整性規則的描述、事務控制等。嵌入式SQL語言(ESQL)
規定SQL語句在高級程序設計語言中使用的規范與標準DatabasePrinciplesandApplicationsSQL概述SQL特點1.綜合統一集數據定義語言(DDL),數據操縱語言(DML),數據控制語言(DCL)功能于一體。可以獨立完成數據庫生命周期中的全部活動:定義關系模式,插入數據,建立數據庫;對數據庫中的數據進行查詢和更新;數據庫重構和維護數據庫安全性、完整性控制等用戶數據庫投入運行后,可根據需要隨時逐步修改模式,不影響數據的運行。數據操作符統一DatabasePrinciplesandApplicationsSQL概述SQL特點(續)2.高度非過程化非關系數據模型的數據操縱語言“面向過程”,必須制定存取路徑SQL只要提出“做什么”,無須了解存取路徑存取路徑的選擇以及SQL的操作過程由系統自動完成。DatabasePrinciplesandApplicationsSQL概述SQL特點(續)3.面向集合的操作方式非關系數據模型采用面向記錄的操作方式,操作對象是一條記錄SQL采用集合操作方式操作對象、查找結果可以是元組的集合一次插入、刪除、更新操作的對象可以是元組的集合DatabasePrinciplesandApplicationsSQL概述SQL特點(續)4.語言簡潔,易學易用 SQL功能極強,完成核心功能只用了9個動詞。DatabasePrinciplesandApplicationsSQL概述SQL特點(續)5.以同一種語法結構提供多種使用方式SQL是獨立的語言能夠獨立地用于聯機交互的使用方式SQL又是嵌入式語言
SQL能夠嵌入到高級語言(例如C,C++,Java)程序中,供程序員設計程序時使用DatabasePrinciplesandApplicationsSQL概述SQL特點(續)6.支持三級模式結構DatabasePrinciplesandApplicationsSQL概述SQL視圖2視圖1基本表2基本表1基本表3基本表4存儲文件2存儲文件1外模式模式內模式SQL特點(續)基本表本身獨立存在的表SQL中一個關系就對應一個基本表一個(或多個)基本表對應一個存儲文件一個表可以帶若干索引存儲文件邏輯結構組成了關系數據庫的內模式物理結構是任意的,對用戶透明視圖從一個或幾個基本表導出的表數據庫中只存放視圖的定義而不存放視圖對應的數據視圖是一個虛表用戶可以在視圖上再定義視圖DatabasePrinciplesandApplicationsSQL概述示例數據庫DatabasePrinciplesandApplicationsSQL概述nonamegenderagespecialty14001王建立男18CP14002張玲女19FR14003王軍男20IF14004李建國男19CP14005趙文娟女18MAisbnnameauthorpublisherpricecategory04-012955-7積分變換張元林高等教育出版社8.00理04-023909-6線性代數賈蘭香高等教育出版社16.00理302-00860-4C程序設計譚浩強清華大學出版社20.00工302-02368-5數據結構_C語言版嚴蔚敏清華大學出版社22.00工302-03314-5數據結構題集嚴蔚敏清華大學出版社16.00工5613-3644-6讀者文摘精粹版周宏陜西師范大學出版社38.00文81080-159-1大學英語李蔭華上海外語教育出版社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表數據類型數據庫中的所有數據都存放在按行與列格式組織的基本表中,數據類型是數據的一種屬性,決定數據存儲的空間、數據的長度以及數據能參與的運算。SQL提供的數據類型可以歸納為:數值類型、字符類型、日期時間類型、貨幣類型和其他數據類型。
說明:不同的SQL實現定義的數據類型以及使用的關鍵字有所不同。以下所述數據類型適用SQLServer,其他SQL實現請參照其說明。DatabasePrinciplesandApplicationsSQL基本知識數據類型(續)1.數值類型數值類型根據其所存儲數據的精確與否,分為精確數值類型和近似數值類型。(1)精確數值類型精確數值類型用來存儲沒有小數位的整數或定點小數DatabasePrinciplesandApplicationsSQL基本知識類別數據類型字節數取值范圍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數據類型(續)decimal和numeric數據類型需要提供兩個參數,第1個參數說明數據類型的精度,即數字的個數,第2個參數說明數據類型的小數位數,例如decimal(12,4),定義一個數據類型,其中可以存放12位數字,其中小數點后面有4位數字。在SQL
Server中decimal和numeric兩者唯一的區別在于decimal不能用于帶有identity關鍵字的列。數據類型bigint,int,smallint和tinyint數據類型只能用于存儲整數。decimal和numeric數據類型既可以存放小數數值,也可以存放整數,當參數s的值取0時,表示這兩種數據類型中存放的是整數DatabasePrinciplesandApplicationsSQL基本知識數據類型(續)(2)近似數值類型近似數字數據類型可以存儲十進制值,用于表示浮點數據。此類型的數據不一定有精確的表示。SQLServer存儲數據時對小數點右邊的數進行四舍五入。只有在精確數據類型不夠大,不能存儲數值時,才考慮使用float。float[(n)]中n的取值范圍為1~53。當1≤n≤24時,占用4字節,精度為7;當25≤n≤53時,占用8字節,精度為15。DatabasePrinciplesandApplicationsSQL基本知識數據類型字節數取值范圍float[(n)]4或8-2.23E308~2.23E308real4-3.4E38~3.4E38數據類型(續)2.字符類型字符類型是用于存儲字符型數據的。該數據類型可以使用ASCII編碼或Unicode編碼。ASCII編碼要求用8個二進制位來表示字母的范圍。Unicode標準使用2個字節來表示每個字符。在Unicode標準中,包括了以各種字符集定義的全部字符。字符類型常量應該用單引號括起來。DatabasePrinciplesandApplicationsSQL基本知識數據類型(續)DatabasePrinciplesandApplicationsSQL基本知識數據類型字節數字符數作用char(n)1~8000最多8000個字符固定寬度的ASCII數據類型varchar(n)1~8000最多8000個字符可變寬度的ASCII數據類型varchar(max)最大2G最多1073741824個字符可變寬度的ASCII數據類型text最大2G最多1073741824個字符可變寬度的ASCII數據類型nchar(n)2~8000最多4000個字符固定寬度的Unicode數據類型nvarchar(n)2~8000最多4000個字符可變寬度的Unicode數據類型nvarchar(max)最大2G最多536870912個字符固定寬度的Unicode數據類型ntext最大2G最多536870912個字符固定寬度的Unicode數據類型數據類型(續)3.日期時間類型日期時間類型數據,可具體分為datetime與smalldatetime兩種類型。datetime和smalldatetime數據類型在計算機內部是作為整數存儲的。datetime類型存儲為1對4字節整數,前4字節存儲日期值,后4字節存儲時間值。它們一起表示自1753年1月1日午夜12點鐘經過的毫秒數。smalldatetime類型存儲為一對2字節整數,前2字節存儲日期值,后2字節存儲時間值,它們一起表示自1900年1月1日午夜12點鐘經過的分鐘SQL基本知識DatabasePrinciplesandApplications數據類型(續)日期時間數據類型由有效的日期和時間組成。如有下列日期和時間數據“12/05/9812:26:00:00:00PM”和“2:38:29:15:01AM6/15/98”。前一個數據是日期在前,時間在后。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數據類型(續)SQL基本知識DatabasePrinciplesandApplications日期類型字節數取值范圍datetime8從1753-1-1到9999-12-31,精度為3.33毫秒smalldatetime4從1900-1-1到2079-12-31,精度為1分鐘數據類型(續)4.貨幣類型貨幣數據類型可用于存儲精確到小數點后4個小數位的貨幣值。貨幣數據類型的特點是小數點后存儲4位小數,所以在金融應用程序中很少使用這種數據類型。通常使用decimal數據類型代替貨幣數據類型,因為使用decimal數據類型可以更靈活地指定小數點后多位數。貨幣類型常量應以貨幣單位符號做前綴,默認$SQL基本知識DatabasePrinciplesandApplications數據類型
字節數
取值范圍money8-922
337
203
685
477.5808~922
337
203
685
477.5807smallmoney4-214
748.3648~214
748.3647數據類型(續)5.二進制數據類型SQLServer提供了3種二進制數據類型,允許在一個表中存儲各種數量的二進制數據。SQL基本知識DatabasePrinciplesandApplications數據類型字節數作用binary(n)1~8000存儲固定大小的二進制數據varbinary(n)1~8000存儲可變大小的二進制數據varbinary(max)最多2G存儲可變大小的二進制數據image最多2G存儲可變大小的二進制數據數據類型(續)二進制數據類型用于存儲SQLServer中的文件,如Word、Excel、PDF、Visio以及圖像等文件。image數據類型除了可以存儲圖像文件以外,也可以存儲其他二進制文件。varbinary(max)數據類型是SQLServer2005新增的一種數據類型,它可以存儲與image數據類型相同大小的數據,并且所有能夠在binary/varbinary數據類型上執行的操作和函數都可以在varbinary(max)數據類型上使用,這是image數據類型不能做到的。二進制類型常量是以0x作前綴的十六進制數字字符串。SQL基本知識DatabasePrinciplesandApplications運算符1.比較運算符 =、<、<=、>、>=、<>(或者!=)2.邏輯運算符 AND、OR和NOT3.算術運算符 +、-、*和/SQL基本知識DatabasePrinciplesandApplications運算符(續)4.謂詞BETWEEN…AND…NOTBETWEEN…AND…用于判斷屬性列值是否在指定范圍內。rageBETWEEN18AND20rageNOTBETWEEN18AND20IN和NOTIN用于判斷屬性列值是否在指定集合內。rageIN(15,17,18)rageNOTIN(15,17,18)SQL基本知識DatabasePrinciplesandApplications運算符(續)LIKE和NOTLIKE用于進行字符串匹配。語法格式:[NOT]LIKE匹配串[ESCAPE轉義字符]匹配串由普通字符和/或通配符組成。通配符:%(百分號):代表任意長度(長度可以為0)的字符串。_(下劃線):代表任意單個字符。SQL基本知識DatabasePrinciplesandApplications運算符(續)通配符SQL基本知識DatabasePrinciplesandApplications通配符說明示例%包含零個或多個字符的任意字符串。LIKE'%cpu%'將查找在任意位置包含單詞cpu的所有字符串。_(下劃線)任何單個字符。LIKE'_en'將查找以en結尾的所有3個字母的字符串。[]指定范圍([a-f])或([abcdef])中的任何單個字符。LIKE'[C-P]ars'將查找以ars結尾并且以介于C與P之間的任何單個字符開始的字符串。[^]不屬于指定范圍([a-f])或([abcdef])的任何單個字符。LIKE'de[^l]%'將查找以de開始并且其后的字母不為l的所有字符串。運算符(續)如果要查詢的字符串本身含有%或_,需要使用ESCAPE‘<換碼字符>’短語對通配符進行轉義。例:查詢課程“Delphi_6.0”的課程號SELECT課程名,課號FROM課程WHERE課程名LIKE‘Delphi/_6.0’ESCAPE‘/’ESCAPE‘/’短語表示“/”是換碼字符,這樣匹配串中緊跟在/之后的字符“_”不再具有通配符的含義,轉意為普通的“_”字符,請注意“/”不參與匹配過程。SQL基本知識DatabasePrinciplesandApplications運算符(續)ISNULL和ISNOTNULL用于判斷是否為空。SQL基本知識DatabasePrinciplesandApplications運算符(續)運算符的優先級SQL基本知識DatabasePrinciplesandApplications優先級運算符1()(圓括號)2+(正)、-(負)、~(位非)3*(乘)、/(除)、%(取模)4+(加)、(+連接)、-(減)、&(位與)5=,>、<、>=、<=、<>、!=、!>、!<(比較運算符)6^(位異或)、|(位或)7NOT8AND9ALL、ANY、BETWEEN、IN、LIKE、OR、SOME10=(賦值)3.2數據定義SQL的數據定義功能:數據庫定義、模式定義、表定義、視圖和索引的定義。數據定義DatabasePrinciplesandApplications文件和文件組數據庫是存儲數據的容器,數據庫在磁盤上是以文件為單位存儲的,SQLServer將數據庫映射為一組操作系統文件。每個SQLServer數據庫至少具有兩個操作系統文件:一個主數據文件和一個日志文件。SQLServer的數據庫具有三種類型的文件:(1)主數據文件:主數據文件是數據庫的起點,指向數據庫中的其他文件。每個數據庫都有且只有一個主數據文件。主數據文件的推薦文件擴展名是.mdf。創建數據庫DatabasePrinciplesandApplications文件和文件組(2)次要數據文件(輔助數據文件):次要數據文件可用作存儲用戶數據和對象。如果主數據文件可以存儲數據庫中的所有數據,那么數據庫就不需要次要數據文件。有些數據庫可能比較大,所以需要多個次要數據文件,或使用位于不同磁盤驅動器上的輔助文件將數據擴展到多個磁盤。并不是所有的數據庫都需要次要數據文件。次要數據文件的推薦擴展名為.ndf。(3)事務日志文件:日志文件包含著用于恢復數據庫的所有日志信息。每個數據庫必須至少有一個日志文件,當然也可以有多個。SQLServer2005事務日志采用提前寫入的方式,即對數據庫的修改先寫入事務日志中,然后再寫入數據庫。日志文件的推薦文件擴展名是.ldf。創建數據庫DatabasePrinciplesandApplications文件和文件組數據庫文件組SQLServer中的數據庫文件組分為主文件組和用戶定義文件組。①主文件組:主文件組包含主要數據庫文件和任何沒有明確指派給其他文件組的其他文件。數據庫的系統表都包含在主文件組中。②用戶定義文件組:用戶定義文件組是在CREATEDATABASE或ALTERDATABASE語句中,使用FILEGROUP關鍵字指定的文件組。創建數據庫DatabasePrinciplesandApplications文件和文件組文件和文件組應用的規則:(1)一個文件只能存在于一個文件組中,一個文件組也只能被一個數據庫使用。(2)主文件組中包含了所有的系統表。當建立數據庫時,主文件組包括主數據庫文件和未指定組的其它文件。(3)在創建數據庫對象時如果沒有指定將其放在哪一個文件組中,就會將它放在默認文件組中。如果沒有指定默認文件組,則主文件組為默認文件組。(4)事務日志文件不屬于任何文件組。創建數據庫DatabasePrinciplesandApplications創建數據庫用戶要創建數據庫,必須確定數據庫的名稱、所有者、大小以及存儲該數據庫的文件和文件組。數據庫名稱必須遵循為標識符指定的規則:數據庫名稱長度為1~128個字符。名稱首字符必須是一個英文字母或“_”、“#”和“@”中的任意字符(中文版包括漢字)。在中文版SQLServer中,可以直接使用漢字為數據庫命名。名稱中不能出現空格,不允許使用SQLServer的保留字。創建數據庫DatabasePrinciplesandApplications創建數據庫在SQLServer中創建用戶數據庫主要有以下兩種形式:在SQLServerManagementStudio中創建數據庫。利用Transact-SQL語句創建數據庫。創建數據庫DatabasePrinciplesandApplications在SQLServerManagementStudio中創建數據庫在SQLServerManagementStudio中創建數據庫的過程如下:啟動SQLServerManagementStudio,在對象資源管理器中,右擊“數據庫”選項,在彈出的快捷菜單中選擇“新建數據庫”命令,如圖3.1所示,打開“新建數據庫”窗口。創建數據庫DatabasePrinciplesandApplications圖3.1選擇“新建數據庫”命令在SQLServerManagementStudio中創建數據庫創建數據庫DatabasePrinciplesandApplications在“新建數據庫”窗口中的“常規”選項卡,如圖4.3所示,有以下幾個可選項。在“數據庫名稱”文本框中,輸入要創建的數據庫名稱,如“學生選課”。若要通過接受所有的默認值來創建數據庫,則單擊“確定”按鈕;否則,繼續后面的可選項目的選擇。若要更改所有者名稱,單擊“所有者”后的按鈕選擇其他所有者。若要啟用數據庫的全文搜索,選中“使用全文索引”復選框。在SQLServerManagementStudio中創建數據庫創建數據庫DatabasePrinciplesandApplications在SQLServerManagementStudio中創建數據庫創建數據庫DatabasePrinciplesandApplications若要更改主數據文件和事務日志文件的默認值,并輸入新值。各項的具體含義如下:邏輯名稱:用來輸入數據文件或日志文件的邏輯文件名。邏輯文件名是在所有Transact-SQL語句中引用物理文件時所使用的名稱。文件類型:數據庫文件的類型。對于新添加的數據庫文件可以選擇“數據”或“日志”。文件組:數據庫中的數據文件所屬的文件組。日志文件沒有文件組的概念。初始大小:確定數據庫文件的初始大小。默認的數據文件初始大小為3M,日志文件為1M。自動增長:顯示設置的數據文件和日志文件的增長方式增量。單擊后面的按鈕可以修改。路徑:顯示數據庫物理文件的存放路徑。單擊后面的按鈕可以選擇新的存放路徑。在SQLServerManagementStudio中創建數據庫創建數據庫DatabasePrinciplesandApplications切換到“新建數據庫”窗口中的“選項”選項卡中,如圖3.3所示。其中有以下幾個可選項:若要更改數據庫的排序規則,從“排序規則”下拉列表框中選擇一個排序規則。若要更改恢復模式,從“恢復模式”下拉列表框中選擇一個恢復模式。若要更改數據庫其他選項,從下面的列表中根據需要修改選項值。切換到“文件組”選項卡進行設置,如圖3.4所示。如果要添加文件組,可以單擊“添加”按鈕,然后輸入文件組的名稱。所有參數設置完畢后,單擊“確定”按鈕,新的數據庫就創建成功。展開對象資源管理器中的數據庫項,可以看到新建的數據庫。創建數據庫DatabasePrinciplesandApplications圖3.3新建數據庫“常規”選項對話框創建數據庫DatabasePrinciplesandApplications圖3.4新建數據庫“文件組”選項對話框利用Transact-SQL語句創建數據庫CREATEDATABASE語句的基本格式CREATEDATABASEdatabase_name--設置數據庫名稱
[ON[PRIMARY][<filespec>[,...n]]--設置數據文件
[,<filegroup>[,...n]]--設置文件組
[LOGON{<filespec>[,...n]}]--設置日志文件
][COLLATEcollation_name]--設置排序規則名稱
[WITH<external_access_option>]--設置外部訪問
][;]創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫創建數據庫DatabasePrinciplesandApplications說明:在T-SQL語言的命令格式中,用[]括起來的內容表示是可選的;[,…n]表示重復前面的內容;用<>括起來的內容表示在實際編寫語句時,用相應的內容替代;用{}括起來的內容表示是必選的;類似A|B的格式,表示A和B只能選擇一個,不能同時都選。語句中參數的說明如下:database_name:新建數據庫的名稱。同一個SQLServer的實例中數據庫名稱必須唯一,且最長為128個字符。利用Transact-SQL語句創建數據庫ON:顯式定義用來存儲數據庫數據部分的磁盤文件(數據文件)。當后面是以逗號分隔的用以定義主文件組的數據文件的<filespec>列表時,需使用ON。<filespec>列表用于定義主文件組的數據文件。主文件組的文件列表后可以包含用逗號分隔的<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]}創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫filegroup的定義格式:<filegroup>::={FILEGROUPfilegroup_name[DEFAULT]
<filespec>[,...n]}PRIMARY:用于指定主文件組中的文件。主文件組不僅包含數據庫系統表中的全部內容,而且還包含用戶文件組中沒有包含的全部對象。一個數據庫只能有一個主文件,默認情況下,如果不指定PRIMARY關鍵字,則在命令中列出的第一個文件將被默認為主文件。LOGON:顯式定義用來存儲數據庫日志的日志文件。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫NAME:指定數據庫文件的邏輯名稱,這是在SQLServer系統中使用的名稱,是數據庫文件在SQLServer中的標識符。FILENAME:指定數據庫文件的在操作系統中文件名稱和路徑,該操作系統文件名和NAME的邏輯名稱一一對應。SIZE:指定數據庫的初始容量大小。如果沒有指定主文件的大小,則SQLServer默認其與模板數據庫中的主文件大小一致,其他數據庫文件和事務日志文件則默認為1MB。指定大小的數字size可以使用KB、MB、GB和TB后綴,默認的后綴為MB。size中不能使用小數,其最小值為512KB,默認值為1MB。主文件的size不能小于模板數據庫中的主文件。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫MAXSIZE:指定操作系統文件可以增長到的最大尺寸。如果沒有指定,則文件可以不斷增大直到充滿磁盤。FILEGROWTH:指定文件每次增加容量的大小,當指定數據為0時,表示文件不增長。增加量可以確定為以KB、MB作后綴的字節數或以%作后綴的被增加容量文件的百分比來表示。默認后綴為MB。如果沒有指定FILEGROWTH,則默認值為10%,每次擴容的最小值為64KB。COLLATEcollation_name:指定數據庫的默認排序規則。排序規則名稱既可以是Windows排序規則名稱,也可以是SQL排序規則名稱。如果沒有指定排序規則,則將SQLServer實例的默認排序規則分配為數據庫的排序規則。不能對數據庫快照指定排序規則名稱。WITH<external_access_option>
:控制外部與數據庫之間的雙向訪問。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫【例3-1】使用CREATEDATABASE創建一個新的數據庫,名稱為“STUDENT1”,其他所有參數均取默認值。
CREATEDATABASESTUDENT1【例3-2】創建數據庫名為“STUDENT2”的數據庫,包含一個主數據文件和一個事務日志文件。主數據文件的邏輯名為“STUDENT2_DATA”,操作系統文件名為“STUDENT2_DATA.MDF”,初始容量大小為5M,最大容量為20M,文件的增長量為20%。事務日志文件的邏輯文件名為“STUDENT2_LOG”,物理文件名為“STUDENT2_LOG.LDF”,初始容量大小為5M,最大容量為10M,文件增長量為2M。數據文件與事務日志文件都放在D:\SQLDATA目錄。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫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文件夾。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫【例3-3】創建一個指定多個數據文件和日志文件的數據庫。該數據庫名稱為TEACHINGDB,有1個5MB和1個10MB的數據文件和2個5MB的事務日志文件。數據文件邏輯名稱為TEACHINGDB1和TEACHINGDB2,物理文件名為TEACHINGDB1.mdf和TEACHINGDB2.ndf。主文件是TEACHINGDB1,由PRIMARY指定,兩個數據文件的最大尺寸分別為無限大和100MB,增長速度分別為10%和1MB。事務日志文件的邏輯名為TEACHINGDBLOG1和TEACHINGDBLOG2,物理文件名為TEACHINGDBLOG1.ldf和TEACHINGDBLOG2.ldf,最大尺寸均為50MB,文件增長速度為1MB。要求數據庫文件和日志文件的物理文件都存放在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創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫【例3-4】在【例4-3】創建一個新的文件組,并將邏輯名稱為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)創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句創建數據庫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創建數據庫DatabasePrinciplesandApplications修改數據庫建好數據庫后,可以對其進行修改。修改數據庫包括增減數據文件和日志文件、修改文件屬性(包括更改文件名和文件大小)、修改數據庫選項等。可以使用SQLServerManagementStudio與Transact-SQL語句兩種方法修改數據庫。創建數據庫DatabasePrinciplesandApplications使用SQLServerManagementStudio修改數據庫啟動SQLServerManagementStudio,在對象資源管理器中,右擊所需要修改的數據庫如students,在快捷菜單中選擇“屬性”命令打開“數據庫屬性”窗口,如圖3.5所示。在“數據庫屬性”窗口的“常規”選項卡中,顯示的是數據庫的基本信息,這些信息不能修改。單擊“文件”選項卡,如圖3.6所示,可以修改數據庫的邏輯名稱、初始大小、自動增長等屬性,也可以根據需要添加數據文件和日志文件,還可以更改數據庫的所有者。創建數據庫DatabasePrinciplesandApplications創建數據庫DatabasePrinciplesandApplications圖3.5數據庫屬性“文件”選項卡創建數據庫DatabasePrinciplesandApplications圖3.6數據庫屬性“文件”選項卡使用SQLServerManagementStudio修改數據庫在“文件組”選項卡中,可以修改現有的文件組,也可以指定數據庫的默認文件組、添加新文件組。在“選項”選項卡中,修改數據庫的排序規則。“數據庫屬性”窗口包含的各種屬性,只要需要,就可以選擇相應的選項卡來修改。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數據庫創建數據庫DatabasePrinciplesandApplicationsTransact-SQL提供了修改數據庫的語句ALTERDATABASE,語句格式如下:
ALTERDATABASEdatabase_name--需修改的數據庫名
{<add_or_modify_files>--增加或修改數據庫文件
|<add_or_modify_filegroups>--增加或修改數據庫文件組
|<set_database_options>--設置數據庫選項
|MODIFYNAME=new_database_name--數據庫重命名
|COLLATEcollation_name--更改排序規則
}[;]利用Transact-SQL語句修改數據庫下面說明上述格式的主要參數:(1)database_name:要修改的數據庫的名稱。(2)<add_or_modify_files>:指定要添加或修改的文件。(3)<add_or_modify_filegroups>:在數據庫中添加或刪除文件組。(4)<set_database_options>:設置數據庫選項。(5)MODIFYNAME=new_database_name:使用指定的名稱重命名數據庫。(6)COLLATEcollationname:指定數據庫的排序規則。<add_or_modify_files>子句的語法:創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數據庫
<add_or_modify_files>::=--增加或修改數據庫文件語法塊
{ADDFILE<filespec>[,...n]--文件屬性修改
[TOFILEGROUP{filegroup_name|DEFAULT}] |ADDLOGFILE<filespec>[,...n] |REMOVEFILElogical_file_name |MODIFYFILE<filespec>}下面說明上述格式的主要參數:(1)ADDFILE:將文件添加到數據庫。(2)TOFILEGROUP{filegroup_nameIDEFAULT}:指定要將指定文件添加到的文件組。(3)ADDLOGFILE:添加日志文件。(4)REMOVEFILElogical_file_name:從SQLServer的實例中刪除邏輯文件說明并刪除物理文件。除非文件為空,否則無法刪除文件。MODIFYFILE:指定應修改的文件,一次只能更改一個<filespec>屬性。創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數據庫<add_or_modify_filegroups>的語法:<add_or_modify_filegroups>::={|ADDFILEGROUPfilegroup_name--增加文件組
|REMOVEFILEGROUPfilegroup_name--刪除文件組
|MODIFYFILEGROUPfilegroup_name--修改文件組
{<filegroup_updatability_option>
|DEFAULT
|NAME=new_filegroup_name}}創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數據庫【例3-5】為STUDENT2數據庫增加容量,原來數據庫文件STUDENT2_DATA的初始分配空間為5M,現在將STUDENT2_DATA的分配空間增加至20M。
ALTERDATABASESTUDENT2 MODIFYFILE (NAME=STUDENT2_DATA, SIZE=20MB)創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數據庫【例3-6】為數據庫STUDENT2添加文件組studentfgrp,再增加數據文件STUDENT2_DATA1,初始大小10M,最大50M,按照5%增長,并將此文件添加到studentfgrp中。ALTERDATABASESTUDENT2ADDFILEGROUPSTUDENTFGRPGOALTERDATABASESTUDENT2ADDFILE(NAME='STUDENT2_DATA1',FILENAME='D:\DATA\STUDENT2_DATA1.NDF',SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%)TOFILEGROUPSTUDENTFGRPGO創建數據庫DatabasePrinciplesandApplications利用Transact-SQL語句修改數據庫【例3-7】將數據庫STUDENT2中增加的數據文件STUDENT2_DATA1刪除。
ALTERDATABASESTUDENT2
REMOVEFILESTUDENT2_DATA1
指定當前上下文數據庫
USEdatabase
【例】將STUDENT2數據庫指定為當前缺省使用的數據庫
USESTUDENT2創建數據庫DatabasePrinciplesandApplications刪除數據庫可以使用SQLServerManagementStudio與Transact-SQL語句兩種方法刪除數據庫。使用SQLServerManagementStudio刪除數據庫打開SQLServerManagementStudio,連接到服務器(即實例)。在對象資源管理器中展開“數據庫”目錄,右擊要刪除的數據庫,在彈出的快捷菜單中選擇“刪除”命令,在隨后出現的“刪除對象”對話框中單擊“確定”按鈕,即可完成對指定數據庫的刪除操作。創建數據庫DatabasePrinciplesandApplications刪除數據庫使用Transact-SQL語句刪除數據庫Transact-SQL提供了數據庫刪除語句DROPDATABASE。具體格式如下:DROPDATABASE{database_name}[,...n][;]其中:database_name為指定要刪除的數據庫的名稱。該語句一次可以刪除一個或多個數據庫。【例3-8】刪除已創建的數據庫TEACHINGDB
DROPDATABASETEACHINGDB說明:用戶只能根據自己的權限刪除用戶數據庫;不能刪除當前正在使用(正打開供用戶讀寫)的數據庫;無法刪除系統數據庫(msdb、model、master、tempdb。創建數據庫DatabasePrinciplesandApplications數據庫的分離和附加在SQLServer中,除了系統數據庫外,其他數據庫都可以從服務器的管理中進行分離,以脫離服務器的管理,同時保持數據文件與日志文件的完整性和一致性。而分離出來的數據庫可以附加到其他SQLServer服務器上,構成完整的數據庫。分離數據庫(1)在SQLServerManagementStudio的“對象資源管理器”窗口中展開“數據庫”結點,右擊需要分離的數據庫,如students,從彈出的快捷菜單中選擇“任務→分離”命令。(2)在彈出的對話框(如圖3.7所示)中設置數據庫students的分離參數,單擊“確定”按鈕,即可完成操作。創建數據庫DatabasePrinciplesandApplications創建數據庫DatabasePrinciplesandApplications圖3.7分離數據庫數據庫的分離和附加其中的主要參數項含義如下:刪除連接:是否斷開與指定服務器的連接。更新統計信息:選擇在分離數據庫之前是否更新過時的優化統計信息。默認情況下,分離操作將在分離數據庫時保留過期的優化統計信息。保留全文目錄:選擇是否保留與數據庫相關聯的所有全文目錄。狀態:顯示數據庫分離前是否“就緒”或“未就緒”。如果狀態是“未就緒”,則“消息”列將顯示有關數據庫的超鏈接信息。當數據庫涉及復制時,“消息”列將顯示Databasereplicated。數據庫有一個或多個活動連接時,“消息”列將顯示<活動連接數>個活動連接;例如,1個活動連接。在可以分離數據列之前,必須選中“刪除連接”復選框來斷開與所有活動連接的連接。創建數據庫DatabasePrinciplesandApplications數據庫的分離和附加附加數據庫(1)右擊“對象資源管理器”窗口中的“數據庫”,從彈出的快捷菜單中選擇“附加”命令。(2)在彈出的“附加數據庫”對話框中,單擊“添加”按鈕。在彈出的“定位數據庫文件”對話框中,選擇要添加的數據庫的主數據文件(文件后綴為.mdf)(3)單擊“確定”按鈕,返回“附加數據庫”對話框(圖3.8所示)。在“附加數據庫”對話框中可以修改附加后數據庫的名稱。(4)單擊“確定”按鈕。創建數據庫DatabasePrinciplesandApplications創建數據庫DatabasePrinciplesandApplications圖3.8附加數據庫3.2.1模式定義對于數據庫設計者,模式代表一個完整數據庫整體的邏輯設計。對于SQL,模式是基本表、視圖、索引等數據庫對象一個容器。定義模式相當于定義了一個命名空間,在該空間中可以進一步定義各種數據庫對象。模式定義DatabasePrinciplesandApplications創建模式SQL中創建模式的語句為CREATESCHEMA:CREATESCHEMA {
schema_name
|AUTHORIZATIONowner_name
|schema_nameAUTHORIZATIONowner_name}模式定義DatabasePrinciplesandApplications創建模式【例3-9】為數據庫STUDENT2創建一個圖書借閱模式borrowUSESTUDENT2CREATESCHEMAborrow;默認情況下,模式屬于創建它的用戶。如果要將模式分配給其它擁有者而不是創建者本身,可以在創建模式時使用AUTHORIZATION子句。模式定義DatabasePrinciplesandApplications創建模式【例3-10】為用戶LI創建一個圖書借閱模式borrowCREATESCHEMAborrowAUTHORIZATIONLI;或者CREATESCHEMAAUTHORIZATIONLI;該語句沒有指定模式名,則其用戶名即為隱含的模式名模式定義DatabasePrinciplesandApplications在模式中創建數據庫對象在創建模式時,直接創建數據庫對象CREATESCHEMA模式名AUTHORIZATION用戶名
表定義子句|視圖定義子句|授權定義子句【例3-11】為用戶LI創建一個圖書借閱模式borrow,并且在該模式下定義讀者數據表readerCREATESCHEMAborrowAUTHORIZATIONLICREATETABLEreader(
noCHAR(5)PRIMARYKEY, nameCHAR(20),
genderCHAR(2),
ageINT, specialtyCHAR(20));模式定義DatabasePrinciplesandApplications在模式中創建數據庫對象在數據庫對象前限定模式名【例3-12】在圖書借閱模式borrow下定義圖書數據表bookCREATETABLEborrow.book(
isbnCHAR(12)PRIMARYKEY, nameCHAR(20),
authorCHAR(10),
publisher
CHAR(30),
pricemoney); 模式定義DatabasePrinciplesandApplications在模式中創建數據庫對象使用SETSCHEMA語句指定當前模式
SETSCHEMA模式名其中,模式名即為當前模式。例如, SETSCHEMAborrow;指定當前模式后,就可以直接使用 CREATETABLEreader( ……
);說明:SQLServer中不能使用此語句模式定義DatabasePrinciplesandApplications刪除模式在SQL中刪除模式的語句為DROPSCHEMA:
DROPSCHEMAschema_name
[CASCADE|RESTRICT]CASCADE(級聯)表示在刪除模式的同時把該模式中所有的數據庫對象一并刪除;RESTRICT(限制)表示在刪除模式時,如果該模式中已經定義了數據庫對象,在拒絕刪除該模式。如果在該模式中沒有任何數據庫對象,則可以刪除該模式。模式定義DatabasePrinciplesandApplications刪除模式【例3-13】刪除圖書借閱模式borrowDROPSCHEMAreader_borrowCASCADE;
說明:在SQLServer中沒有“級聯”和“限制”兩個選項。要刪除的架構不能包含任何對象。如果架構包含對象,則DROP語句將失敗。在SQLServer中SCHEMA稱為架構模式定義DatabasePrinciplesandApplications3.2.2基本表定義在數據庫中,表是由數據按一定的順序和格式構成的數據集合,是數據庫的主要對象。每一行代表一條記錄,每一列代表記錄的一個字段。沒有記錄的表稱為空表。在SQLServer2005中,每個數據庫最多可包含20億個表,每個表可包含1,024個字段。每個表通常都有一個主關鍵字(又稱為主碼),用于唯一地確定一條記錄。在同一個表中不允許有相同名稱的字段。基本表定義DatabasePrinciplesandApplications基本表定義對于具體的某一個表,在創建之前,需要確定表的下列特征:表要包含的數據的類型;表中的列數,每一列中數據的類型和長度(如果必要);哪些列允許空值;是否要使用以及何處使用約束、默認設置和規則;所需索引的類型,哪里需要索引,哪些列是主鍵,哪些是外鍵。創建表有兩種方法:一種是在SQLServerManagementStudio中創建表,另一種是利用Transact-SQL語句創建表。基本表定義DatabasePrinciplesandApplications利用SQLServerManagementStudio創建表以下表所示的讀者信息表結構為例,說明如何利用SSMS在數據庫Library中創建reader表。基本表定義DatabasePrinciplesandApplications列名數據類型長度是否為空說明nochar5否主碼namechar20否genderchar2否ageint是specialtychar20是telchar15是emailvarchar30是利用SQLServerManagementStudio創建表(1)啟動SQLServerManagementStudio,連接到服務器。在“對象資源管理器”中,展開要新建表的數據庫Library。(2)右擊“表”項,在快捷菜單里選擇“新建表”命令。基本表定義DatabasePrinciplesandApplications利用SQLServerManagementStudio創建表(3)彈出如圖3.9所示的“表設計器”窗口。在其上半部分對每一列依次輸入列名、數據類型(包括列長)及允許空否等基本屬性,在表設計器窗口下半部分的列屬性,指定列的詳細屬性。(4)選中要設置為主鍵的列(如學號),右擊。在彈出的快捷菜單中選擇“設置主鍵”命令,或單擊表設計工具欄上的“設置主鍵”按鈕,或執行“表設計器”菜單下的“設置主鍵”命令,將其設置為主鍵。(5)定義好表中的所有列后,單擊保存按鈕或“文件”菜單中的“保存表名”命令,在彈出的“選擇名稱”對話框中,為該表鍵入一個名稱,單擊“確定”按鈕。基本表定義DatabasePrinciplesandApplications基本表定義DatabasePrinciplesandApplications圖3.9表設計器利用Transact-SQL語句創建表CREATETABLE的語法格式如下:CREATETABLE[數據庫名.[架構名].|架構名
.]表名
(列名
數據類型
[列級完整性約束] [,列名
數據類型
[列級完整性約束]
… [,表級完整性約束] [,完整性約束命名子句])基本表定義DatabasePrinciplesandApplications利用Transact-SQL語句創建表【例3-14】在Library數據庫中建立“圖書”表book,表結構如下表所示。基本表定義DatabasePrinciplesandApplications列名數據類型長度是否為空說明isbnchar11否主碼namevarchar50否authorvarchar40否pulisherchar30是pricemoney是categorychar10是利用Transact-SQL語句創建表USELibraryCREATETABLEbook( isbnCHAR(11), /*圖書ISBN號*/ nameCHAR(50), /*圖書名稱*/ authorVARCHAR(40), /*作者*/ publisherVARCHAR(30), /*出版社*/ priceNU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵路旅客運輸服務鐵路客運服務工作理念課件
- 鐵道機車專業教學湖南鐵道左繼紅課件
- 臨夏餐廳仿真樹施工方案
- 《GB 15146.5-1994反應堆外易裂變材料的核臨界安全 钚-天然鈾混合物的核臨界控制準則和次臨界限值》(2025版)深度解析
- 中國交通運輸課件
- 《GB 9683-1988復合食品包裝袋衛生標準》(2025版)深度解析
- 生態修復項目苗木培育合同
- 肇慶市實驗中學高三上學期第周物理高效課堂教學設計:綜測評講
- 內蒙古巴彥淖爾市重點中學2024-2025學年初三中考第一次模擬考試生物試題含解析
- 租賃合同范文
- 再生資源消防安全培訓
- 高考地理二輪復習課件專題3S技術
- 安全生產治本攻堅三年行動主要任務
- 2024年濟南城市發展集團投資開發有限公司招聘筆試參考題庫含答案解析
- 2024年贛州市章貢區文化旅游發展集團有限公司招聘筆試參考題庫附帶答案詳解
- 同等學力申碩-同等學力(政治學)筆試(2018-2023年)真題摘選含答案
- 園林植物的識別與應用-灌木園林植物的識別與應用
- 親子鑒定報告樣本
- 六年級下冊數學應用題練習100題及答案
- 我不能亂起外號課件
- 肝功能衰竭的護理指南
評論
0/150
提交評論