MySQL之数据库字段约束学习笔记(三)

MySQL 中的字段约束用于限制字段的取值范围,确保数据的一致性和完整性。常见的字段约束包括:

  1. PRIMARY KEY:定义主键约束,唯一标识表中的每一行数据。
  2. FOREIGN KEY:定义外键约束,确保两个表之间的关联完整性。
  3. UNIQUE:确保字段值的唯一性,但允许 NULL 值。
  4. NOT NULL:确保字段值不为空。
  5. DEFAULT:为字段指定默认值。
  6. CHECK:定义自定义的数据完整性约束,例如范围限制或正则表达式。
  7. AUTO_INCREMENT:自动递增字段的值,通常用于主键。

以下是每种约束的示例:

  1. PRIMARY KEY 约束:
sql 复制代码
CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
  1. FOREIGN KEY 约束:
sql 复制代码
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    product_id INT,
    quantity INT,
    FOREIGN KEY (product_id) REFERENCES products (product_id)
);
  1. UNIQUE 约束:
sql 复制代码
CREATE TABLE users (
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE,
    age INT
);
  1. NOT NULL 约束:
sql 复制代码
CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    department_id INT
);
  1. DEFAULT 约束:
sql 复制代码
CREATE TABLE messages (
    message_id INT PRIMARY KEY,
    sender_id INT,
    receiver_id INT,
    message_text VARCHAR(255) DEFAULT 'No message'
);
  1. CHECK 约束:
sql 复制代码
CREATE TABLE products (
    product_id INT PRIMARY KEY,
    name VARCHAR(50),
    price DECIMAL(10, 2),
    quantity INT,
    CHECK (price > 0),
    CHECK (quantity >= 0)
);
  1. AUTO_INCREMENT 约束:
sql 复制代码
CREATE TABLE invoices (
    invoice_id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT,
    total_amount DECIMAL(10, 2)
);

通过使用这些字段约束,可以确保数据库中的数据完整性,并避免不符合预期的数据插入或修改操作。

相关推荐
java1234_小锋16 分钟前
Redis 宣布正式接入 AI
数据库·人工智能·redis
这个DBA有点耶26 分钟前
数据融合平台的下一代形态:数据库内核自己就能融合,为什么还要ETL?
数据库·架构·aigc
数据库小学妹30 分钟前
MySQL大表怎么优化?2亿行表的分区归档与冷热分离实战
数据库·mysql·分库分表·分区表·数据库运维·冷热分离
程序员yu32 分钟前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法
91刘仁德34 分钟前
RAG实战 - 向量数据库(Milvus)
数据库·milvus
Lintongzg37 分钟前
千卡训练的隐形账单:通信不是瓶颈
笔记·学习·性能优化·llm
dadaobusi37 分钟前
学习: SIOV
学习
资深技术分享员38 分钟前
Geejing WebBuilder 日志、在线用户、系统监控,出问题时的三个第一现场
java·运维·数据库
LuminousCPP1 小时前
从零开始学 C++(三):类和对象入门|从 struct 到 class,理解封装、对象与 this 指针
c++·笔记·学习·类和对象
我是小白呀1 小时前
n8n 实战:把 AcmeFlow 的 READY 事件接到 CRM 通知
数据库·人工智能·workflow