MySQL数据库——约束

MySQL学习——约束
1.非空约束:not null
  作用:约束的字段不能为空
  eg: drop table if exists student;
      create table vip(
          id int not null,  //即字段id不可以为NULL
         name varchar(255)
    )
    insert into vip(id,name) values(1,'chai');  //正确插入
    insert into vip(name) values('chai');  //无法正常插入数据,因为id字段设置了不能为空

2.唯一性约束: unique
  作用:unique约束的字段不能重复,但是可以为NULL;
    eg:drop table if exists student;
    create table student(
(1)=》》    id int unique,   //即字段id不能够重复
        name varchar(255),
(2)=》》    unique(id,name)  //指的是id+name的联合字段不能重复,字段id和name都是可以单独重复的
    )
    insert into vip(id,name) values(1,'chai');  //正常插入数据
    insert into vip(id,name) values(1,'chai');  //无法正常插入数据,因为id字段设置了不能重复
    insert into vip(name) values('chai');  //可以正常插入数据,因为id虽然不能重复但是可以为空
 (1)约束在后方,属于“列级约束”
 (2)约束在前方,属于“表级约束”,id+name的组合具有唯一性,但是name具有唯一性,email具有唯一性。各自唯一。

3.主键约束: primary key (简称PK)
  作用:其实primary key(PK) = unique + not null;
  主键字段:被添加主键约束的字段,被称为主键字段;
    主键值:主键字段中的每一个值都叫做主键值;(不能是null,也不能重复)
    注:(1)任何一张表都应该有主键值,主键值是每一行记录的唯一标号(身份证明),如果没有主键值,表就没有意义    (2)一张表,主键约束只能添加1个;(主键值只有一个)
    (3)不提倡联合(复合)主键;  eg:primary key(id,name)这是不提倡的;
    (4)为了确保主键的安全性,使用“auto_increment”表示自增,从1开始,以1递增;

4.外键约束:foreign key(简称FK)
  作用:外键约束用于表与表之间的联系
    eg:drop  table if  exists class; 
    drop table if exists student;
    creat table class(
        cla_no int primary key,
        cla_name varchar(255)
)
    creat table student(
        stu_no int primary key,
        stu_name varchar(255),
        stu_cno int
        foreign key(cno) references class(cla_no)   //表示student中的stu_cno作为外键字段,与表class中的cla_no进行外键约束,也就是stu_cno的值只能是cla_no中的数据,不能为另外的数据。
)
  注:子表中的外键引用的父表中的某个字段,被引用的这个字段不一定是主键,但至少具有unique约束(即cla_no不一定为主键,但至少为nuique约束);
           外键值可以为null(即stu_no可以为null)


5.检查约束:check(mysql不支持,oracle支持) 


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值