欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库 MySQL(约束)

程序员文章站 2022-05-06 23:41:41
...

一.约束:

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

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

1.主键约束:

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

1.1:添加主键约束:

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

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

数据库 MySQL(约束)
违反主键约束时,错误提示

方式二:创建表时,在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
);

数据库 MySQL(约束)

方式二

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
	
);

数据库 MySQL(约束)

4.默认约束:

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

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

数据库 MySQL(约束)

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

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

特点

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

数据库 MySQL(约束)
给自增列赋值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 一对多关联:

一对多关联是在多的和一方建立外键字段,引用另外一张表中的主键字段。
数据库 MySQL(约束)

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:多对多关系:

一个项目可以有多个人做,一个人也可以做多个项目
数据库 MySQL(约束)
在数据库中:一般建立中间表来建立多表关系
数据库 MySQL(约束)

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)
);


相关标签: MySQL 数据库