【資料庫系統原理與設計】(六)SQL資料定義、更新及資料庫程式設計
阿新 • • 發佈:2022-11-29
六. SQL資料定義、更新及資料庫程式設計
6.1 SQL資料定義語言
1. SQL資料定義語言DDL包括:
- 資料庫的定義:建立、修改和刪除 基本表的定義:建立、修改和刪除檢視的定義:建立和刪除索引的定義:建立和刪除
6.1.1 資料庫的定義
1. 資料庫的建立
-
資料庫作為一個整體存放在外存的物理檔案中
- 物理檔案(即磁碟檔案)有兩種:
- 資料檔案,存放資料庫中的物件資料
- 日誌檔案,存放用於恢復資料庫的企業冗餘資料
- 物理檔案可以是多個,可以將一個或若干個物理檔案設定為一個邏輯裝置
- 資料庫可以有多個邏輯裝置,必須在定義資料庫時進行定義
- 資料庫的物件存放在邏輯裝置上,由邏輯裝置與物理檔案進行聯絡,從而實現資料庫的邏輯模式與儲存模式的獨立
-
個數據庫建立在物理介質的一個或多個檔案上,它預先分配了將要被資料庫和事務日誌所使用的物理儲存空間
- 儲存資料的檔案叫做資料檔案(data file)
- 儲存日誌的檔案叫做日誌檔案(log file)
- 建立一個新的資料庫時,僅建立了一個空殼,必須在這個空殼中建立物件(如表、索引、約束等),才能使用這個資料庫
- 當建立了一個數據庫,與該資料庫相關的描述資訊會存入到資料字典(即資料庫系統表)
- 在建立資料庫的時候,必須定義資料庫的名字、磁碟檔案(含資料檔案、日誌檔案)的邏輯裝置名(別名)和物理檔名
2. 建立資料庫:
CREATE DATABASE <被建立資料庫名> ON --指定資料庫中的資料檔案:主資料檔案、使用者資料檔案 -- 定義主邏輯裝置的資料檔案 [PRIMARY] { <filespec> [, ... n ] } -- 定義使用者邏輯裝置組的資料檔案 [, { FILEGROUP <filegroupName> {<filespec> [, ... n ]} [, ... n ]} ] ] -- 定義資料庫日誌邏輯裝置的日誌檔案 [LOG ON { <filespec> [, ... n ] } ]
-- <filespec>描述磁碟檔案(含資料檔案和日誌檔案)<filespec> ::= 主要包含以下內容 ( [ NAME = <logicalFileName>, ] -- 邏輯檔名(即別名) FILENAME = '<osFileName>' -- 物理檔名 [, SIZE = <size> ] -- 磁碟檔案初始大小 [, MAXSIZE = { <maxSize> | UNLIMITED } ] -- 最大可擴充套件大小 [, FILEGROWTH = <growthIncrement> ] ) -- 每次擴充套件的步長
eg:建立一個複雜的資料庫TempDB
CREATE DATABASE TempDB ON -- 定義資料檔案 PRIMARY --定義主邏輯裝置的資料檔案(共一個) ( NAME = TempDev, FILENAME = 'd:\TempData\TempDev.mdf' , --資料檔案的物理檔名 SIZE = 5, FILEGROWTH = 2), FILEGROUP TempHisDev -- 定義第1個使用者邏輯裝置組1的資料檔案(共一個) ( NAME = TempHisDev, FILENAME = 'd:\TempData\TempDev.mdf' , --使用者邏輯裝置(組1)的物理檔名 SIZE = 10, FILEGROWTH = 5) FILEGROUP TempHisDev1 -- 定義第2個使用者邏輯裝置組2的資料檔案(共兩個) ( NAME = TempHisDev1, FILENAME = 'd:\TempData\TempDev1.mdf' , --使用者邏輯裝置(組2)的第1個物理檔名 SIZE = 20, FILEGROWTH = 10), ( NAME = TempHisDev2, FILENAME = 'd:\TempData\TempDev2.mdf' , --使用者邏輯裝置(組2)的第2個物理檔名 SIZE = 20, FILEGROWTH = 10) LOG ON -- 定義資料庫日誌邏輯裝置的日誌檔案(共兩個) ( NAME = 'TempLogDev1', FILENAME = 'd:\TempData\TempLogDev1.ldf' , --第1個日誌檔案的物理檔名 SIZE = 5MB, FILEGROWTH = 2MB), ( NAME = 'TempLogDev2', FILENAME = 'd:\TempData\TempLogDev2.ldf' , --第2個日誌檔案的物理檔名 SIZE = 10MB, FILEGROWTH = 5MB)
3. 修改資料庫:
(一次只能修改其中一個選項)
ALTER DATABASE <被修改的資料庫名> -- 新增 資料檔案/邏輯裝置(組)/日誌檔案 到資料庫 { ADD FILE {<filespec> [, ...n]} | ADD FILEGROUP <filegroupName> | ADD LOG FILE {<filespec> [, ... n]} -- 指定檔案新增到<filegroupName>邏輯裝置(組)中 [TO FILEGROUP <filegroupName>] -- 從資料庫系統表中刪除檔案,並物理刪除該檔案 | REMOVE FILE <logicalFileName> -- 從資料庫系統表中刪除該邏輯裝置(組),並刪除其中所有資料檔案 | REMOVE FILEGROUP <filegroupName> -- 指定要修改的 檔案/邏輯裝置(組)(包含檔名、大小、增長量、最大容量) | MODIFY FILE <filespec> | MODIFY FILEGROUP <filegroupName> <filegroupProperty> }
eg:修改TempDB資料庫:將邏輯檔名(即別名)為TempHisDev1的磁碟檔案的初始大小修改為20M
ALTER DATABASE TempDB MODIFY FILE ( NAME = TempHisDev1, SIZE = 20MB )
4. 刪除資料庫:
DROP DATABASE <被刪除的資料庫名>
6.1.2 基本表的定義
未完待續...