浅谈MySQL约束

约束是在表上强制执行的数据校验规则,比如我们在主键上添加一个非空约束,则一旦添加的主键值为空的话,就会报错,从而添加不进去。
在这里插入图片描述

(1)非空约束-not null

非空约束指某列不能为空。

create table people(
   age int not null
)  

特点:
(1)所有数据类型的值都可以是null,如int,float,char等。
(2)空字符串、0、null三者是不同的。

(2)唯一约束-unique

唯一约束用于保证指定列不出现重复值。但可以出现多个null值,因为null值和null值不一样。

//新增方式1-列级约束
create table people(
 name varchar(255) unique
);

//新增方式2-表级约束
create table people(
name varchar(255),
pass varchar(255),
 //不指定约束名字
unique(name);
 //指定约束名字people_uk
constraint  people_uk unique(pass)
);

//删除people表上的people_uk唯一约束
alter table people
drop index people_uk;

(3)主键约束-primary key

主键约束代表该列的值能够唯一标识该条记录,每一个表里最多允许有一个主键,但这个主键可以由多个数据列组合而成。主键约束相当于非空约束+唯一约束。

//新增方式1-列级约束
create table people(
 id int primary key;
);
//新增方式2-表级约束
create table people(
 id int not null,
 primary key(id);
);
//新增方式3-建立多列组合的主键约束
create table people(
  name varchar(255);
  pass varchar(255);
  primary key(name,pass)
);

//删除主键约束
alter table people
drop primary key;

主键列有一个自增长的特性,如果某个主键列的类型是整型,则可指定该列为自增长。

create table people(
 id int auto_increment primary key,
 name varchar(255)
);

(4)外键约束-foreign key

外键为其它表的主键,外键约束是将两个表建立了关联,如此便不能轻易删除主表。当想要删除主表中的记录时,需要先把从表中的外键记录删除后才能执行。

当然,有参照关系的不只是两个表中的某两个字段,也可以是某个表中的两个字段,这种情况被称为自关联。
下面显示怎么建立外键约束:

//建立主表
 create  table dept
{……};

//建立从表
create table emp
{
  ……
    //【方式一】使用references来建立外键约束
  foreign key(Dept_id) references emp (Id)
    //【方式二】可以使用constraint来指定外键约束的名字
  constraint dept_emp_fk foreign key(Dept_id) references emp (Id)
};

//删除外键约束
alter table emp
drop foreign key dept_emp_fk;

(5)检查约束-check

指定一个布尔表达式,该列的值必须满足此表达式。在mysql中指定check约束不会报错,但也不会起任何作用。

create table people(
id int auto_increment,
name varchar(255),
salary decimal,
check(salary>0)
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡夫卡的熊kfk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值