数据库 MySQL(约束)

一.约束:

为了确保数据的完整性(准确性、正确性),为了表添加一些约束,表中添加的数据必须是符合约束,降低数据冗余。

  • 主键约束
  • 唯一约束
  • 默认约束
  • 非空约束
  • 外键约束
1.主键约束:

primary key 约束:用于标识数据中的数据是唯一不重复。一张表中只能有一个主键
主键字段的特点:唯一并且不能为null

1.1:添加主键约束:

方式一:建表时添加主键约束:

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

在这里插入图片描述
违反主键约束时,错误提示

方式二:创建表时,在constraint约束区域添加主键约束

create table p3(
	id int,
	name varchar(20),
	primary key(字段列表)

);

方式三:建表后,添加主键

create table p4(
	id int,
	name varchar(20)
)
alter table 表名 add constranit 约束名称 约束类型(字段);
alter table p4  add constraint pk_id primary key;

  • 一个表中可以只有一个主键,但是一个主键可以是多个列。
  • 联合主键:多个字段同时作为主键,单个字段可以重复,联合起来不能重复
1.2:删除主键约束:

语法

alter table 表名 drop primary key;
2.唯一约束:

unique:约束用于唯一表示数据表中每条记录。
unique和primary key 都可以唯一标识数据表中的每条记录不重复
区别

  • 一张表中可以有任意多个唯一约束,但是一张表只能有一个主键约束
  • 主键约束不能为null,唯一约束可以为null
2.1添加唯一约束

方式一

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

在这里插入图片描述

方式二

create table p6(
	id int,
	`name` varchar(20),
	unique(`name`)

);

方式三

create table p7(
	id int,
	`name` varchar(20),
);
alter table p7 add constraint uq_name unique(`name`);
2.2:删除唯一约束:
alter table 表名 drop index 约束名称;
3.非空约束:

not null 约束强制要求字段的值不能为null

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

在这里插入图片描述

4.默认约束:

通过default关键字设置默认值,设置了默认值的字段,不给赋值,使用默认值填充。

create table p9(
	id int,
	`name` varchar(20),
	gender char default '男'
);

在这里插入图片描述

  1. 当不给列赋值时,使用默认值
  2. 使用关键字default赋值,使用默认值
  3. 给字段赋新值,新值覆盖默认值。
4.1.自动增长:

auto_increment 设置字段的值自动增长。每次添加数据,自动列会查找该列的的最大值加一

特点

  • 只有整型数据才可以设置自动增长列。
  • 自动增长列必须主键或者唯一键
  • 自增列在添加数据时可以不用赋值。
  • 初始值默认是1,每次加1.
  • 自增列的值一旦被使用后不会在出现。

在这里插入图片描述
给自增列赋值null值,也可以实现自增

5.外键约束:

设置多表之间的关联关系。

5.1:表关系

一个项目中包含有多张表,利用表之间可以避免表中数据冗余。
一对一:人-身份证号,丈夫-妻子
一对多:也叫多对一,班级-学生,部门-员工。
多对多:学生-课程,商品-订单,程序员-项目

5.2:一对一关联:
  • 存在两张表A、B分别添加主键,在任意一张表中设置外键字段引用另一张表中的主键。
  • 被引用数据的表称为主键表(主表),引用数据的表称为外键表(从表).
create table husband(
	hid int primary key,
	hname varchar(10)

);
create table wife(
	wid int primary key,
	wname varchar(10),
	whid int,
	foreign key(whid) references husband(hid) 
);

添加数据:先添加主键表,再添加外键表。

5.3 一对多关联:

一对多关联是在多的和一方建立外键字段,引用另外一张表中的主键字段。
在这里插入图片描述

create table dept(
	did int primary key,
	dname varchar(10)

);

create table emp(
	eid int primary key,
	ename varchar(10),
	did int,
	foreign key(did) references dept(did)
);
5.4:多对多关系:

一个项目可以有多个人做,一个人也可以做多个项目
在这里插入图片描述
在数据库中:一般建立中间表来建立多表关系
在这里插入图片描述

create table coder(
	cid int primary key,
	cname varchar(10)

);

create table project(
	pid int primary key,
	pname varchar(10)
);

create table coder_project(
	co_id int primary key,
	cid int,
	pid int,
	foreign key(cid) references coder(cid),
	foreign key(pid) references project(pid)
);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值