數據表是關系數據庫中操作的級別對象。在關系數據庫中,通過數據表來存儲數據記錄。在數據表中會經常用到主鍵、外鍵、約束和索引。這一章將對數據表中涉及到的數據類型以及主鍵、外鍵、約束和索引等概念和使用方法做一個全面的介紹。另外還將介紹數據表的創建方法,以及如何對表中的記錄進行增加和修改操作、如何刪除數據表等內容。
1.數據庫中的表
在關系數據庫中,數據表是存儲數據的基本單元,由行和列兩部分組成的。它是根據數據庫設計階段的E-R圖轉換而來。在數據表中除了行、列、數據記錄、屬性、字段等基本概念外,還會涉及到主鍵、外鍵、索引、約束等概念。
數據記錄、行、字段、列
在關系數據庫中,數據表是存儲數據的基本單元,由行和列兩部分組成的。其中,行用來描述實體中的具體數據,在數據表中每一行中的數據被稱為一條數據記錄,也可以簡稱為記錄;字段是表中的一列,用來保存數據表中某一條記錄中的特定信息。字段在關系數據庫中也可以稱為列。
column_name1為指定數據表的列名;datatype1為指定列名的數據類型;constraint_condition1為指定列名的完整性約束。
為了保證數據的完整性,需要使用數據庫約束。約束主要包括唯一約束(UNIQUE)、主鍵約束(PRIMARY KEY)、外鍵約束(FOREIGN KEY)、檢查約束(CHECK)和非空約束(NOT NULL)。
唯一約束(UNIQUE)用來保證某一列或者一組列中沒有相同的值。如果為列定義了唯一約束,則該列中不允許出現重復的值,但是允許列中存在空值(即NULL值)。唯一約束即可以定義的表級上,也可以定義在列級上。一般在為列創建唯一約束後,數據庫會自動為該列建立一個唯一索引,其索引名與約束名是相同的。
主鍵約束(PRIMARY KEY)是用來保證使用主鍵約束的某一列或者一組列中有唯一的值,並且不能包含空值(即NULL值)。數據表中每一列只能定義一個PRIMARY KEY。一般在為列創建主鍵約束後,數據庫會自動為該列建立一個主索引,其索引名與約束名是相同的。
在創建數據表時,如果希望將多個列組合起來作為一個數據表中的主鍵,可以在PRIMARY KEY關鍵字後使用括號,將需要定義為主鍵的列放到PRIMARY KEY關鍵字後面的括號中。括號中的多個列之間需要使用逗號分割。
首先來考慮這樣一個問題,現在由於某種原因需要將一名學生在學校的全部信息刪除。這裡涉及學生信息的一共有兩個表,一個是學生信息表,一個是成績信息表。學生信息表保存的是學生的基本信息,成績信息表保存的是學生選課的課程成績信息。如果沒有定義外鍵約束,將該名學生從學生信息表中刪除時,而沒有將該名學生的選課的課程成績信息刪除,這樣就會造成兩個關聯表之間數據的不一致。
同樣的問題也可能出現在對兩個關聯表中數據的修改操作中。如果是多個表之間存在關聯關系的話,不定義外鍵約束,類似上面的情況很可能會發生。為了避免由於操作不當而引起的關聯表中數據的不一致,有必要為關聯表之間定義外鍵約束。
外鍵約束(FOERING KEY)主要是用來定義兩個表之間的關系。外鍵約束保證了表的參照完整性,確保對一個表的數據操作不會對與之關聯的表造成不利的影響。定義外鍵的語法格式如下:
(列名1) ]其後的ON UPDATE和ON DELETE分別指明了對表中的數據做修改和刪除時,主從表之間要采用的主要操作方式。