MySQL(四)—— 数据表的约束(外键约束,主键约束等)

数据表的约束

为防止错误的数据被插入到数据表,MySQL中定义了一些维护数据库完整性的规则;这些规则常称为表的约束。常见约束如下:
在这里插入图片描述
以上五种约束条件针对表中字段进行限制从而保证数据表中数据的正确性和唯一性。换句话说,表的约束实际上就是表中数据的限制条件。

下面对这五种约束进行详细介绍:

主键约束

主键约束(primary key):每一行记录的唯一标识。
被标识为主键的数据在表中是唯一的且不为空。
在创建数据表时设置主键约束,既可以为表中的一个字段设置主键,也可以为表中多个字段设置联合主键。
语法:

字段名 数据类型 primary key;

设置主键约束的第一种方法

create table student(
id int primary key,//定义数据类型时设置
name varchar(20)
);

设置主键约束的第二种方法

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

非空约束

非空约束:即 not null指的是字段的值不能为空。
语法:

字段名 数据类型 not null;

举例:

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

默认值约束DEFAULT

默认值约束:即 default用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值。
语法:

字段名 数据类型 default 默认值;

举例:

create table student03(
id int,
name varchar(20),
sex varchar(10) default '男'
);

唯一性约束 UNIQUE

唯一性约束:即unique用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。
语法:

字段名 数据类型 unique

举例:

create table student04(
id int,
name varchar(20) unique
);

外键约束 FOREIGN KEY

外键约束:即foreign key常用于多张表之间的约束。

创建外键

语法:

-- 在创建数据表时设置外键约束语法如下:
constraint 外键名 foreign key (从表外键字段) references 主表 (主键字段)
-- 将创建数据表创好后设置外键约束语法如下:
alter table 从表名 add constraint 外键名 foreign key (从表外键字段) references 主表 (主键字段);

举例:

-- 创建学生表
create table student(
id int primary key,
name varchar(20)
);
-- 创建班级表
create table class(
classid int primary key,
studentid int
);
-- 添加外键约束 因为班级表的studentid是由学生表的id决定的,因此学生表也被称为主表,班级表被称为从表。
alter table class add constraint fk_class_studentid foreign key(studentid) references student(id);

数据的一致性了解

建立外键是为了保证数据的完整性和统一性。

==如果主表中的数据被删除,那么从表中的数据也应该被删除,==否则数据库中会存在很多无意义的垃圾数据。

删除外键

语法:

alter table 从表名 droo foreign key 外键名;

举例:
删除上述设置的外键约束

alter table class drop foreign key fk_class_studentid;

外键约束需要注意的细节

  1. 从表里的外键通常为主表的主键
  2. 从表的外键的数据类型必需与主表的数据类型一致
  3. 主表发生任何变化时应注意与从表的数据一致性的问题

注:MySQL命令都要大写,本文为方便都是小写。

其他MySQL知识请参照:
MySQL(一)——SQL简述,数据库的三大范式
MySQL(二)——数据库的数据类型
MySQL(三)——数据库、数据表的基本操作(增删查改)、子查询、分组查询、多表查询等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值