主键约束
主键约束:唯一约束+非空约束,该字段上的数据不能重复且不能为null
注意:一张表必须有且只有一个主键
添加主键约束 -- 方式一(推荐)
CREATE TABLE user(username VARCHAR(32) PRIMARY KEY,password VARCHAR(32),nick_name VARCHAR(32),name VARCHAR(32),age INT(3),salary DECIMAL(20,2) )
添加主键约束 -- 方式二
CREATE TABLE user(username VARCHAR(32),password VARCHAR(32),nick_name VARCHAR(32),name VARCHAR(32),age INT(3),salary DECIMAL(20,2),phone VARCHAR(32) ) alter table user add primary key(username);
添加主键约束 -- 方式三
CREATE TABLE user(username VARCHAR(32),password VARCHAR(32),nick_name VARCHAR(32),name VARCHAR(32),age INT(3),salary DECIMAL(20,2),phone VARCHAR(32),primary key(username,password) )
删除主键约束
alter table user drop primary key;
唯一约束
理解:该字段上的数据不能重复,但可以为null
创建唯一约束
alter table user add unique(phone);
删除唯一约束
alter table user drop index phone;
非空约束
理解:该字段上的数据不能为null,但可以重复
添加非空约束
alter table user modify password varchar(32) not null;
删除非空约束
alter table user modify password varchar(32) null;
需求:设置password字段为非空字段,设置默认值为'000000'
alter table user modify password varchar(32) not null default '000000';
外键约束
理解:验证两个字段的参照完整性
创建外键约束
alter table user add foreign key(nationality_id) references nationality(id);
删除外键约束
注意:外键名使用SHOW CREATE TABLE user;查看
alter table user drop foreign key user_ibfk_1;
注意:项目中不用外键
原因:使用外键约束效率会降低,因为添加数据、修改数据会去外键指向的表中查询
外键的优点:不会有脏数据的出现
外键的缺点:添加数据、修改数据会去外键指向的表中查询
缺点的解决方案:客户端选项就不会出现未有的数据