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

SQL:Constraint(约束)

目录

🎯 什么是 Constraint?

MySQL 中常见的约束类型:

1. PRIMARY KEY

2. FOREIGN KEY

3. UNIQUE

4. NOT NULL

5. DEFAULT

6. CHECK(MySQL 8.0+)

7. AUTO_INCREMENT

🎯 什么是 Constraint?

Constraint(约束) 是你在创建表时指定的一组规则,用于限制字段中允许的值,以防止无效、重复或不一致的数据写入数据库。

MySQL 中常见的约束类型:

约束类型作用描述
PRIMARY KEY标识表中唯一的记录(不能重复,不能为 NULL)
FOREIGN KEY保证两个表之间的引用一致性(建立关联)
UNIQUE限制某列中的值不能重复
NOT NULL限制字段值不能为空
DEFAULT给字段设置默认值
CHECK限制字段值必须满足指定的逻辑表达式(MySQL 8.0+ 才正式支持)
AUTO_INCREMENT自动生成唯一的整数(通常用于主键)

1. PRIMARY KEY

  • 用于唯一标识表中每一行记录;

  • 通常只设置一个主键;

  • 自动包含 NOT NULLUNIQUE 约束。

CREATE TABLE students (
  student_id INT PRIMARY KEY,
  name VARCHAR(100)
);

2. FOREIGN KEY

  • 建立两个表之间的联系;

  • 确保外键列中的值在父表中必须存在。

CREATE TABLE courses (
  course_id INT PRIMARY KEY,
  course_name VARCHAR(100)
);

CREATE TABLE enrollments (
  student_id INT,
  course_id INT,
  FOREIGN KEY (course_id) REFERENCES courses(course_id)
);

3. UNIQUE

  • 限制某列中的值不能重复;

  • 不限制 NULL 值(NULL 不视为“重复”)。

CREATE TABLE users (
  user_id INT PRIMARY KEY,
  email VARCHAR(100) UNIQUE
);

4. NOT NULL

  • 防止列接受 NULL 值;

  • 常用于业务关键字段,如姓名、价格等。

CREATE TABLE products (
  product_id INT PRIMARY KEY,
  name VARCHAR(100) NOT NULL
);

5. DEFAULT

  • 如果插入时未指定该列的值,则自动填入默认值。

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  status VARCHAR(20) DEFAULT 'pending'
);

6. CHECK(MySQL 8.0+)

  • 验证列值是否满足条件;

  • 在旧版本中会忽略,不生效。

CREATE TABLE employees (
  emp_id INT PRIMARY KEY,
  age INT CHECK (age >= 18)
);

7. AUTO_INCREMENT

  • 自动为每一行生成唯一编号;

  • 常和主键一起使用。

CREATE TABLE customers (
  customer_id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100)
);

相关文章:

  • [VTK] 四元素实现旋转平移
  • 2025年危化品安全员考试题库及答案
  • Java基础:浅析Java中的XML文件处理
  • JavaScript 中的 if (object) 语句解释
  • Java基础:集合List、Map、Set(超详细版)
  • 电子处方+在线问诊系统源码:打造智能诊疗闭环“黄金搭档”方案
  • KingbaseES JSON全解析:记录操作与高级表格处理
  • 机器学习 第一章
  • SSM废品买卖回收管理系统的设计与实现
  • Java中的wait( )和sleep( )方法的区别
  • AI大模型技术之RAG、模型微调、知识蒸馏
  • 从零搭建微服务项目Pro(第0章——微服务项目脚手架搭建)
  • 【langchain4j系列教程-05】一文读懂:人工智能如何实现会话记忆
  • 基于EfficientNet的自闭症诊断辅助系统揭秘
  • Maven工具学习使用(十)——生成项目站点
  • Python及C++中的字典
  • 【玩泰山派】5、点灯,驱动led-(2)ubuntu18.04 升级python3.6到python3.7,安装pip3
  • 20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常出现的list-iodomain.sh警告信息
  • 58-使用wordpress快速创建个人网站
  • Go小技巧易错点100例(二十六)
  • 南京优质网站建设方案/有名的seo外包公司
  • 网站制作的评价标准/seo搜索排名优化方法
  • 网站内套网站代码/企业网站制作方案
  • 商城网站建设设计介绍/山西网络营销外包
  • 专门做运动鞋的网站/宁波seo网站
  • 衢州市建设工程管理处网站/百度热度指数排行