MySQL中,主键保证行唯一性,外键实现表间关联,非空确保字段有值,唯一限制字段值不重复,默认约束提供未指定时的默认值。创建表时需定义这些约束。
详解MySQL中的主键、外键、非空、唯一、默认约束及其在创建表中的应用
MySQL作为一种广泛使用的关系型数据库管理系统,其强大的数据管理功能依赖于各种约束和索引,本文将详细介绍MySQL中的主键、外键、非空、唯一和默认约束,以及如何在创建表时应用这些约束。
主键约束
主键(Primary Key)是表中每一行数据的唯一标识,在MySQL中,主键具有以下特点:
1、唯一性:表中任意两行数据的主键值不能相同。
2、非空性:主键不能为空。
3、不可更改性:一旦创建,主键值不能被修改。
创建表时,可以使用以下方法定义主键:
CREATE TABLE table_name ( column1 datatype PRIMARY KEY, column2 datatype, ... );
也可以在定义完所有列之后指定主键:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... PRIMARY KEY (column1) );
外键约束
外键(Foreign Key)用于建立表与表之间的关联关系,外键约束要求外键列的值必须在关联表的主键列中存在,外键具有以下特点:
1、引用完整性:外键列的值必须在关联表的主键列中有对应的值。
2、可空性:外键可以为空,但若设置为非空,则必须引用关联表的主键值。
3、删除和更新行为:当删除或更新关联表的主键值时,外键约束会影响与之关联的外键值。
创建表时,可以使用以下方法定义外键:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... FOREIGN KEY (column1) REFERENCES other_table(other_column) );
非空约束
非空(NOT NULL)约束要求列的值不能为空,这意味着在插入或更新数据时,该列必须有具体的值,创建表时,可以在列定义后添加NOT NULL
关键字来设置非空约束:
CREATE TABLE table_name ( column1 datatype NOT NULL, column2 datatype, ... );
唯一约束
唯一(UNIQUE)约束要求列的值在表中唯一,但允许有空值,创建表时,可以在列定义后添加UNIQUE
关键字来设置唯一约束:
CREATE TABLE table_name ( column1 datatype UNIQUE, column2 datatype, ... );
也可以在定义完所有列之后指定唯一约束:
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... UNIQUE (column1) );
默认约束
默认(DEFAULT)约束用于为列设置默认值,当插入数据时,如果没有为该列指定值,则会使用默认值,创建表时,可以在列定义后添加DEFAULT
关键字来设置默认约束:
CREATE TABLE table_name ( column1 datatype DEFAULT 'default_value', column2 datatype, ... );
综合应用示例
以下是一个创建学生表和成绩表的示例,展示了主键、外键、非空、唯一和默认约束的应用:
-- 创建学生表 CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender ENUM('男', '女') DEFAULT '男' ); -- 创建成绩表 CREATE TABLE scores ( id INT PRIMARY KEY, student_id INT NOT NULL, subject VARCHAR(50) NOT NULL, score INT NOT NULL, UNIQUE (student_id, subject), FOREIGN KEY (student_id) REFERENCES students(id) );
MySQL中的主键、外键、非空、唯一和默认约束是保证数据完整性和一致性的重要手段,在实际开发中,合理使用这些约束可以避免数据冗余、错误和异常,提高数据库性能。
评论(0)