MySQL基础命令04

本文详细介绍了数据库中的各种约束,包括主键约束(单列和联合主键)、唯一约束、自增长列的设置与删除、默认约束和非空约束的管理,以及在MySQL8.0.19版本引入的检查约束。此外,还讨论了外键约束的创建、修改和删除,强调了外键约束在数据完整性和参照完整性方面的作用。
摘要由CSDN通过智能技术生成

一、主键约束:

1.1主键约束(PRIMARY KEY):一个表中只能有一个主键

1)建表时添加主键约束:

方法一:

create table students(id int auto_increment primary key,name varchar(20),age int );

方法二:

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

2)见表后修改为主键约束(add、modify、change都可):

如alter from 表名 add 字段名 类型primary key;

3)删除主键:

alter table 表名称 drop primary key;

1.2自增长列(标识列):AUTO_INCREMENT必须跟和一个Key搭配(如主键约束、唯一约束、外键约束等)

1)标识列可以设置步长

SET auto_increment_increment = 3; #设置步长(全局,退出数据库重新进入会恢复默认值)

2)建表时跟主键约束一样,在字段后直接加auto_increment

3)建表后修改(modfiy、change均可)④删除自增长:

alter table 表名 modify 字段名 类型 [auto_increment];

1.3联合主键:是指在数据库表中,由多个列共同组成的主键, 用来唯一标识表中的每一行数据。它的作用类似于单一列的主键,但不是由单个列组 成,而是由多个列组合而成。联合主键可以确保表中的每一行都具有唯一性,并且每 个列组合的值都不会重复。

联合主键在以下情况非常有用:

1)当单个列无法唯一标识表中的每一行,但多个列组合在一起可以唯一标识每一 行数据时。

2)提高查询性能:联合主键可以更有效地支持涉及多个列的查询,避免创建额外 的索引。

3)在具有多个外键的关联表中,可以使用联合主键来确保外键引用的准确性。

二、唯一约束:(UNIQUE)

1)建表时的用法与主键约束相同:

create table 表名(字段名,类型,... ,constraint 约束名 unique(字段名); 

2)建表后修改(add、modify、change均可):

alter table 表名称 add UNIQUE(字段名);

3)删除时:

alter table 表名称 drop index 设置唯一时的名称;

三、默认约束:(DEFAULT)

1)建表时与主键约束建表时用法相同。

2)建表后更改(modify、change均可)。

3)删除默认约束:

alter table 表名 modify [column] 列名 列类型; 
alter table 表名 alter column 列名 drop default;

四、非空约束:(NOT NULL)

1)增加修改为非空约束与主键约束一样。

2)删除非空约束:

alter table 表名 modify 字段名 类型 [null];

五、检查约束:(CHECK)是MySQL8.0.19版本开始的。

1)建表时添加检查约束

create table employees (
id int AUTO_INCREMENT PRIMARY KEY,
name varchar(50),
age int,
email varchar(100),
check (age >= 18));

2)修改时添加检查约束

alter table 表名 change 列名 列名 列类型 CHECK(condition);
alter table 表名 modify 列名 列类型 CHECK(condition);
alter table 表名 add constraint 列名 CHECK(condition);

3)删除检查约束

alter table 表名 drop contraint 约束名;

六、外键约束

1)建表时添加外键约束

create table 表名(
id int auto_increment primar key,
`name` varchar(20) not null,
gender varchar(20) default '男',
age int,
check (age >= 18),
constraint 索引名 foreign key(从表字段) references 主表名(主表字段)
);

2)修改时添加外键约束

alter table 从表表名 add [CONSTRAINT] 约束名称 foreign key (从表字段) reference 主表表名(主表字段);

3)删除外键约束

alter table 表名称 drop foreign key 索引名;

4)外键约束需注意:

①外键列类型需要与引用列类型一致

②外键列的值必须是主表中引用列的值或者 NULL

③一个表可以有多个外键列

④从表列可以随便删除

⑤删除主表数据时,会先检查从表中有没有对此数据的关联,如果有就不能直接删除

⑥在 设 置 外 键 的 时 候 后 面 添 加 on delete cascade / on update cascade

⑦在删除/更新主表时,级联删除/更新外键列的数据 在设置外键的时候后面添加 on delete set null / on update set null 在删除/更新主表时,外键列的值会变成null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值