MySQL数据表的高级操作(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 一、克隆表,将数据表的数据记录生成到新的表中方法1:先克隆表结构,再导入表数据。

五、创建外键约束,保证数据的完整性和一致性

外键的定义: 如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。

外键的作用:

  • 为了一张表记录的数据不要太过冗余。
  • 保持数据的一致性、完整性。

主键表和外键表的理解:

(1)以公共关键字作主键的表为主键表(父表、主表)

(2)以公共关键字作外键的表为外键表(从表、外表)

注意:

  • 与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
  • 添加外键时必须关联主键(即主表先要添加主键,之后从表再添加外键)

5.1 创建主键表和外键表

创建主键表和外键表:

#创建主表class
 create table class (cid int,cname varchar(10));
 #创建从表student
 create table student (id int,name varchar(10),age int,classid int);
 #为主表class的cid字段添加一个主键约束。constraint为主键创建别名,主键名建议以“PK_”开头。
 alter table class ADD constraint PK_CID primary key (cid);
 #为从表student的classid字段添加外键,并将student 表的classid字段和class 表的cid字段建立外键关联。外键名建议以"FK_”开头。
 #references关联主键表中的字段。
 alter table student ADD constraint FK_CLASSID foreign key (classid) references class(cid);
 #添加外键时必须关联主键(即先要添加主键,再添加外键)
 #添加主键和外键时,即使不设置别名,系统也会自动创建一个别名。
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


为两个表插入数据:

INSERT INTO class values(1,'钢琴');          #为主表插入数据
 INSERT INTO student values(1,'张三',18,1);   #为从表插入数据
 INSERT INTO student values(2,'李四',18,2);   #这条数据会插入失败,因为主表的cid字段没有为2的值
复制代码




网络异常,图片无法展示
|


网络异常,图片无法展示
|


5.2 删除主键表中的数据记录

如果想删除主键表中的某条记录,必须先删除外键表中相关联的字段记录。

#删除数据记录时,要先删从表再删主表。也就是说删除主键表的记录时,必须先删除其他与之关联的表中的记录。
 delete from student where classid=1;       //先删从表的数据
 delete from class where cid=1;             //再删主表的数据
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


5.3 查看和删除外键约束

第一步删除外键约束,第二步删除别名。

#查看外键约束
 show create table student;
 desc student;
 #删除外键约束。
 alter table student drop foreign key FK_CLASSID;   //先删除外键约束
 alter table student drop key FK_CLASSID;           //再删除键(即删除别名)
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 运维 关系型数据库
MySQL 中 GRANT 操作会引起复制中断吗?
GRANT 操作并不是一个原子性操作,不管执行成功与否,都会触发一个隐式重载授权表的行为。 在生产环境中需要规范用户创建及授权的操作,不推荐使用 DML 语句去直接变更 mysql.user 表,可能会引发其他的问题,若使用了 DML 语句进行变更, 需要手工执行 flush privileges。
76 4
|
4月前
|
存储 SQL 关系型数据库
MySQL 给数据表增加一列,一定会锁表吗?
【8月更文挑战第8天】在数据库管理和开发中,给数据表增加一列是一个常见的操作。然而,当面试官提出“MySQL 给数据表增加一列,一定会锁表吗?”这一问题时,答案并非绝对。这主要取决于MySQL的版本、存储引擎以及具体的操作方式。
428 0
|
5月前
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
74 0
|
2月前
|
监控 关系型数据库 MySQL
MySQL数据表索引命名规范
MySQL数据表索引命名规范
123 1
|
2月前
|
存储 监控 关系型数据库
MySQL造数据占用临时表空间
MySQL造数据占用临时表空间
44 0
|
3月前
|
存储 SQL 关系型数据库
MySQL 数据表操作
MySQL 数据表操作
44 1
|
5月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
54 2
|
5月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之运行mysql to doris pipeline时报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
关系型数据库 MySQL 调度
MySQL高级功能与优化策略深度探索
MySQL高级功能与优化策略深度探索