文章目录
数据库表的约束
主键约束
1. 在已有的表中添加主键约束
alter table user add primary key(id);
2. 删除主键约束
alter table user drop primary key;
注意:在主键添加了自增的情况下,不能用drop删除主键约束
3. 在建表时添加主键约束
create table user(
id int(6) primary key AUTO_INCREMENT,
username varchar(20),
password varchar(20)
)
唯一约束
1. 在已有的表中添加唯一约束
-- 唯一性约束 unique自动在这一列生产索引 - index
alter table user add unique(username);
-- 多个字段添加唯一性约束
alter table user add unique(username,password);
注意:在已有的表添加唯一性约束,需要让改字段中的数据没有重复值.
2. 删除唯一约束
-- 先查询表中存在的唯一约束
show index from user;
-- 再删除对应的索引值
alter table user drop index username;
3. 在建表时添加唯一约束
create table user2(
id int(6),
username varchar(20) unique,
password varchar(20)
)
非空约束
1. 在已有的表中添加非空约束
alter table user modify password varchar(20) not null ;
2. 删除非空约束
alter table user modify password varchar(20);
3. 在建表时添加非空约束,同时添加默认值
-- 非空约束可以和唯一性约束连用
create table user2(
id int(6),
username varchar(20) unique not null default '',
password varchar(20) unique not null default '1234'
)
外键约束
外键约束是多个表之间的关系
1.1个对n个的关系
create table 'order'(
id int(6) primary key auto_increment,
name varchar(20),
detail varchar(20),
userId int(6));
-- 添加外键约束 constraint(约束)
alter table 'order'
add constraint user_order_fk
foreign key (userId) references user(id);
2.n个对n个的关系(选课)
create table students(
sid int(6) primary key auto_increment,
sname varchar(20)
);
create table course(
cid int(6) primary key auto_increment,
cname varchar(20)
);
create table map(
msid int(6),
mcid int(6));
alter table map
add constraint mapkey
foreign key (msid) references students(sid);
alter table map
add constraint mapkey
foreign key (mcid) references course(cid);
3.清除外键约束
-- 删除 employee 表的 emp_depid_fk 外键
alter table employee drop foreign key emp_depid_fk;
-- 在 employee 表情存在的情况下添加外键
alter table employee add constraint emp_depid_fk
foreign key (dep_id) references department(id);