MySQL(一) 基礎概念

2021-10-23 20:44:21 字數 2265 閱讀 8456

關係型資料庫是建立在關係模型上的,關係模型本質是若干個儲存資料的二維表,表的每一行稱為記錄(record),記錄是乙個邏輯意義上的資料。表的每一列稱為字段(column),同一表的每一行記錄都有相同的若干字段。字段定義了資料型別,以及是否被允許為null(null表示字段資料不存在,乙個整型字段如果為null不表示它的值為0,同樣的,乙個字串型字段為null也不表示它的值為空串'')。通常情況下,欄位應避免為null,可以簡化查詢條件,加快查詢資料。

關聯式資料庫中的表與表之間需要建立「一對一」,「一對多」和「多對多」的關係,這樣才能按照引用程式的邏輯來組織和儲存資料。

對於關係表,有乙個很重要的約束,就是任意兩條記錄不能重複。必須能通過某個字段唯一區分出不同的記錄,這個欄位被稱為主鍵。

對主鍵的要求,最關鍵的一點是:記錄一旦插入到表中,主鍵最好不要再修改,因為主鍵是用來唯一定位記錄的,修改了主鍵,會造成一系列的影響。

作為主鍵最好是完全業務無關的字段,我們一般把這個字段命名為id。常見的可作為id欄位的型別有:

自增整數型別:資料庫會在插入資料時自動為每一條記錄分配乙個自增整數,這樣我們就完全不用擔心主鍵重複,也不用自己預先生成主鍵;

全域性唯一guid型別:使用一種全域性唯一的字串作為主鍵

關聯式資料庫實際上允許多個字段唯一標識記錄,即兩個或更多的字段都設定為主鍵,這種主鍵被稱為聯合主鍵。對於聯合主鍵,允許有一列重複,只要不是所有主鍵都重複即可。沒有必要的情況下,不推薦使用聯合主鍵給關係表帶來複雜度的上公升。

students表中,通過class_id的字段,可以把資料與另一張表關聯起來,這種列稱為外來鍵

外來鍵並不是通過列名實現的,而是通過定義外來鍵約束實現的:

alter table students

add constraint fk_class_id

foreign key (class_id)

references classes (id);

其中,外來鍵約束的名稱fk_class_id可以任意,foreign key (class_id)指定了class_id作為外來鍵,references classes (id)指定了這個外來鍵將關聯到classes表的id列(即classes表的主鍵)。

通過定義外來鍵約束,關聯式資料庫可以保證無法插入無效的資料。即如果classes表不存在id=99的記錄,students表就無法插入class_id=99的記錄。

由於外來鍵約束會降低資料庫的效能,大部分網際網路應用程式為了追求速度,並不設定外來鍵約束,而是僅靠應用程式自身來保證邏輯的正確性。這種情況下,class_id僅僅是乙個普通的列,只是它起到了外來鍵的作用而已。

要刪除乙個外來鍵約束,也是通過alter table實現的:

alter table students

drop foreign key fk_class_id;

注意:刪除外來鍵約束並沒有刪除外來鍵這一列。刪除列是通過drop column ...實現的。

索引是關聯式資料庫中對某一列或多個列的值進行預排序的資料結構。通過使用索引,可以讓資料庫系統不必掃瞄整個表,而是直接定位到符合條件的記錄,這樣就大大加快了查詢速度。

索引的效率取決於索引列的值是否雜湊,即該列的值如果越互不相同,那麼索引的效率越高。一張表可以建立多個索引。索引的優點是提高了查詢效率,缺點是在插入、更新和刪除記錄時,需要同時修改索引,因此索引越多,查詢更新刪除記錄的速度就越慢。關係型資料庫會自動對主鍵建立索引,主鍵索引的效率是最高的,因為主鍵保證絕對唯一。

如何保證某一列具有唯一性:

通過unique關鍵字新增唯一索引:

alter table students

add unique index uni_name (name);

2.只針對這一列新增乙個唯一約束而不建立唯一索引:

alter table students

add constraint uni_name unique (name);

mysql(一) 基礎概念

mysql 為關係型資料庫 relational database management system 這種所謂的 關係型 可以理解為 的概念,乙個關係型資料庫由乙個或數個 組成,如圖所示的乙個 2.在安裝資料夾下找到 my small.ini 配置檔案,將其重新命名為 my.ini 開啟進行編輯,...

MySQL常用基礎概念(一)

1.1mysql邏輯框架 mysql伺服器邏輯框架大概分為三層 最上層的服務是 連線 線層處理層 用於直接接受客戶端的請求,這一層並不是mysql所獨有的,大多數給予網路的客戶端 伺服器的工具或者服務都有類似的架構 第二層架構 包含 解析 分析 優化 快取 以及所有內建函式 例如 日期 時間 數學和...

mysql基礎概念英文 MySQL基本概念

mysql 資料庫 mysql可分為三個層次 檔案層次,服務層次,介面 常用的資料型別 int整數 float double decimal 小數 要在十進位欄裡設定小數點後最大顯示位數 varchar char 字串 bit bool型 只有0,1兩個顯示值 datetime 日期時間 建表的一般...