約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性、唯一性。
mysql中,常用的幾種約束:
約束型別:主鍵外來鍵唯一非空自增預設值
關鍵字:
primary key
foreign key
unique
not null
auto_increment
default
1、主鍵約束 primary key
主鍵約束相當於 唯一約束 + 非空約束 的組合,主鍵約束列不允許重複,也不允許出現空值。
每個表最多隻允許乙個主鍵,建立主鍵約束可以在列級別建立,也可以在表級別建立。
當建立主鍵的約束時,系統缺省會在所在的列和列組合上建立對應的唯一索引。
--基本模式
create table temp(
idint primary key,
namevarchar(20)
);--組合模式
create table temp(
idint,
namevarchar(20),
pwdvarchar(20),primary key(id, name)
);--刪除主鍵約束
alter table temp drop primary key;--新增主鍵約束
alter table temp add primary key(id,name);--修改主鍵約束
alter table temp modify id int primary key;
2、外來鍵約束 foreign key
外來鍵約束是保證乙個或兩個表之間的參照完整性,外來鍵是構建於乙個表的兩個字段或是兩個表的兩個字段之間的參照關係
--基本模式--主表
create table temp(
idint primary key,
namevarchar(20)
);--副表
create tabletemp2(
idint,
namevarchar(20),
classes_idint,foreign key(id) references temp(id)
);--多列外來鍵組合,必須用表級別約束語法--主表
create tableclasses(
idint,
namevarchar(20),number int,primary key(name,number)
);--副表
create tablestudent(
idint auto_increment primary key,
namevarchar(20),
classes_namevarchar(20),
classes_numberint,/*表級別聯合外來鍵*/
foreign key(classes_name, classes_number) references classes(name, number)
);--刪除外來鍵約束
alter table student drop foreign keystudent_id;--增加外來鍵約束
alter table student add foreign key(classes_name, classes_number) references classes(name, number);
3、 唯一約束unique
唯一約束是指定table的列或列組合不能重複,保證資料的唯一性。
唯一約束不允許出現重複的值,但是可以為多個null。
同乙個表可以有多個唯一約束,多個列組合的約束。
在建立唯一約束時,如果不給唯一約束名稱,就預設和列名相同。
唯一約束不僅可以在乙個表內建立,而且可以同時多表建立組合唯一約束。
--建立表時設定,表示使用者名稱、密碼不能重複
create table temp(
idint not null,
namevarchar(20),
passwordvarchar(10),unique(name,password)
);--新增唯一約束
alter table temp add unique(name, password);--修改唯一約束
alter table temp modify name varchar(25) unique;--刪除約束
alter table temp drop index name;
4、非空約束 not null 與 預設值 default
非空約束用於確保當前列的值不為空值,非空約束只能出現在表物件的列上。
null型別特徵:
所有的型別的值都可以是null,包括int、float 等資料型別
--建立table表,id 為非空約束,name 為非空約束 且預設值為abc
create table temp(
idint not null,
namevarchar(255) not null default 'abc',
***char null);--增加非空約束
alter table tempmodify ***varchar(2) not null;--取消非空約束
alter table temp modify *** varchar(2) null;--取消非空約束,增加預設值
alter table temp modify *** varchar(2) default 'abc' null;
mysql怎麼約束 mysql 約束
4 約束 1 對乙個列新增的約束叫列級約束。對兩個或兩個以上的列新增的約束叫做表級約束。2 表級約束只能在字段後面新增,列級約束既可以新增在字段後面,也可以在最後新增。3 非空 預設只存在列級約束。主鍵 唯 一 外來鍵都既有表級約束又有列級約束。4 約束有 primary key 主鍵 unique...
mysql怎麼約束 MySQL 約束詳解
mysql 約束詳解 mysql 中的約束是用來保證資料的完整性的機制。資料完整性一般有以下三種形式 實體完整性 保證表中有乙個主鍵。域完整性 保證資料每列的值滿足特定條件。引用完整性 保證兩張表之間的引用關係。以上三種形式的完整性在 mysql 中都有相應約束進行保證。使用主鍵和唯一鍵約束可以保證...
mysql 延遲約束 mysql資料約束
1,預設值 create table student id int,name varchar 20 address varchar 20 default 山東淄博 預設值 drop table student 當欄位沒有插入值的時候,mysql自動給該字段分配預設值 insert into stud...