⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL 约束 Constraints

学习 NOT NULL/UNIQUE/PRIMARY KEY/FOREIGN KEY · 难度:进阶 · +15XP

SQL 约束 Constraints

SQL 约束 Constraints — 保障数据完整性

学习前的准备

你需要一个 MySQL 数据库环境。约束是数据库表上的规则,用来限制可以插入或更新的数据。约束就是数据库的“守门员”,确保只有符合规则的数据才能进入表中。

NOT NULL — 不允许空值

CREATE TABLE users (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    age INT
);

UNIQUE — 唯一约束

CREATE TABLE employees (
    id INT NOT NULL,
    email VARCHAR(100) UNIQUE,
    phone VARCHAR(20) UNIQUE
);

-- 多列联合唯一 CREATE TABLE registrations ( user_id INT, course_id INT, UNIQUE(user_id, course_id) );

PRIMARY KEY — 主键

主键是表中每一行数据的唯一标识。一个表只能有一个主键,自动包含 NOT NULL 和 UNIQUE。

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) NOT NULL
);

FOREIGN KEY — 外键

外键用于建立表与表之间的关系,确保引用的数据确实存在。

CREATE TABLE departments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL
);

CREATE TABLE employees ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(id) ON DELETE SET NULL ON UPDATE CASCADE );

CHECK 约束

CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT CHECK (age >= 0 AND age <= 150),
    score DECIMAL(5,2) CHECK (score >= 0 AND score <= 100)
);

小结

约束是数据库设计中最重要的一环。NOT NULL 防止空值,UNIQUE 防止重复,PRIMARY KEY 标识每一行,FOREIGN KEY 维护表间关系,CHECK 定义自定义规则。让数据库承担数据验证的责任,而不是完全依赖应用代码。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0