文章目录
- 前言
- 回顾
- 一对一关系
- 备份恢复
- 未完待续
前言
举例子,是最简单有效的学习方法。本系列文章以一个贯穿始终的场景,结合多个实例讲解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脚本(包括创建表、插入命令,用于重新创建表和加载它们的数据)。你可以通过运行以下脚本从备份中恢复:
- 通过交互式客户端中的“source”命令。例如,从已备份的数据库中恢复:
(Windows)
-- 启动MySQL客户端
mysql> source d:/myProject/backup_productsales.sql
-- 提供脚本的绝对或相对文件名——使用Unix样式的正斜杠(/)作为路径分隔符
(Macs)
-- 启动MySQL客户端
mysql> source ~/Documents/backup_productsales.sql
- 通过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
未完待续
下一篇我们介绍多主键、外键和索引的情况。
如果喜欢这篇文章,请不要忘记关注🧡、点赞👍和收藏📔哦!