当前位置: 首页 > news >正文

【跟着例子学MySQL】多表关联 -- 一对一关系

文章目录

  • 前言
  • 回顾
  • 一对一关系
  • 备份恢复
  • 未完待续


前言

在这里插入图片描述
举例子,是最简单有效的学习方法。本系列文章以一个贯穿始终的场景,结合多个实例讲解MySQL的基本用法。

为什么要写这个系列?

  • 模仿是最好的老师,实践是检验成果的方法。
  • 本系列以实操样例和应用场景为核心,将MySQL基本用法贯穿其中,达到学以致用的效果。

为什么要学习MySQL?

  • MySQL是最常用的数据库之一,具有简单易用的特点,适合初学者学习
  • 数据库的基本用法有相通之处,学会MySQL可以为学习其他数据库打下良好基础

跟别的入门教材有什么不同?

  • 以一个贯穿始终的应用场景为主线,渐进地讲解用法
  • 难度适中,既有基础方法,也有值得注意的关键细节

本系列文章不包含哪些内容?

该系列文章的目标是,将最核心的知识,以最直接的方式,呈现给初学者。因此不包含:

  • MySQL安装方法
  • MySQL系统管理方法,例如备份、恢复、导入导出等
  • 高级主题,例如数据库监控、数据库调优和SQL优化

回顾

上篇文章👉《【跟着例子学MySQL】多表关联 – 多对多关系》 讲了多对多的多表关联。这篇接着讲解一对一的表关联。


一对一关系

假设某些产品有可选数据(例如,照片、评论)。与将这些可选数据保存在产品表中相比,可以创建另一个名为product_details,的表,并将其链接到一对一关系的products表,如图所示。

mysql> CREATE TABLE product_details (productID INT UNSIGNED NOT NULL,-- 与父表相同的数据类型comment TEXT NULL,PRIMARY KEY (productID),FOREIGN KEY (productID) REFERENCES products (productID));
mysql> DESCRIBE product_details;
+-----------+------------------+------+-----+---------+-------+
| Field     | Type             | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| productID | int(10) unsigned | NO   | PRI | NULL    |       |
| comment   | text             | YES  |     | NULL    |       |
+-----------+------------------+------+-----+---------+-------+
mysql> SHOW CREATE TABLE product_details \G
*************************** 1. row ***************************Table: product_details
Create Table: CREATE TABLE `product_details` (`productID` int(10) unsigned NOT NULL,`comment` text,PRIMARY KEY (`productID`),CONSTRAINT `product_details_ibfk_1` FOREIGN KEY (`productID`) REFERENCES `products` (`productID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

备份恢复

备份:运行mysqldump实用程序导出整个数据库。

(Windows)
> cd <path-to-mysql-bin>
> mysqldump -u root -p --databases productsales > "d:\myProject\backup_productsales.sql"
(Macs)
$ cd /usr/local/mysql/bin
$ ./mysqldump -u root -p --databases productsales > ~/Documents/backup_productsales.sql

输出文件包含创建数据库、创建表和插入语句,用于重新创建表。mysqldump实用程序的语法如下:

-- 使用--databases选项,转储选定的数据库
> mysqldump -u username -p --databases database1Name [database2Name ...] > backupFile.sql
-- 使用--all-databases选项,转储服务器中的所有数据库,除了mysql.user表(保证安全)
> mysqldump -u root -p --all-databases --ignore-table=mysql.user > backupServer.sql
-- 转储一个特定数据库的所有表
> mysqldump -u username -p databaseName > backupFile.sql
-- 转储特定数据库的选定表
> mysqldump -u username -p databaseName table1Name [table2Name ...] > backupFile.sql

恢复:实用程序mysqldump生成一个SQL脚本(包括创建表、插入命令,用于重新创建表和加载它们的数据)。你可以通过运行以下脚本从备份中恢复:

  1. 通过交互式客户端中的“source”命令。例如,从已备份的数据库中恢复:
(Windows)
-- 启动MySQL客户端
mysql> source d:/myProject/backup_productsales.sql
-- 提供脚本的绝对或相对文件名——使用Unix样式的正斜杠(/)作为路径分隔符
(Macs)
-- 启动MySQL客户端
mysql> source ~/Documents/backup_productsales.sql
  1. 通过mysql客户端程序的“批处理模式”,通过重新定向来自脚本的输入:
(For Windows)
-- 启动新的“cmd”
> cd <path-to-mysql-bin>
> mysql -u root -p productsales< d:\myProject\backup_productsales.sql
(For Macs)
-- 启动新的“终端”
$ cd /usr/local/mysql/bin
$ ./mysql -u root -p productsales< ~/Documents/backup_productsales.sql

未完待续

下一篇我们介绍多主键、外键和索引的情况。


如果喜欢这篇文章,请不要忘记关注🧡、点赞👍和收藏📔哦!

相关文章:

  • 深入解析Java中的Calendar类
  • ❤ vue2 使用 Element和 vue3 使用 ElementPlus报错
  • 鸿蒙应用开发系列 篇六:鸿蒙系统应用生态与发布、推广
  • GD32F407入坑指南 第三章
  • nssctf(Web刷题)
  • ffmpeg-webrtc(metartc)给ffmpeg添加webrtc协议
  • 如何申请免费域名级SSL证书,实现HTTPS访问
  • AI大模型探索之路-实战篇4:DB-GPT数据应用开发框架调研实践
  • 谷歌快速收录怎么做?
  • 如何选择序列化协议:关键因素与场景分析
  • echarts取消纵坐标,自定义提示内容,完整 echarts 布局代码
  • Pytorch深度学习实践笔记1
  • ubuntu nginx 配置php 网站
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • pip(包管理器) for Python
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【Leetcode】104. 二叉树的最大深度
  • Docker下部署自己的LNMP工作环境
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript新鲜事·第5期
  • JS实现简单的MVC模式开发小游戏
  • k个最大的数及变种小结
  • Python爬虫--- 1.3 BS4库的解析器
  • Python十分钟制作属于你自己的个性logo
  • Quartz初级教程
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 关于 Cirru Editor 存储格式
  • 和 || 运算
  • 计算机常识 - 收藏集 - 掘金
  • 技术:超级实用的电脑小技巧
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 微服务入门【系列视频课程】
  • 一个SAP顾问在美国的这些年
  • 用mpvue开发微信小程序
  • Android开发者必备:推荐一款助力开发的开源APP
  • Linux权限管理(week1_day5)--技术流ken
  • 进程与线程(三)——进程/线程间通信
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​用户画像从0到100的构建思路
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • $.ajax中的eval及dataType
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (C语言)字符分类函数
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (原)Matlab的svmtrain和svmclassify
  • (转)视频码率,帧率和分辨率的联系与区别
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net core 依赖注入的基本用发
  • .NET Micro Framework初体验
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET成年了,然后呢?