一、約束定義:對相應(yīng)數(shù)據(jù)表中的列設(shè)定約束以規(guī)范存儲的數(shù)據(jù)。
1、主鍵約束:要求該列數(shù)據(jù)唯一且不為空,可以是單字段主鍵、也可以是多字段聯(lián)合主鍵。
create table t3( uid int primary key, name varchar(10), sex enum('f','m','un')) engine=myisam character set utf8;
mysql> insert into t3 values(1,'sdkf','f'),(2,'bob','m');
ERROR 1062 (23000): Duplicate entry '1' for key ‘PRIMARY’
主鍵創(chuàng)建方法2:create table t4( umb int,name varchar(10),primary key(umb));
2、外健約束(可以理解為主鍵的子集)
外健搭配主鍵使用,若不為空值,但每一個外健值必須等于另一個表中主鍵的某個值;
外健的數(shù)據(jù)類型必須必跟主鍵一樣;
create table t2(
fid int(100),phone int(16),location varchar(50),
constraint fk_t1 foreign key(fid)
references t1(uid)
);
插入數(shù)據(jù)insert into t3 (phone,location) values (12344,'shanghai xxx');
3、非空約束:即表示創(chuàng)建的該列不能有空值
在創(chuàng)建的時候加入not null
create table t4 (id int not null,name varchar(10) not null);
4、唯一性約束:用于約束對應(yīng)列中的值不能重復(fù),可以有空值,但只能出現(xiàn)一個空值
unique
5、默認約束:用于約束對應(yīng)列中的值的默認值,除非默認為空值,否則不可插入空值。
default ‘un’
二、自增長:用于系統(tǒng)自動生成字段的主鍵值
auto_increment
create table t4(id int primary key auto_increment,name varchar(10));
insert into t4 (name) values('bob');