MySQL数据库(三)---约束、修改数据表

本文详细介绍了MySQL数据库中外键约束的概念和作用,强调了使用外键约束时的数据一致性与完整性,以及对存储引擎的要求。同时,讲解了如何修改数据表,包括添加和删除列、约束以及修改列定义和数据表名称等操作。
摘要由CSDN通过智能技术生成

本篇的思维导图如下:
这里写图片描述

外键约束 FOREIGN KEY

保持数据的一致性和完整性
实现一对多的关系

要求

  1. 父表和字表必须使用相同的存储引擎,并且禁止使用临时表
  2. 数据表的存储引擎只能为InnoDB
  3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
  4. 外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引。

编辑数据表的默认存储引擎:
default-storage-engine=InnoDB

举例说明:

//下面创建一个省份列表
CREATE TABLE provinces
(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);

//创建另外一个数据表
CREATE TABLE users
(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,                     
FOREIGN KEY (pid) REFERENCES provinces (id));

外键约束的参照操作

  1. CASCADE: 从父表删除或更新 且自动删除或更新子表中匹配的行
  2. SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL
  3. RESTRICT:拒绝对父表的删除或更新操作
  4. NO ACTION :标准SQL的关键字,在MySQL中与RESTRICT相同

例:

CREATE TABLE users1(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,     
FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
);

INSERT provinces(pname) VALUE(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值