數據庫備份與恢復,那還怕什么刪庫跑路?
瀏覽量: 次 發布日期:2023-10-09 22:38:30
數據庫備份與恢復,那還怕什么刪庫跑路?
今天是劉小愛自學Java的第63天。
感謝你的觀看,謝謝你。
話不多說,繼續數據庫的學習:
三天前學習了數據庫的增刪改查。
其中對于drop+database+數據庫名這個命令記憶尤深,也聽教程里的老師再三囑咐用這個命令要切記謹慎處理,否則是要負刑事責任的。
畢竟互聯網公司,最重要的也就是數據了。
今年年初的時候微盟就發生過程序員刪庫跑路事件,所以也一直銘記在心。
結果今天告訴我數據庫是可以備份和恢復的?
也就是說刪除了還是可以恢復的呀,既然如此那還怕什么刪庫跑路……
①數據庫備份
將數據庫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,根源的意思。
表與表之間一共有三種關系,如下圖:
①1對多
一個部門有多個成員,一個成員只屬于一個部門,所以是1對多。
②多對多
一個程序員會開發多個項目,一個項目會被多個程序員開發,所以是多對多。
這種情況據說在外包公司中很常見……
③1對1
一個丈夫只能有一個妻子,一個妻子只能有一個丈夫,所以是1對1。
其中又以一對多和多對多最常見。
以上述部門和成員的關系作為例子:
①部門表
一共有三個部門,每個部門有自己對應的id。
那如何將這兩張表聯系起來?
如果是在部門表加入成員表的id,那一行需要添加多個數據,顯然不行。
②成員表
一共有七個成員。
那如何將這兩張表聯系起來?
每個成員后面添加一個屬性,也就是自己對應的部門id,這樣就一目了然。
那么現在問題來了:
這只是在成員表中做了一個聲明,實際上這兩張表并沒有關聯起來。
具體什么意思呢?
簡單地理解就是:假如將部門表中的某個部門是刪除的,但是成員表中的數據還有這個部門。
想要解決這個問題,就要引用外鍵約束這個概念,將這兩張表真真正正地關聯起來。
如何添加外鍵約束?
鎮江數據恢復①建表后添加外鍵約束
foreign key即為外鍵的意思。
references,參考的意思,這里可以理解成關聯。
也就是說把成員表中的dept_id作為外鍵,同時與部門表中的id相關聯。
這樣的話,你想刪除部門表中的某個部門,得保證成員表中沒有該部門的成員。
②建表時添加外鍵約束
一般來說,會在建表的時候就添加外鍵,格式是一樣的。
其中:部門表(1對多中的1)也叫主表。成員表(1對多中的多)也叫從表。
也就是說想要刪除主表中的數據,必須保證從表中和其相關的數據不存在。
浦東數據恢復其中一對一表設計和一對多是很相似的,就是任意一張表將另外一張表的id作為外鍵就可以了。
操作起來很簡單,并且一般應用以一對多和多對多為主,在此就不再贅述了。
程序員表和項目表便是多對多的關系。
寫sql語句創建表和添加數據,也算是對這幾天學的知識點做一個復習。
①創建程序員表對表本身的操作,所以有table這個單詞。
create table coder(表字段說明)。
其中里面表字段之間使用逗號隔開的,最后一個字段又沒有逗號。
我用的分號然后一直報錯,弄了半天才發現這個問題,感覺要被自己蠢瘋了。②創建項目表
格式同上。
③給程序員表添加數據
insert into+表名+values+(每列對應的值);
這是將列名省略了的寫法,列名省略了之后再賦值時,每列都得賦值。
④給項目表添加數據
格式同上。
那么在多對多的表中是怎么將兩張表關聯起來的?
無錫數據恢復創建一個中間表,將這兩個表關聯起來。中間表表名一般會將這兩個表名結合起來,見名知意。中間表有兩個外鍵。外鍵分別對應兩張表中的主鍵。
這樣的話,這兩張表也就被關聯起來了。
謝謝你的觀看。