1. 程式人生 > 其它 >【資料庫系統原理與設計】(六)SQL資料定義、更新及資料庫程式設計

【資料庫系統原理與設計】(六)SQL資料定義、更新及資料庫程式設計

六. 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 基本表的定義

未完待續...