mysql中的约束

mysql中的约束

主键约束 primary key

1.单个主键

关键字 primary key,
他能够唯一确定一张表中的一条记录,我们通过给某个字段添加约束,就可以使得该字段<不重复>且不为空。

2.联合主键

关键字 primary key(id,name)
一个表中有多个主键叫做联合主键。
联合主键加起来不重复就可以(不会报错)但是联合主键一个都不能为null。
如何创建主键约束

 create table user表名称(
     id int primary key,
     name varchar(20)
 )
//  添加一条数据
 insert into user values(1,"张三");
// 会出错   该字段<不重复>且不为空
insert into user values(1,"张三");
insert into user values(null,"张三");

自增约束 auto_increment

如果我们创建表的时候忘记创建表单约束的时候
我们可以通过以下两种方法增加主键

1.alter table 表单名 add primary key(id) 修改表结构
2.alter table 表单名 modify id int primary key 修改字段添加约束

删除:

alter table 表单名 drop primary key/(id)
create table user3表名称(
    // id如果不输入,可以自动增长
     id int primary key auto_increment;
     name varchar(20)
 )

外键约束(mul指有想相关的键)

涉及到两个表:
主表(父表),副表(子表)

---- 班级表

create table classes(
    id int primary key,
    name varchar(20)
)

---- 学生表

create table student(
    id int primary key,
    name varchar(20),
    class_id int,
    // class_id里面的值比喻来自classes班级表的id字段 
    foreign key(class_id) references classes(id)
)

结论:

1.主表classes 中没有的数据值,在副表student中是不可以使用的。(会报错)
2.主表classes 中的记录被副表student引用,是不可以被删除的

唯一约束(uni)

约束修饰字段的值不可以重复
添加唯一约束:alter
第一种

create table user4(
    id int,
    name varchar(20)
)
 alter table user4 add unique(name);

第二种(可以多些,多个显示mul)

create table user4(
    id int,
    name varchar(20),
    unique(name)
)

第三种

create table user4(
    id int,
    name varchar(20)  unique
)

第四种 modeify的方法添加:

 alter table user4 modeify name varchar(20) unique;

删除唯一约束

 alter table user4 drop index name(谁是唯一约束就填写谁);

**

总结: 添加 1. 建表的时候添加(2种)
2. 建表之后添加(2种) alter…add…/alter…modeify…
3. 删除: alter…drop…

**

非空约束 (yes/no)

修饰的字段不能为空 null

create table user5(
    id int,
    name varchar(20)  not null
);

默认约束

当我们插入字段值得时候,在没有传值的情况下,就会使用默认值

create table user5(
    id int,
    name varchar(20);
    // 年龄的默认值为10
    age int default 10
);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值