MySQL约束

约束:

什么是约束?

约束:constraint

在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的

 合法性、有效性、完整性!!!

约束的作用就是为了保证:表中的数据有效!! 

一般在创建表的时候给表的字段添加各种约束,从而保证输入到表中的数据是正确的。保证数据的正确性,完整性和有有效性。违反约束的数据是不能添加到表中去的。如果表已经存在,并且表已经有数据,添加约束的时候如果表中的数据已经违反了现在要添加的约束,约束会添加失败。

约束的种类:

约束名约束关键字约束简单说明
 非空约束not null不能为空
唯一性约束unique 数据不能重复
主键约束primary key (简称:PK)不能为空,且唯一
外键约束foreign key (简称:FK)外键在从表 主表:1方 从表:多方
默认约束default没有输入值,使用默认值
检查约束check  (mysql不支持,Oracle支持)

回顾创建表的语法:

create table +表名(
    字段名1 数据类型,
    字段名2 数据类型,
    ...
);

创建表的时候添加约束:

        列级约束:

               创建表的时候,在字段类型后面 直接添加约束关键字。

                支持六大约束,但是外键约束没有效果

create table vip(
    id int,
    name varchar(255) unique,
    email varchar(255) unique
);

        表级约束:

                在创建表的时候,在所有的字段后面添加约束,

                 [constraint 自定义的约束名]  约束关键字(列名1,列明2...)  中括号内为自选

                不支持非空和默认约束

                我们可以看到上面的列级约束,是对每一个字段单独做出约束的,

                但是有些情况我们需要,把多个字段联合起来看,这就需要表级约束了

                下面的例子就是,name和email只要一个不一样,就满足唯一

create table vip(
    id int,
    name varchar(255),
    email varchar(255),
    unique(name,email)
);
create table vip(
    id int,
    name varchar(255),
    email varchar(255),
    constraint  my  unique(name,email)
);

 在以及建好的表中的字段添加约束:

       alter table 表名  add  约束关键字(列名);

alter table vip add unique(name);

在一个字段同时添加多个约束:

        直接在后面继续添加约束关键字就可以。

create table vip(
    id int,
    name varchar(255) unique not null,
    email varchar(255)
);

添加默认约束:

就是在没有输入任何值的时候会自动填充一个值。

create table vip(
    id int default 1,
    name varchar(255) defaule "张三"
);

主键约束:

        主键字段:在字段上添加了主键约束,这样的字段叫做:主键字段

        主键值:主键字段中每一个值都叫做主键值

在mysql当中,如果一个字段同时被not null和unique约束的话,该字段自动变成

主键字段(注意:oracle中不一样)

主键有什么用:

        主键值是每一行记录的唯一标识。

        主键值是每一行记录的身份证号。

任何一张表都应该有主键,没有主键,表是无效的。

一张表的主键只能有一个。

可以把多个字段联合形成复合主键。

添加主键方法和上面的一样,

auto_increment(自增)

        写在字段的最后面。一般写在主键字段后面,保护主键不会为空

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

外键约束的添加:

        MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。

定义外键时,需要遵守下列规则:

1,主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。

2,必须为主表定义主键。

3,主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

4,在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

5,外键中列的数目必须和主表的主键中列的数目相同。

6,外键中列的数据类型必须和主表主键中对应列的数据类型相同。

mysql给表增加外键约束

外键约束可以在修改表时添加,但是添加外键约束的前提是:从表中外键列中的数据必须与主表中主键列中的数据一致或者是没有数据。

在已经存在表时添加外键约束的语法格式如下:

alter table <数据表名> add constraint<外键名> foreign key(<列名>)  references<从表名> (<列名>);         

在创建表的时候添加外键:

1,列级约束        不能省略最后面的逗号

字段2 数据类型 references 外表表名(约束字段),
字段3 数据类型 references 外表表名(约束字段),
primary key(字段2,字段3)

2,表级约束        不能省略最后面的逗号

primary key(字段2,字段3),
foreign key(字段2) references  外表表名(约束字段),
foreign key(字段3) references 外表表名(约束字段),

3,起别名        不能省略最后面的逗号

primary key(字段2,字段3),
 constraint 外键名称 foreign key(字段2) references外表表名(约束字段),
 constraint 外键名称 foreign key (字段3) references外表表名(约束字段),

);

删除约束:

删除主键约束:
alter table 表名 drop primary key;

删除外键约束

alter table 表名 drop foreign key 约束名;

删除唯一约束:
alter table 名 drop index id;

删除非空约束:
alter table 表名 modify 字段 字段类型

删除默认约束:

1,
alter table 表名 modify 字段 字段类型 ;

2,

alter table 表名 alter column 表名 drop default;

修改默认约束的字段:

alter table 表名 modify 字段 字段类型  default  修改的默认值 ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值