實驗二 數據庫的附加/分離、導入/導出與備份/還原
一、實驗目的
1、理解備份的基本概念,掌握各種備份數據庫的方法。
2、掌握如何從備份中還原數據庫。
3、掌握數據庫中各種數據的導入/導出。
4、掌握數據庫的附加與分離,理解數據庫的附加與分離的作用。
二、實驗內容
1、將“實驗一”所創建的數據庫EDUC,進行數據完整備份。備份名字為備份路徑:D:/ EDUC.bak。
2、更改EDUC數據庫里的內容,比如,刪除一個表,或者在數據庫中增加一個新表,或者修改某個表的數據,等等。
增加一個新表,
3、還原EDUC數據庫,使它回復到原來的內容。(比較、體會操作1-3之間,數據庫中數據的變化。)
4、將EDUC數據庫從數據庫服務器上分離,并找到EDUC數據庫的數據文件和日志文件(創建該數據庫時數據文件及日志文件的存放路徑),把它們拷到別的路徑,比如C盤。(也可以放到自己帶的U盤里)
5、將“操作4”中放到C盤的EDUC數據庫附加到數據庫服務器中。
6、分別把EDUC數據庫中的“student”表導出到ACCESS數據庫和EXCEL表格中(需先新建ACCESS空數據庫和EXCEL空表格)。
7、將ACCESS類型的EDUC數據庫中的Class表的數據庫導入(追加數據)到SQL Server里的EDUC數據庫的Class表中;將student.xls中的數據庫導入(追加數據)到SQL Server里的EDUC數據庫的student表中。
8、在“實驗一”已創建EDUC數據庫的基礎上,將school數據庫中Student,Course,StudentGrade中的數據分別導入EDUC的Student,Course,StudentGrade三個表中,并將school數據庫中的Class,Deparment,Teacher, CourseTeacher表及數據也導入到EDUC數據庫中。導入數據時,注意兩個數據庫中對應的字段名稱、類型、長度等的差異,并在導入時作出相應處理。
三、實驗要求
1、完成對數據庫的附加分離、備份還原與導入\導出。
2、完成“實驗內容”中的步驟6后,從“student”表中導出到ACCESS和EXCEL表中的數據與原來在SQL SERVER里“student”中的數據有何不同?從數據類型、數據長度、數據內容、約束等方面進行闡述。
答:
一、數據類型
SQL SERVER:能夠準確存儲并區分“student”表中的字段,如學號(字符類型)、姓名(字符類型)、性別(字符類型)、出生日期(日期時間類型)這些字段的數據類型。
ACCESS:在導入SQL SERVER的“student”表數據時,ACCESS將某些數據類型轉換為最接近的自身支持的數據類型。例如將SQL SERVER中的整數類型轉換為ACCESS中的長整型或整型。
EXCEL:EXCEL會將所有數據視為文本或數字(取決于單元格的格式設置)。
二、數據長度
SQL SERVER:在“student”表中,字段的長度是根據實際需求設置的,以確保數據的完整性和準確性。
ACCESS:如果SQL SERVER中的字段長度超過了ACCESS中對應數據類型的最大長度,ACCESS會截斷數據或顯示錯誤。
EXCEL:在導入數據時,會因格式設置不當而導致數據顯示異常(如日期時間格式的數據被顯示為文本)。
三、數據內容的表現形式
SQL SERVER:能夠準確存儲和顯示數據內容,包括特殊字符、空格和換行符等。
ACCESS:ACCESS在導入數據時會改變數據內容的表現形式。例如,日期時間類型的數據會被轉換為ACCESS默認的日期時間格式。
EXCEL:EXCEL在導入數據時也會改變數據內容的表現形式。例如日期時間類型的數據。
四、約束條件
SQL SERVER:學號字段設置為主鍵約束和唯一約束,以確保每個學生都有一個唯一的學號。
ACCESS:在導入數據時,ACCESS會忽略或轉換SQL SERVER中的某些約束條件。例如,如果SQL SERVER中的字段設置了檢查約束(如性別字段只能為“男”或“女”),ACCESS無法識別或執行該約束。
EXCEL:在將SQL SERVER的“student”表數據導入EXCEL后,原有的約束條件將不再有效。用戶需要依靠EXCEL的功能來手動檢查數據的完整性和一致性。
3、完成“實驗內容”中的步驟8過程中,數據能否成功導入?碰到哪些問題?如何解決?成功后,EDUC數據庫有何變化?
答:
數據可以成功導入。
Student,Course,StudentGrade中的數據被更新,新增Class,Deparment,Teacher, CourseTeacher表。
四、實驗小結
1. 什么情況下使用數據庫的備份和還原?什么情況下使用數據庫的數據導入和導出?為什么?
答:備份和還原的應用場景:在服務器進行數據傳輸、數據存儲和數據交換有可能產生數據故障。比如發生意外停機或存儲介質損壞。如果沒有采取數據備份和數據恢復手段與措施,就會導致數據的丟失。此外,備份還可以用于數據遷移和升級,確保數據的無縫遷移和升級過程中的數據安全。
導入和導出的應用場景:數據庫的導入與導出允許數據在不同系統、實例和工具之間流動,從而支持各種業務需求。通過數據導入和導出,可以確保數據的一致性和完整性,也提供了額外的數據保護手段。此外,它們還支持數據分析和報告等高級功能,為業務決策提供更深入的數據洞察。
2.什么時候需要使用數據庫的附加和分離?“附加”操作和“分離”操作的關系是什么?
數據庫的附加:如果某個數據庫長時間不用,或者數據庫日志占用了很大空間時,通過分離數據庫的方式來刪除以前的日志,節省了空間。
數據庫的分離:在服務器上新安裝數據庫軟件后,需要將已有的數據庫附加到新的數據庫實例中。當數據庫文件被移動到不同的存儲位置時,需要進行附加操作以重新建立與數據庫文件的連接。
關系:數據庫的附加是分離操作的逆操作。數據庫分離是指將數據庫的數據文件(MDF)和日志文件(LDF)從SQL Server實例中分離出來。而附加操作則是將分離的數據庫文件重新加載到SQL Server實例中。
3.在后續的實驗過程中我們經常需要用到數據庫的附加和分離,因為實驗需要數據,每次實驗前重建數據是不現實的。所以保存老師給的實驗數據非常重要。實驗操作過程中是否遇到了操作不成功的情況?如何解決的?您的收獲有哪些?
問題:附加數據庫時報錯:“有關詳細信息,請單擊“消息”列中的超鏈接。”
解決方法:這是由于權限的問題,找到數據庫所在文件或文件件:點擊右鍵,選中屬性,點擊安全 → 編輯 → 添加 → 高級 → 立即查找 →選中 Everyone → 勾選上完全控制。
五、作業
1、設有一個SPJ數據庫,包含S、P、J、SPJ4個關系模式:
S(SNO,SNAME,STATUS.CITY)、P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,CITY)、SPJ(SNO,PNO,JNO,QTY)
供應商S由供應商代碼SNO、供應商姓名SNAME、供應商狀態STATUS、供應商所在城市CITY組成;
零件表P由零件代碼PNO、零件名PNAME、零件顏色COLOR零件重量WEIGHT組成;
工程項目表J由工程項目代碼JNO、工程項目名JNAME、工程項目坐在城市CITY組成;
SPJ表由供應商代碼SNO、零件號代碼PNO、工程號代碼JNO、供應數量QTY組成,表示某供應商供應某種零件給某工程項目的數量為QTY。具體表內容如教材P70面6題所示。請用關系代數完成下列查詢:
1)求供應工程J1零件P1的供應商號碼SNO;
2)求供應工程J1零件為紅色的供應商號碼SNO;
3)求沒有使用天津供應商生產的紅色零件的工程號JNO;
4)求至少使用了供應商S1所供應的全部零件的工程號JNO;
5)求使用了紅色零件帶沒有使用藍色零件的工程號;
6)求供應了藍色零件工程項目在北京的供應商的姓名和所在城市。
7)檢索至少使用了兩種零件的工程號。
8)檢索J1號工程不使用的零件號。
2、試述等值連接與自然連接的區別和聯系。
答:
(1)等值連接:從關系R和S的笛卡爾積中選取A,B屬性值相等的元組;
(2)自然連接:是特殊的等值連接,R和S具有相同的屬性組B,在結果中去掉重復的屬性列。
連接運算符是“=”的連接運算稱為等值連接。它是從關系R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組。
自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。
3、關系代數的基本運算有哪些?
答:
并、差、笛卡爾積、投影和選擇5種運算為基本的運算。其他3種運算,即交、連接和除,均可以用這5種基本運算來表達。
4、為什么關系中的元組沒有先后順序?
答:
關系是元組的集合,集合中的元素是沒有順序的,所以關系中元組的順序無關緊要。
5、為什么關系中不允許有重復元組?
答:
因為每個關系模式都有一個主鍵,在關系中主鍵是唯一存在的。假若有重復元組,則其主鍵相等,那么起不了唯一標識的作用。所以關系中不允許有重復元組。