MySQL中的約束

2021-10-21 21:31:44 字數 1547 閱讀 6991

1)約束(constraint)

1.1、什麼是約束?

在建立表的時候,可以給表的字段新增相應的約束,新增約束的目的是為了保證表中資料的合法性、有效性、完整性

1.2、常見的約束有哪些?

非空約束(not null):約束的字段不能為null(只有列級約束)

唯一約束(unique):約束的字段不能重複,可以為null(有列級、表級約束)

主鍵約束(primary key):約束的字段既不能為null,也不能重複(簡稱pk)(同上)

外來鍵約束(foreign key):。。。(簡稱fk) (同上)

檢查約束(check):!!oracle資料庫有check約束,但mysql目前不支援該約束

1.3、主鍵約束的一些特性

主鍵的作用

-表的設計三正規化中有要求,第一正規化要求任何一張表都應該有主鍵

-作用:主鍵值是這一行記錄在這張表當中的唯一標識。(和身份證號碼一樣)

主鍵分類

根據主鍵欄位的字段數量劃分:

單一主鍵(常用)

復合主鍵(多個字段聯合起來新增成乙個主鍵約束,不推薦

根據主鍵性質劃分

自然主鍵:主鍵值最好就是乙個業務沒有任何關係的自然數。(推薦)

業務主鍵:主鍵值和系統的業務掛鉤(不推薦)。  因為以後的業務一旦發生改變,主鍵值可能也需要發生變化,但可能因為主鍵值重複而導致無法改變

一張表的主鍵約束只能有乙個

mysql提供主鍵值自增

格式:id  int  primary key  auto_increment,

id欄位自動維護乙個自增的數字,從1開始

1.4外來鍵約束的一些特性

外鍵值可以為null

外來鍵字段引用其他表的某個欄位的時候,被引用的字段至少有unique約束(防止該欄位出現重複值)

為什麼使用外來鍵約束?

如果只使用一張表來儲存所有的資料,會出現冗雜。因此這些資料分為多張表來儲存。

表順序要求:

刪測資料時,先刪除子表(外來鍵約束),再刪除父表

新增資料時,先新增父表,在新增子表

建立表時,先建立父表,再建立子表

刪除表時,先刪除子表,在刪除父表

eg:

create

table t_class(

cno int

, cname varchar

(255),

primary

key(cno)

//表級約束);

create

table t_student(

sno int

primary

key,

//行級約束

sname varchar

(255),

classno int

,foreign

key(classno)

references t_class(cno)

//新增外來鍵

);

mysql中的約束條件 MySQL中的約束條件

主鍵約束 primary key 1.每個表中只能有乙個主鍵 2.主鍵值必須是非空不重複 3.可以設定單字段主鍵,也可以設定多欄位聯合主鍵 聯合主鍵中多個欄位的取值完全相同時,才違反主鍵約束 新增單字段主鍵約束 create table primary key,新增多欄位聯合主鍵約束 create ...

mysql中的約束條件 MySQL中的約束條件

主鍵約束 primary key 1.每個表中只能有乙個主鍵 2.主鍵值必須是非空不重複 3.可以設定單字段主鍵,也可以設定多欄位聯合主鍵 聯合主鍵中多個欄位的取值完全相同時,才違反主鍵約束 新增單字段主鍵約束 create table primary key,新增多欄位聯合主鍵約束 create ...

mysql密碼約束 mysql中的約束型別

約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性 唯一性。mysql中,常用的幾種約束 primary key 主鍵 主鍵約束相當於 唯一約束 非空約束 的組合,主鍵約束列不允許重複,也不允許出現空值。每個表最多隻允許乙個主鍵,建立主鍵約束可以在列級別建立,也可以在表級別建立...