【JavaWeb】63:数据库备份以及多表设计

今天是刘小爱自学Java的第63天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:
【JavaWeb】63:数据库备份以及多表设计_第1张图片
三天前学习了数据库的增删改查。

其中对于drop+database+数据库名这个命令记忆尤深,也听教程里的老师再三嘱咐用这个命令要切记谨慎处理,否则是要负刑事责任的。

毕竟互联网公司,最重要的也就是数据了。

今年年初的时候微盟就发生过程序员删库跑路事件,所以也一直铭记在心。

结果今天告诉我数据库是可以备份和恢复的?

也就是说删除了还是可以恢复的呀,既然如此那还怕什么删库跑路……

一、数据库备份与恢复

【JavaWeb】63:数据库备份以及多表设计_第2张图片

①数据库备份

将数据库student备份到test文件夹下student.sql文件里面。

其中注意:test文件夹要存在,不然会报错。

语法:mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径

dump,转出、转储的意思,mysqldump也就可以理解成数据库备份。

由于mysqldump命令不是sql命令,需要在DOS窗口下使用。

我晕,昨天才刚说用了可视化工具Navicat,再也不用在DOS窗口下输入命令行了,结果又啪啪打自己的脸。

②数据库恢复方案一

这个很简单,就是将备份中的>改成<就好了,只是箭头的方向不同,也好理解。

语法:mysqldump -u 用户名 -p 数据库名 < 磁盘SQL文件路径

将备份的文件导入到我自己的数据库里面,同样的道理,该命令也是需要在DOS窗口下使用。

③数据库恢复方案二

该方案是SQL语句,是在数据库中操作,命令如下:

source+磁盘SQL文件路径

source,根源的意思。

二、表与表之间的关系

表与表之间一共有三种关系,如下图:

【JavaWeb】63:数据库备份以及多表设计_第3张图片

①1对多

一个部门有多个成员,一个成员只属于一个部门,所以是1对多。

②多对多

一个程序员会开发多个项目,一个项目会被多个程序员开发,所以是多对多。

这种情况据说在外包公司中很常见。

③1对1

一个丈夫只能有一个妻子,一个妻子只能有一个丈夫,所以是1对1。

其中又以一对多和多对多最常见。

三、一对多表设计

以上述部门和成员的关系作为例子:
【JavaWeb】63:数据库备份以及多表设计_第4张图片

①部门表

一共有三个部门,每个部门有自己对应的id。

那如何将这两张表联系起来?

如果是在部门表加入成员表的id,那一行需要添加多个数据,显然不行。

②成员表

一共有七个成员。

那如何将这两张表联系起来?

每个成员后面添加一个属性,也就是自己对应的部门id,这样就一目了然。

那么现在问题来了:

这只是在成员表中做了一个声明,实际上这两张表并没有关联起来。

具体什么意思呢?

简单地理解就是:假如将部门表中的某个部门是删除的,但是成员表中的数据还有这个部门。

想要解决这个问题,就要引用外键约束这个概念,将这两张表真真正正地关联起来。

如何添加外键约束?

【JavaWeb】63:数据库备份以及多表设计_第5张图片

①建表后添加外键约束

foreign key即为外键的意思。

references,参考的意思,这里可以理解成关联。

也就是说把成员表中的dept_id作为外键,同时与部门表中的id相关联。

这样的话,你想删除部门表中的某个部门,得保证成员表中没有该部门的成员。

②建表时添加外键约束

一般来说,会在建表的时候就添加外键,格式是一样的。

其中:

  • 部门表(1对多中的1)也叫主表。
  • 成员表(1对多中的多)也叫从表。

也就是说想要删除主表中的数据,必须保证从表中和其相关的数据不存在。

其中一对一表设计和一对多是很相似的,就是任意一张表将另外一张表的id作为外键就可以了。

操作起来很简单,并且一般应用以一对多和多对多为主,在此就不再赘述了。

四、多对多表设计

程序员表和项目表便是多对多的关系。

写sql语句创建表和添加数据,也算是对昨天学的知识点做一个复习。

【JavaWeb】63:数据库备份以及多表设计_第6张图片

①创建程序员表

对表本身的操作,所以有table这个单词。

create table coder(表字段说明)。

其中里面表字段之间使用逗号隔开的,最后一个字段又没有逗号。

我用的分号然后一直报错,弄了半天才发现这个问题,感觉要被自己蠢疯了。

②创建项目表

格式同上。

③给程序员表添加数据

insert into+表名+values+(每列对应的值)。

这是将列名省略了的写法,列名省略了之后在赋值时,每列都得赋值。

④给项目表添加数据

格式同上。

那么在多对多的表中是怎么将两张表关联起来的?

【JavaWeb】63:数据库备份以及多表设计_第7张图片

创建一个中间表,将这两个表关联起来。

  • 中间表表名一般会将这两个表名结合起来,见名知意。
  • 中间表有两个外键。
  • 外键分别对应两张表中的主键。

这样的话,这两张表也就被关联起来了。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

你可能感兴趣的:(零基础自学Java)