SQL入門經典(第5版)第三章 管理資料庫物件

2021-08-07 18:04:38 字數 3529 閱讀 1829

本章的重點包括:

資料庫物件簡介

規劃簡介

表簡介

討論表的實質與屬性

建立和操作表的範例

討論表儲存選項

引用完整性和資料一致性的概念

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...