mysql約束
什麽是mysql約束?
約束是一種限制,它通過對表的行或列的數據做出限制,來確保表的數據的完整性、唯一性。
常見的額約束
|---主鍵約束:primary key
主鍵約束相當於 唯一約束 + 非空約束 的組合,主鍵約束列不允許重復,也不允許出現空值。
每個表最多只允許一個主鍵,建立主鍵約束可以在列級別創建,也可以在表級別創建。
當創建主鍵的約束時,系統默認會在所在的列和列組合上建立對應的唯一索引。
1,復合主鍵:在一個數據表中通過多個字段作為主鍵來確定一條記錄,那麽,多個字段組成的就是復合主鍵
create table student( name varchar(30) comment ‘姓名‘, age smallint comment ‘年齡‘, sex enum(‘男‘,‘女‘) comment ‘性別‘, primary key(name,age) )
2,聯合主鍵:當兩個數據表形成的是多對多的關系,那麽需要通過兩個數據表的主鍵來組成聯合主鍵,就可以確定每個數據表的其中一條記錄了
學生表:student ------------------- create table student( id mediumint auto_increment comment ‘主鍵id‘, name varchar(30) comment ‘姓名‘, age smallint comment ‘年齡‘, primary key(id) ) engine = myisam, charset = utf8, comment = ‘學生‘ 課程表:course --------------------- create table course( id mediumint auto_increment comment ‘主鍵id‘, name varchar(30) comment ‘課程名稱‘, primary key(id) ) engine = myisam, charset = utf8, comment = ‘課程‘ 學生課程表:stu_cour ---------------------------create table IF NOT EXISTS stu_cour( id mediumint auto_increment comment ‘主鍵id‘, stu_id mediumint comment ‘學生表id‘, cour_id mediumint comment ‘課程表id‘, primary key(id) )
|---外鍵約束:外鍵約束是保證一個或兩個表之間的參照完整性,外鍵是構建於一個表的兩個字段或是兩個表的兩個字段之間的參照關系
1,外鍵使用規範:
1、從表的字段必須與外鍵類型同樣(如上。分數表 stu 的類型必須和學生表 sid 的類型同樣,比方都是 int(10) 類型)
2 外鍵必須是主表的唯一鍵(如上。學生表 sid 是主鍵,而主鍵是唯一的。所以能夠作為分數表 stu 的外鍵)
3、有關聯的字段(如上,分數表之所以使用學生表的 sid 是由於兩者有關聯,分數表記錄的是學生的分數,而學生能夠用 sid 來唯 一標識)
2,
FOREIGN KEY (從表字段) REFERENCES 主表 (字段)
或
alter table 從表表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對應的表的主鍵字段名);
3,為什麽說外鍵能保持數據的一致性、完整性:在設置外鍵的情況下。你插入從表的外鍵字段的值必需要求在主表的主鍵字段能找到。 同一時候。假設你要主表的主鍵字段。必須 保證從表中沒有引用該字段值的列(也就是沒有跟這一列建立外鍵),否則就沒法刪除。
|---唯一約束:
唯一約束是指定table的列或列組合不能重復,保證數據的唯一性。
唯一約束不允許出現重復的值,但是可以為多個null。
同一個表可以有多個唯一約束,多個列組合的約束。
在創建唯一約束時,如果不給唯一約束名稱,就默認和列名相同。
唯一約束不僅可以在一個表內創建,而且可以同時多表創建組合唯一約束。
|---非空約束not null:
非空約束用於確保當前列的值不為空值,非空約束只能出現在表對象的列上。
Null類型特征:
所有的類型的值都可以是null,包括int、float 等數據類型
|---默認值 default
mysql約束