博客
关于我
mysql中的约束
阅读量:789 次
发布时间:2023-02-11

本文共 2629 字,大约阅读时间需要 8 分钟。

MYSQL 中的约束类型

约束是一种用来限制数据库表中数据的完整性和唯一性的机制,确保数据的合理性和一致性。以下是 MYSQL 中常用的几种约束类型及其应用场景。

1. 主键约束(Primary Key)

主键约束是最常用的约束类型之一。它结合了唯一约束和非空约束的功能,确保数据库表中某一列或多列的值不会重复且不为 NULL。一个表最多只能有一个主键约束。

主键约束的特点:

  • 主键列不允许重复值和 NULL。
  • 主键可以由单一列或多个列组成。
  • 系统会为主键列自动创建唯一索引。

主键约束的操作示例:

-- 创建主键约束create table user (    id int primary key,    name varchar(20));-- 删除主键约束alter table user drop primary key;-- 添加主键约束alter table user add primary key (id, name);-- 修改主键约束alter table user modify id int primary key;

2. 外键约束(Foreign Key)

外键约束用于确保两个表之间的数据一致性。它定义了一个表中某些列与另一个表中的某些列之间的参照关系。

外键约束的特点:

  • 外键可以由单一列或多个列组成。
  • 外键涉及的表被称为子表,主表则称为父表。
  • 外键约束可以在表级或列级上定义,具体取决于需求。

外键约束的操作示例:

-- 主表创建示例create table type (    id int primary key,    type varchar(20));-- 副表创建示例create table tag (    id int primary key,    name varchar(20),    type_id int,    foreign key (type_id) references type(id));-- 多列外键约束示例create table classes (    id int,    name varchar(20),    number int,    primary key (name, number));-- 子表创建示例create table student (    id int auto_increment primary key,    name varchar(20),    classes_name varchar(20),    classes_number int,    foreign key (classes_name, classes_number) references classes(name, number));-- 删除外键约束alter table student drop foreign key student_id;-- 添加外键约束alter table student add foreign key (classes_name, classes_number) references classes(name, number);

3. 唯一约束(Unique)

唯一约束确保某一列或多列的值在整个表中是唯一的,防止重复记录。

唯一约束的特点:

  • 不允许重复值,但允许 NULL。
  • 可以在单一列或多个列上定义。
  • 默认情况下,唯一约束的名称会与列名相同。

唯一约束的操作示例:

-- 创建表时设置唯一约束create table user (    id int not null,    name varchar(20),    password varchar(10),    unique(name, password));-- 添加唯一约束alter table user add unique (name, password);-- 修改唯一约束alter table user modify name varchar(25) unique;-- 删除约束alter table user drop index name;

4. 非空约束(Not Null)

非空约束用于确保某一列的值不能为 NULL,并且可以设置默认值。

非空约束的特点:

  • 与默认值结合使用时,非空约束可以设置列的默认值。
  • 非空约束只能在列级别上定义。

非空约束的操作示例:

-- 创建表时设置非空约束create table user (    id int not null,    name varchar(255) not null default 'abc',    sex char null);-- 修改非空约束alter table user modify sex varchar(2) not null;-- 取消非空约束alter table user modify sex varchar(2) null;-- 取消非空约束并设置默认值alter table user modify sex varchar(2) default 'abc' null;

5. 自增约束(Auto Increment)

自增约束用于自动为某一列生成递增的值,通常用于主键字段。

自增约束的特点:

  • 适用于整数类型的列。
  • 值会从 1 开始依次递增。

自增约束的操作示例:

create table user (    id int auto_increment primary key,    name varchar(255) not null,    sex char null);

6. 默认值约束(Default)

默认值约束用于设置某一列的默认值,当插入新记录时,如果该列没有提供值时,系统会使用默认值。

默认值约束的特点:

  • 可以与非空约束结合使用。
  • 只能在列级别上定义。

默认值约束的操作示例:

create table user (    id int auto_increment primary key,    name varchar(255) not null,    sex varchar(2) default '男');

通过合理运用这些约束类型,可以显著提高数据库表的数据质量和一致性,减少冗余数据和错误数据的产生。

转载地址:http://evbfk.baihongyu.com/

你可能感兴趣的文章
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>