当前位置: 首页 > news >正文

06_约束

文章目录

    • 一、是什么
    • 二、实体完整性约束
      • 2.1、主键约束
      • 2.2、主键自增长
      • 2.3、唯一约束
    • 三、域完整性约束
      • 3.1、非空约束
      • 3.2、默认值
    • 四、引用完整性约束

一、是什么

用于限制加入表的数据的类型和规范,约束是添加在列上的,用来约束列的

分类:

  • 实体完整性约束;
  • 域完整性约束;
  • 引用完整性约束。

二、实体完整性约束

2.1、主键约束

标识表中的一行数据,是该行数据的唯一标识,特性:

  • 非空;
  • 唯一;
  • 被引用(在外键中使用)。

当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。

我们通常创建一个和业务逻辑没有任何关系的,没有任何含义的列做主键列

# 创建表时指定主键
CREATE TABLE 表名(
    列名 数据类型 PRIMARY KEY,
	列名 数据类型,
	列名 数据类型
);

# 创建表时指定主键
CREATE TABLE 表名(
    列名 数据类型,
	列名 数据类型,
	列名 数据类型,
    PRIMARY KEY(设置为主键的列名)
);

# 修改表时指定主键(了解就行)
ALTER TABLE 表名 ADD PRIMARY KEY(列名);
ALTER TABLE 表名 MODIFY 列名 列类型 PRIMARY KEY;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 PRIMARY KEY;

# 删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;

2.2、主键自增长

通常指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性 。

# 创建表时指定主键
CREATE TABLE 表名(
    列名 数据类型 PRIMARY KEY AUTO_INCREMENT,
	列名 数据类型,
	列名 数据类型
);

# 修改表时设置主键自增长
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 PRIMARY KEY AUTO_INCREMENT;
ALTER TABLE 表名 MODIFY 列名 列类型 PRIMARY KEY AUTO_INCREMENT;

# 修改表时删除主键自增长
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

2.3、唯一约束

某些列不能设置重复的值,所以可以对列添加唯一约束。
比如身份证号,学号,用户登录的用户名

# 创建表时指定唯一约束
CREATE TABLE 表名(
    列名 数据类型 UNIQUE,
	列名 数据类型,
	列名 数据类型
);

# 修改表时设置唯一约束
ALTER TABLE 表名 MODIFY 列名 列类型 UNIQUE;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 UNIQUE;

# 删除唯一约束
ALTER TABLE 表名 DROP INDEX name;

三、域完整性约束

3.1、非空约束

此列必须有值,某些列不能设置为NULL值

# 创建表时指定非空约束
CREATE TABLE 表名(
    列名 数据类型 NOT NULL,
	列名 数据类型,
	列名 数据类型
);

# 修改表时设置非空约束
ALTER TABLE 表名 MODIFY 列名 列类型 NOT NULL;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 NOT NULL;

# 删除非空约束
ALTER TABLE 表名 MODIFY 列名 列类型;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

3.2、默认值

为列赋予默认值,当新增数据不指定值时,书写DEFAULT,以指定的默认值进行填充。

# 创建表时指定默认值
CREATE TABLE 表名(
    列名 数据类型 DEFAULT 默认值,
	列名 数据类型,
	列名 数据类型
);

# 修改表时设置默认值
ALTER TABLE 表名 MODIFY 列名 列类型 DEFAULT 默认值;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型 DEFAULT 默认值;

# 删除默认值
ALTER TABLE 表名 MODIFY 列名 列类型;
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

四、引用完整性约束

这里说的引用完整性约束就是指的外键约束,作用:

  • 引用外部表的某个列的值;
  • 新增数据时,约束此列的值必须是引用表中已经存在的值。

外键的特点:

  • 外键必须是另一表的主键的值(外键要引用主键!);
  • 外键可以重复;
  • 外键可以为空;
  • 一张表中可以有多个外键。
    在这里插入图片描述
# 创建表时指定外键约束
CREATE TABLE 表名(
    列名 数据类型,
	列名 数据类型,
	列名 数据类型,
    CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)
);

# 修改表时添加外键约束
ALERT TABLE 表名 ADD CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键);

# 修改表时删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名称;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/101059.html

相关文章:

  • Java的IO模型、Netty原理详解
  • IDEA中打开项目Vue+Vue基本语法
  • 内网穿透_ZeroTiers部署_广和通SC171_aidlux_嵌入式
  • 在机器人和无人机时代,测绘人的出路在哪里?
  • 【C++初阶】--- 内存管理
  • Java进阶——位运算
  • 系统间交互时,怎么校验两个系统所在服务器时间是否一致
  • 【android bluetooth 协议分析 06】【l2cap详解 5】【通俗易懂l2cap 定时器rtx和ertx】
  • Go中的逃逸分析
  • 11-项目涉及设备的问题
  • 单元测试的编写
  • Java【多线程】(6)定时器
  • HCIP【OSPF 详解】
  • Spring的事务处理
  • Spring学习笔记07——SpringBoot常用注解记录
  • WEB安全--RCE--RCE的危险函数
  • Spring Boot 日志 配置 SLF4J 和 Logback
  • 在bootstrap下实现万年历
  • 分享一些新版GPT-4o使用方式!能多模态生图!
  • 【算法基础】递归与递推
  • DeepSeek学术写作过程中如何分析文献中的论证方法
  • Vue3 其它API customRef
  • 【STL】queue
  • Python 3 与 MySQL 数据库连接:mysql-connector 模块详解
  • 【王阳明代数讲义】识人用人之道与面相智慧
  • 【Java】Java核心知识点与相应面试技巧(八)——类与对象(三)
  • 无线局域网
  • Python数据可视化-第2章-使用matplotlib绘制简单图表
  • AI三大主义 和 深度学习三大主义
  • arthas之jvm相关命令