MySQL约束之最详细讲解

SQL 约束


  • 约束是用来限制表的数据,相当于规则的意思,就比如我违反了规则,他就会阻止我进行操作导致报错.
  • 在建表的可以创建约束,在创建表之后也可以

常见的约束有六种:

  • not null:指某列的值不能为空
  • unique:指表中的某列的值是唯一的
  • check:指表中的某一列值要符合指定的条件
  • default:指没有在某列插入数据时就填充已设定的指值
  • primary key(主键):主键的值不可重复,也不可为空,表示唯一标识,一个表不能有多个主键,但可以创建复合主键
  • foreign key(外键):建立不问表之间的关联关系,一个表的外键匹配另一个表的主键的值

实例:

假设有emp表,有a列和b列

NOT NULL:

创建NOT NULL约束
  • 在创建表时设置
    CREATE TABLE emp(
    a  int not NULL,
    b  int not NULL
);
  • 创建表之后设置
alter table emp modify a int not null;
删除NOT NULL约束
  • 可以通过修改字段的属性
alter table emp modify a int(20);
  • 通过把字段属性的非空约束改为null
alter table emp modify a int null;
  • 通过查看索引来删除对应的索引
1.(查看索引)show index from emp;
2.(删除对应的索引)alter table emp drop index a;

UNIQUE:

创建UNIQUE约束
  • 在创建表时
    CREATE TABLE emp (
    a  int not NULL,
    b  int not NULL,
    unique (a)
);
  • 在创建表之后
alter table emp add unique (a,b);
  • 多个列unique的定义,命名unique约束名
alter table emp add constraint in_dex UNIQUE (a,b)(删除唯一索引)
删除UNIQUE约束
alter table table_name drop index index_name(删除创建唯一约束)
alter table table_name drop constraint index_neme(删除唯一索引)

CHECK:(CHECK 约束用于限制列中的值的范围)

创建CHECK约束
  • 在创建表时
CREATE TABLE emp(
    a int NOT NULL,
    b varchar(255) NOT NULL,
    CHECK (a>0)     #——————对应的这个列的值必须大于0
)
  • 在创建表之后
alter table emp add check (a>0);

命名 CHECK 约束,并定义多个列的 CHECK 约束

alter table add constraint che_ck CHECK (a>0 AND b>10);
删除CHECK约束
alter table emp drop check a;
alter table emp drop constraint che_ck;(删除创建的约束名)

DEFAULT:

注意:该约束用于向列中插入默认值
如果没有规定其他的值,那么会将默认值添加到所有的新记录

创建DEFAULT约束
  • 在创建表时
CREATE TABLE emp(
    a int NOT NULL,
    b varchar(255) DEFAULT 'Sandnes'    #这里的默认值要看该列的类型是什么,我定义的类型是字符串,所以要在默认值后就要加上单引号
)
注:default后面也可以跟一些函数,就比如日期类型的函数
  • 在创建表之后
alter table emp alter a set default 'result'
删除CHECK约束
alter table emp alter a drop default

PRIMARY KEY:

主键一个表不能有多个,也不能有包含null的值

创建PRIMARY KEY约束
  • 在创建表时
CREATE TABLE emp(
    a int NOT NULL,
    b varchar(255) NOT NULL,
    PRIMARY KEY (a)
)

需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束

CREATE TABLE emp(
    a int NOT NULL,
    b varchar(255) NOT NULL,
    constraint pk_a_b primary key (a,b)
);
  • 在创建表之后
alter table emp add primary key (a);
删除PRIMARY KEY约束
alter table emp drop primary key
alter table emp drop constraint pk_a_b;(删除定义的多个主键约束)

FOREIGN KEY:

这里该大家说下抱歉,我是写到最后才发现我有好长时间没写这个外键约束了,有些还记得,我在写这个的时候不知道怎么去给大家表达,非常抱歉哈。

这里我推荐一个讲的好的老师

外键约束详细讲解视频


完结
大家有看我的文章有啥出错或者有问题的欢迎指出 哈哈哈哈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值