本章的重點包括:
資料庫物件簡介
規劃簡介
表簡介
討論表的實質與屬性
建立和操作表的範例
討論表儲存選項
引用完整性和資料一致性的概念
3.1 什麼是資料庫物件
資料庫物件是資料庫裡定義的、用於儲存或引用資料的物件,比如表、檢視、簇、序列、索引和異名。
3.2 什麼是規劃
規劃是與資料庫某個使用者名稱相關聯的資料庫物件集合。相應的使用者名稱被稱為規劃所有人,或是關聯物件組的所有人。
3.3 表:資料的主要儲存方式
表是關係型資料庫裡面最主要的資料儲存物件,其最簡單形式是由行和列組成,分別都包含著資料。
3.3.1 列
欄位在關係型資料庫也被稱為列,它是表的組成部分,被設定為特定的資料型別。
列也可以指定為null或not null,當設定為not null時,表示其中必須包含資料;設定為null時,就表示可以不包含資料。
3.3.2 行
行是資料庫表裡的一條記錄。
3.3.3 create table語句
sql裡的create table語句用於建立表。
各個列定義之間以逗號分隔,全部列定義都在一對圓括號裡面(左括號在第一列之前,右括號在最後一列之後)。
3.3.4 命名規範
在為物件選擇名稱時,特別是表和列的名稱,應該讓名稱反應出所儲存的資料。
3.3.5 alter table命令
在表被建立之後,我們可以用alter table命令對其進行修改。可以新增修改、刪除列、修改列定義、新增和去除約束,在某些實現中還可以修改storage值。
一、修改表的元素
列的屬性是其所包含資料的規則和行為 。利用alter table命令可以修改列的屬性:
列的資料型別;
列的長度、有效位或標度;
列值是否為空。
二、新增列
如果表已經包含資料,這裡新增的列就不能定義為not null,這是一條基本規則。
因此強行向表新增一列的方法如下:
1. 新增一列,把它定義為null(這一行不一定要包含資料);
2. 給這個新列在每條記錄都插入資料;
3. 把列的定義修改為null。
三、新增自動增加的列
mysql提供了serial方法為表生成真正的唯一值。
microsoft sql server中可以使用identity型別
oracle沒有提供直接的方法來建立自動增加的列。但卻可以使用sequence物件和乙個觸發器來實現類似的效果。
四、修改列
通用規則:
列的長度可以增加到特定資料型別所允許的最大長度;
如果想縮短某列的長度,則必須要求這一列在表裡所有資料的長度都小於或等於新長度;
數值資料的位數可以增加;
如果要縮短數值資料的位數,則必須要求這一列在表裡所有數值的位數小於或等於新指定的位數;
數值裡的小數字數可以增加或減少;
列的資料型別一般是可以改變的。
3.3.6 從現有表新建另乙個表
利用create table語句與select語句的組合可以複製現有的表。
mysql和oracle都支援使用create table as select方法,在乙個表的基礎上建立另乙個表。但是microsoft sql server卻不一樣,它使用select…into方法來實現相同的效果。
select*會選擇指定表裡全部欄位的資料。「*」表示表裡的一行完整資料,也就是一條完整記錄。
3.3.7 刪除表
如果使用了restrict選項,並且表被檢視或約束所引用,drop語句就會返回乙個錯誤。當使用了cascade選項時,刪除操作會成功執行,而且全部引用檢視和約束都被刪除。
3.4 完整性約束
完整性約束用於確定關係型資料庫裡面資料的準確性和一致性。
3.4.1 主鍵約束
主鍵是表裡乙個或多個用於實現記錄唯一性的字段。
primary key
3.4.2 唯一性約束
唯一性約束要求表裡某個欄位的值在每條記錄裡都是唯一的,這一點與主鍵類似。這兩個都具有唯一性的字段之間沒有太多的區別,只是主鍵讓表具有了一定的秩序,並且可以用於結合相互關聯的表。
unique
3.4.3 外來鍵約束
外來鍵是子表裡的乙個字段,引用父表裡的主鍵。外來鍵約束是確保表與表之間引用完整性的主要機制。乙個被定義為外來鍵的字段用於引用另乙個表裡的主鍵。
利用alter table命令可以向表裡新增外來鍵。
3.4.4 not null約束
在沒有指定not null時,字段預設為null,也就是可以是null值。
3.4.5 檢查約束
檢查約束用於檢查輸入到特定欄位的資料的有效性,可以提供後端的資料庫編輯,雖然編輯通常是在前端程式裡完成的。
3.4.6 去除約束
利用alter table命令的drop constraint選項可以去除已經定義的約束。
在mysql裡可以使用下面這樣的命令來去除主鍵約束:
alter table employees drop primary key;
3.5 小結
本章概述了資料庫物件的基本知識,主要介紹了表。表是關係型資料庫裡最簡單的資料儲存方式,它包含成組的邏輯資訊,比如雇員、顧客或產品資訊。表由各種字段組成,每個欄位都有自己的屬性,主要包括資料型別和約束,比如not null、主鍵、外來鍵和唯一值。
本章介紹了create table命令和選項,比如儲存引數。還介紹了如何使用alter table命令調整已有表的結構。雖然管理資料庫表的過程並不是sql裡最基本的過程,但如果首先學習了表的結構與本質,我們就更容易地掌握通過資料操作或資料庫查詢來訪問表的概念。下一章將介紹sql對其他物件的管理,比如表的索引和檢視。
演算法競賽入門經典 第2版 課後習題 第三章
c 語言版實現 2 字串的總長度 3 複製字串 str2 到字串 str1 4 比較字串 str2 到字串 str1 strcmp s1,s2 5 查詢字串 str 中字元 ch 的第一次出現的位置 6 查詢向字串 str1 中字串 str2 的第一次出現的位置 使用cin輸入字串方式 1 接受乙個...
演算法競賽入門經典 第三章
最長回文子串 當字串的長度比較小的時候 attention 最好把陣列開在外面,如果開在main外面並且陣列太大,就會異常退出的。最長回文子串 include include include define maxn 5000 10 char buf maxn s maxn int main prin...
演算法入門經典第三章(上)
逆序輸出 讀入一些整數然後逆序輸出,將你所輸入的每個數字存入到陣列a maxn 中,然後利用for迴圈逆序輸出,輸入完了以後別忘了先按回車再按crtl z,強制輸出,要不然會無限輸入的2333.這段程式執行是這樣的 給你個例子 如果輸入12 33 55 89 則輸出 89 55 33 12.主要是a...