MySQL表约束详解:非空、默认、主键、唯一与外键
需积分: 5 170 浏览量
更新于2024-08-03
收藏 2.2MB PPTX 举报
"MySQL表约束是数据库设计中非常重要的一个概念,它用于确保数据的完整性和一致性。约束可以分为列级约束和表级约束,这两种类型的约束在MySQL中都有不同的应用和限制。以下是对各类型约束的详细说明:
1. **非空约束(NOT NULL)**:
非空约束用于指定某个字段的值不能为空。这在存储关键信息如姓名、身份证号等时非常有用,因为这些数据通常是不允许缺失的。例如:
```sql
CREATE TABLE students (
id INT NOT NULL # 不为空
);
```
2. **默认约束(DEFAULT)**:
默认约束允许为字段设置一个默认值,当插入新记录时,如果未提供该字段的值,系统会自动使用默认值。这在记录创建时间或某些可选信息时很有用。例如:
```sql
CREATE TABLE students (
id INT NOT NULL,
date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP # 创建时的默认时间戳
);
```
3. **主键约束(PRIMARY KEY)**:
主键约束确保一个表中某个字段的值是唯一的,并且不允许为空。主键常用于标识表中的唯一记录,如学号、员工ID等。例如:
```sql
CREATE TABLE students (
id INT PRIMARY KEY # 主键
);
```
4. **唯一约束(UNIQUE)**:
唯一约束确保字段的值在整个表中是唯一的,但可以为空。例如,座位号可能为空,但一旦分配则必须唯一。创建唯一约束如下:
```sql
CREATE TABLE students (
seat_id VARCHAR(10) UNIQUE # 可为空的唯一座位号
);
```
5. **外键约束(FOREIGN KEY)**:
外键约束用于建立两个表之间的关系,通常用于实现参照完整性。虽然MySQL支持外键约束,但在某些模式下可能不起作用。例如,外键用于连接学生表和课程表,表示学生所属的课程:
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
course_id INT,
FOREIGN KEY (course_id) REFERENCES courses(id)
);
```
但请注意,外键约束在某些MySQL配置下可能需要启用`innodb引擎`并正确设置`foreign_key_checks`。
6. **检查约束(CHECK)**:
检查约束允许定义字段值的特定条件。在MySQL中,虽然语法上支持`CHECK`,但实际上并不执行检查,因此主要用于其他数据库系统,如PostgreSQL。
在实际应用中,通过结合使用这些约束,可以确保数据库中的数据质量和一致性。例如,创建一个包含学生姓名、性别和出生日期的表,可以这样定义:
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
gender CHAR(1) CHECK (gender IN ('M', 'F')),
birth_date DATE NOT NULL
);
```
这个例子中,`name`字段不能为空,`gender`字段只能是'M'或'F',`birth_date`字段同样不能为空。这样的约束设计有助于防止错误数据的录入,保持数据的整洁和可靠。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2008-09-06 上传
2021-10-24 上传
2020-08-13 上传
2002-08-12 上传
2010-02-01 上传
2010-02-01 上传
luocong9999
- 粉丝: 0
- 资源: 10
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析