MySQL数据库基础知识四-表与表的关系-数据库的备份

表与表的关系

一对一

例如,现在有两个表,每个人是一张表,每个身份证是一张表,每个人只有一张身份证,必须先有人,才会有身份证

而一对一的表之中,要分清楚谁是主表,谁是从表,由以上分析可知,人是主表,身份证是从表

下面用一个具体的案例来更好的理解这种关系

首先,建立两个表,一个表为qq表,一个表为qqDetial表

CREATE TABLE tb_qq(
	qqid INT PRIMARY KEY,
	PASSWORD VARCHAR(50)
);

CREATE TABLE tb_qqDetial(
	qqid INT PRIMARY KEY,
	NAME VARCHAR(50),
	address VARCHAR(500)
);

 然后,为qqDetial的主键qqid添加一个外键约束

ALTER TABLE tb_qqDetial ADD CONSTRAINT fk_tb_qq_tb_qqDetial
FOREIGN KEY (qqid) REFERENCES tb_qq(qqid);

之后,你可以通过MySQL数据库管理软件,看到表与表之间的关系

这种一对一的关系实现的方法靠的是主外键的约束,每个表都有主键,而从表的主键还有一个外键约束,这样就实现了一对一

一对多

一对多和多对一,只是看问题的角度不同

例如学生表和成绩表,从学生角度看,一个学生有多个成绩,是一对多

从成绩表来看,多个成绩对应一个学生,则是多对一

下面用代码来实现

建立两个表,在建立表的时候,就为表添加了外键约束

CREATE TABLE tb_student(
	id INT PRIMARY KEY,
	NAME VARCHAR(50),
	sex VARCHAR(10)
);

CREATE TABLE tb_score(
	stuid INT,
	score INT,
	courseid INT,
	CONSTRAINT fk_tb_student_tb_score FOREIGN KEY (stuid)
	REFERENCES tb_student(id)
);

这样通过MySQL数据库管理工具就可以看到表与表的关系

多对多的关系

用一个案例来理解,一个老师可以教多个学生,一个学生也可以由多个老师来交

所有老师与学生之间的关系是多对多的关系,而为了更好的实现多对多的关系,要借助第三张表,来保存这种关系

下面是代码实现

CREATE TABLE tb_teacher(
	tid  INT PRIMARY KEY,
	NAME VARCHAR(50)
);

CREATE TABLE tb_stu(
	sid  INT PRIMARY KEY,
	NAME VARCHAR(50)
);

CREATE TABLE tb_tea_stu_rel(
	tid INT,
	sid INT 
);

之后为第三张表添加外键约束

ALTER TABLE tb_tea_stu_rel ADD CONSTRAINT fk_tb_tea
FOREIGN KEY(tid) REFERENCES tb_teacher(tid);


ALTER TABLE tb_tea_stu_rel ADD CONSTRAINT fk_tb_stu
FOREIGN KEY(sid) REFERENCES tb_stu(sid);

这样通过MySQL数据库管理工具就可以看到表与表的关系

总结

在上面的案例中,每个案例都可以放到一张表中去存储数据,那么为什么要放在多张表中呢?

原因如下:

1:可以减少数据的冗余,即减少相同的数据的重复性

2:如果信息都存在一张表中,维护时很不方便,如学生拥有多个成绩,每个成绩都是一行,而当要修改学生的信息时,就要逐行修改,数据量如果很大的话,非常不易维护

3:对表进行查询的时候,连接查询的速度比整表扫描查询的速度要快

生产SQL脚本,导出数据

在控制台时执行mysqldump 命令可以用来生产指定数据库的脚本文件,

生成的脚本文件中,包含表的结构(create),数据(insert),

数据库不能保存,在恢复的时候需要自己创建一个数据库。

语法

mysqldump  -u用户名  -p密码  数据库名 > 生产的脚本文件路径\文件名.sql

注意:执行mysqldump命令,直接在Windows控制台下面执行,无需登录mysql,-u与-p后不要加空格,会出错

执行SQL脚本,恢复数据

介绍

         前提:必须先创建数据库

         执行SQL脚本需要登录mysql,然后指定数据库,最后执行SQL脚本即可。

语法

         source SQL脚本文件

 

 

猜你喜欢

转载自blog.csdn.net/h1025372645/article/details/89103160
今日推荐