MySQL约束(主键,唯一,非空,外键) 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 分类: 1. 主键约束:primary key 2. 非空约束:not null 3. 唯一约束:unique 4. 外键约束:foreign key 目录MySQL约束(主键,唯一,非空,外键)1. 非空约束2. 唯一约束3. 主键约束4. 外键约束例子 1. 非空约束 非空约束是为了让数据在存入数据时,保证值不为null。 关键字:not null 1. 创建表时添加约束 CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NUL 【MySQL约束详解】 在数据库设计中,MySQL提供了一套完整的约束机制来确保数据的准确性、有效性和完整性。这些约束包括主键约束、唯一约束、非空约束和外键约束。 1. **非空约束(NOT NULL)** - 非空约束用于强制指定字段的值不能为NULL。这意味着当向表中插入数据时,该字段必须包含有效值。 - 创建表时添加非空约束的语法:`CREATE TABLE 表名 (字段名 数据类型 NOT NULL);` - 已创建表后添加非空约束:`ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;` - 删除非空约束:`ALTER TABLE 表名 MODIFY 字段名 数据类型;` 2. **唯一约束(UNIQUE)** - 唯一约束确保字段的每个值在表中都是唯一的,但允许出现多个NULL值。 - 创建表时添加唯一约束:`CREATE TABLE 表名 (字段名 数据类型 UNIQUE);` - 删除唯一约束:`ALTER TABLE 表名 DROP INDEX 字段名;` - 创建表后添加唯一约束:`ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;` 3. **主键约束(PRIMARY KEY)** - 主键是表中的一列或多列,其值唯一且不可为NULL,用以标识表中的每一条记录。 - 每个表只能有一个主键,可以由单个字段或一组字段组成。 - 创建表时添加主键约束:`CREATE TABLE 表名 (字段名 数据类型 PRIMARY KEY);` - 删除主键约束:`ALTER TABLE 表名 DROP PRIMARY KEY;` - 创建表后添加主键:`ALTER TABLE 表名 MODIFY 字段名 数据类型 PRIMARY KEY;` - 主键自动增长:在创建表时,可以指定字段为`INT AUTO_INCREMENT`作为主键,这样每次插入新记录时,该字段会自动递增。 4. **外键约束(FOREIGN KEY)** - 外键用来建立表与表之间的关联,确保数据的一致性。它引用另一个表的主键。 - 添加外键约束的语法:`CREATE TABLE 表名 (....外键列 constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称));` - 删除外键约束:`ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;` - 创建表后添加外键:`ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);` - 级联操作: - 级联更新(ON UPDATE CASCADE):当主表中的主键值更改时,从表中的对应外键值也会自动更新。 - 级联删除(ON DELETE CASCADE):删除主表中的记录时,所有依赖于该主键的从表记录也将被删除。 例如,考虑一个员工表(emp)和部门表(department)。在员工表中,dep_id字段是一个外键,参照部门表的id字段。添加外键约束并启用级联操作可以确保当部门表中的部门被删除或更新时,员工表中的相关信息也会相应更新或删除。 创建员工表(emp): ```sql CREATE TABLE emp ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), age INT, dep_id INT, FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE ); ``` 创建部门表(department): ```sql CREATE TABLE department ( id INT PRIMARY KEY, name VARCHAR(20), location VARCHAR(20) ); ``` 通过这种方式,MySQL的约束机制确保了数据的完整性和一致性,使得数据库管理更加规范和高效。
- 粉丝: 9
- 资源: 946
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助