操作表约束
完整性是指数据的准确性和一致性,而完整性检查就是指检查数据的准确性和一致性。mysql数据库管理系统提供了一直机制来检查数据库中的数据是否满足规定的条件。以保证数据库中数据的准确性和一致性,这种机制就是约束。
mysql所支持的完整性约束
NOT NULL(NK)DEFAULT
UNIQUE KEY(UK)约束字段的值是唯一的PRIMATYKEY(PK)AUTO_INCREMENTFOREIGN KEY(FK)
不支持check约束,即可以使用check约束,但是没有效果
约束:
1、NOT NULL (NK)单列约束多列约束
在创建表的时候,指定属性为not null即可
例:
create table t_name(
column type not null
)
create table t_notnull{
id int not null,name varchar(20)
}2、DEFAULT
insert into t_notnull(name) values("dsagdfs");
会发现对应的id被置为0
alter table t_notnull modify id int;
insert into t_notnull(name) values("fdgdf");
发现对应的id为null
创建表时指定
create table t_name(
column type default
)
例:
create table t_default(
id int not null,name varchar(20) default 'test'
)3、AUTO_INCREMENT
insert into t_default(id) values(1);
insert into t_dedault(name) values('name');
create table t_name(
column type auto_increment
)
create table t_auto(
id int primay key auto_increment,name varchar(20) default 'test'
)4、UNIQUE UK
注意:使用的时候该列要指定为primary key,该列是数值列
create table t_name(
column type unique
)
create table t_name(
column typeconstraint uk_column unique(column)
)
constraint:约束
在为约束设置标示符时,推崇使用“约束缩写_字段名”的格式
create table t_unique(
id int primary key,name varchar(20) unique
)
注意:
1、auto_increment显然也能实现unique的功能,但是没有unique灵活,unique的列不必是主键列,也不一定是数字列,5、primary key
2、varchar必须指定字节数,否则会失败
单字段主键
create table t_name(
column type primary key
)
create table t_name(
column typecontraint pk_column primary key(column)
)
多字段主键
create table t_name(
column1 type ,column2 type...contraint pk_column1_column2 primarykey(column1,column2)
)6、foreign key
前五个约束都是都是单表,而外键约束牵涉到了多个表。
设置外键约束的两个表之间会有父子关系,即子表中某个字段的取值范围由父表所决定。
在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中的已经存在的父表的主键,同时外键可以为null
create tablet_name(
column1 type,column2 type,constraint fk_column1 foreign key(column1) references tablename (columname)
)
column1:外键,columnname:父表中设置主键约束的字段