Mysql常見約束及三大正規化

2021-10-06 04:53:48 字數 1382 閱讀 8929

一種限制,用於限制表中的資料,為了保證表中資料的準確性和可靠性

1.not null :

非空,用於保證該字段的值不能為空。例如學生表的學生姓名及學號等等。

2.default:

預設值,用於保證該字段有預設值。例如學生表的學生性別

3.primary key:

主鍵,用於保證該字段的值具有唯一性並且非空。例如學生表的學生學號等。

4.unique:

唯一,用於保證該字段的值具有唯一性,可以為空。例如註冊使用者的手機號,身份證號等。

5.check:檢查約束(mysql不支援),檢查欄位的值是否為指定的值。

6.foreign key:

外來鍵,用於限制兩個表的關係,用於保證該字段的值必須來自於主表的關聯列的值,在從表新增外來鍵約束,用於引用主表中某些的值。例如學生表的專業編號

1.主鍵約束(primary key)

主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵。

是不可能(或很難)更新

主鍵列上沒有任何兩行具有相同值(即重複值),不允許空(null)

主健可作外健,唯一索引不可;

2.唯一性約束(unique)唯一性約束用來限制不受主鍵約束的列上的資料的唯一性,用於作為訪問某行的可選手段,乙個表上可以放置多個唯一性約束.

只要唯一就可以更新

即表中任意兩行在 指定列上****都不允許有相同的值,允許空(null)

乙個表上可以放置多個唯一性約束如果每列(或者每個屬性)都是不可再分的最小資料單元(也稱為最小的原子單元),則滿足第一正規化.

例如:顧客表(姓名、編號、位址、……)其中"位址"列還可以細分為國家、省、市、區等。

如果乙個關係滿足第一正規化,並且除了主鍵以外的其它列,都依賴於該主鍵,則滿足第二正規化.

例如:訂單表(訂單編號、產品編號、定購日期、**、……),"訂單編號"為主鍵,"產品編號"和主鍵列沒有直接的關係,即"產品編號"列不依賴於主鍵列,應刪除該列。

如果乙個關係滿足第二正規化,並且除了主鍵以外的其它列都不依賴於主鍵列,則滿足第三正規化.

為了理解第三正規化,需要根據armstrong公里之一定義傳遞依賴。假設a、b和c是關係r的三個屬性,如果a-〉b且b-〉c,則從這些函式依賴中,可以得出a-〉c,如上所述,依賴a-〉c是傳遞依賴。

mysql三大正規化及資料約束及查詢及儲存過程

資料約束 連線查詢 多表查詢 儲存過程 引數型別 會話變數 變數只在當前連線會中有效 區域性變數 帶有輸入輸出引數的儲存過程 帶有判斷條件的儲存過程 帶有迴圈條件的儲存過程 接收表中的資料的儲存過程 觸發器create table student id int,name varchar 20 gen...

mysql三大特性 三正規化 五大約束

1.資料庫的三大特性 實體 表 屬性 表中的資料 字段 關係 表與表之間的關係 2.資料庫設計三大正規化 a 確保每列保持原子性 即資料庫表中的所有字段值是不可分解的原子值 c 確保每列都和主鍵直接相關,而不是間接相關 在乙個資料庫表中儲存的資料只能與主鍵相關 消除傳遞依賴 間接 比如在設計乙個訂單...

Mysql資料庫約束和三大正規化

show databases use db show tables select from stu 約束 主鍵約束 primary key 非空且唯一 非空約束 not null 唯一約束 unique 外來鍵約束 foreign key create table stu2 id int prima...