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

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

码农世界 2024-05-24 前端 66 次浏览 0个评论

文章目录

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

    前言

    举例子,是最简单有效的学习方法。本系列文章以一个贯穿始终的场景,结合多个实例讲解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 
            > 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 
            > 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
            

            未完待续

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


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

转载请注明来自码农世界,本文标题:《【跟着例子学MySQL】多表关联 -- 一对一关系》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,66人围观)参与讨论

还没有评论,来说两句吧...

Top