1. 程式人生 > >資料庫--表的約束--空屬性,預設值,列描述,主鍵,唯一鍵,自增長,外來鍵等等

資料庫--表的約束--空屬性,預設值,列描述,主鍵,唯一鍵,自增長,外來鍵等等

表的約束

  • 表的約束很多,這裡主要介紹如下幾個: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。

空屬性及非空屬性

  • null(預設的)和not null(不為空)
  • 資料庫預設欄位基本都是空,但在實際開發中,儘可能保證欄位不為空
    在這裡插入圖片描述
  • 插入資料時,沒有給room插入,所以出現錯誤

在這裡插入圖片描述

預設值

  • 某一種資料會經常性的出現某個具體的值,可以在一開始就指定好,在需要真實資料的時候,使用者可以選擇性的使用預設值
    在這裡插入圖片描述
  • 預設值生效
    在這裡插入圖片描述

列描述

  • :comment,沒有實際含義,專門用來描述欄位,會根據表建立語句儲存,用來給程式設計師進行了解。
    在這裡插入圖片描述
  • 通過show命令可以看到
    在這裡插入圖片描述

zerofill

  • zerofill屬性的作用,如果寬度小於數字型別後面設定的寬度自動填充0
  • 要注意的是,這只是最後顯示的結果,在MySQL中實際儲存的還是插入的數
    在這裡插入圖片描述
    在這裡插入圖片描述

主鍵

  • 主鍵:primary key用來唯一的約束該欄位裡面的資料,不能重複,不能為空,一張表中最多隻能有一個主鍵;主鍵所在的列通常是整數型別
  • 建立表的時候直接在欄位上指定主鍵
    在這裡插入圖片描述
  • 表建立好之後,可以再次追加主鍵
alter table  表名  add primary key(欄位列表)
  • 主鍵約束:主鍵對應的欄位中不能重複,一旦重複,操作失敗
    在這裡插入圖片描述
  • 刪除主鍵
alter table 表名  drop primary key;

在這裡插入圖片描述

自增長

  • auto_increment:當對應的欄位,不給值,會自動的被系統觸發,系統會從當前欄位中已經有的最大值+1操作,得到一個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵。
  • 自增長的特點:
  • 1.任何一個欄位要做自增長,前提是本身是一個索引(key一欄有值)
  • 2.自增長欄位必須是整數
  • 3.一張表最多隻能有一個自增長
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 在插入後獲取上次插入的AUTO_INCREMENT 的值(批量插入獲取的是第一個值)
    在這裡插入圖片描述

索引

  • 在關係資料庫中,索引是一種單獨的、物理的對資料庫表中一列或多列的值進行排序的一種儲存結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容
  • 索引提供指向儲存在表的指定列中的資料值的指標,然後根據您指定的排序順序對這些指標排序。資料庫使用索引以找到特定值,然後順指標找到包含該值的行。這樣可以使對應於表的SQL語句執行得更快,可快速訪問資料庫表中的特定資訊

唯一鍵

  • 唯一鍵的本質和主鍵差不多,唯一約束不能重複,唯一鍵允許為空,而且可以多個為空,空欄位不做唯一性比較
    在這裡插入圖片描述

外來鍵

  • 外來鍵用於定義主表從表之間的關係:外來鍵約束主要定義在從表上主表則必須是有主鍵約束或unique約束
  • 當定義外來鍵後,要求外來鍵列資料必須在主表的主鍵列存在或為null**;
foreign key  (欄位名) references 主表(列)
  • 先建立主表
    在這裡插入圖片描述
  • 再建立從表
    在這裡插入圖片描述
  • 正常插入資料
    在這裡插入圖片描述
  • 插入一個03班學生,因為班級不存在,所以插入失敗
    在這裡插入圖片描述