[MySQL笔记]06.数据库表的约束和表与表直接的关系


数据库表的约束

主键约束

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值