1.記住,永遠記住:表與表之間關聯的唯一手段就是外鍵
表與表之間相關聯只能通過外鍵。
2.所以數據庫表與表之間的,一對多,多對多關系。說白了就是怎樣建立外鍵的關系,在哪個表建立外鍵。
通過外鍵維持各種表之間的關系。
3.
6 表與表之間的關系
l 一對一:例如t_person表和t_card表,即人和身份證。這種情況需要找出主從關系,即誰是主表,誰是從表。人可以沒有身份證,但身份證必須要有人才行,所以人是主表,而身份證是從表。設計從表可以有兩種方案:
- 在t_card表中添加外鍵列(相對t_user表),並且給外鍵添加唯一約束;
- 給t_card表的主鍵添加外鍵約束(相對t_user表),即t_card表的主鍵也是外鍵。
l 一對多(多對一):最為常見的就是一對多!一對多和多對一,這是從哪個角度去看得出來的。t_user和t_section的關系,從t_user來看就是一對多,而從t_section的角度來看就是多對一!這種情況都是在多方創建外鍵!
l 多對多:例如t_stu和t_teacher表,即一個學生可以有多個老師,而一個老師也可以有多個學生。這種情況通常需要創建中間表來處理多對多關系。例如再創建一張表t_stu_tea表,給出兩個外鍵,一個相對t_stu表的外鍵,另一個相對t_teacher表的外鍵。
7.編碼
服務器發送給客戶端的數據編碼為character_set_result,它如果是UTF8,那么控制台使用GBK解碼也一定會出現亂碼。因為無法修改控制台編碼,所以只能把character_set_result修改為GBK。
l 修改character_set_client變量:set character_set_client=gbk;
l 修改character_set_results變量:set character_set_results=gbk;
設置編碼只對當前連接有效,這說明每次登錄MySQL提示符后都要去修改這兩個編碼,但可以通過修改配置文件來處理這一問題:配置文件路徑:D:\Program Files\MySQL\MySQL Server 5.1\ my.ini
3 MySQL工具
使用MySQL工具是不會出現亂碼的,因為它們會每次連接時都修改character_set_client、character_set_results、character_set_connection的編碼。這樣對my.ini上的配置覆蓋了,也就不會出現亂碼了。
MySQL數據庫備份與還原
備份和恢復數據
1 生成SQL腳本
在控制台使用mysqldump命令可以用來生成指定數據庫的腳本文本,但要注意,腳本文本中只包含數據庫的內容,而不會存在創建數據庫的語句!所以在恢復數據時,還需要自已手動創建一個數據庫之后再去恢復數據。
| mysqldump –u用戶名 –p密碼 數據庫名>生成的腳本文件路徑 |
現在可以在C盤下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制台下執行,無需登錄mysql!!!
2 執行SQL腳本
執行SQL腳本需要登錄mysql,然后進入指定數據庫,才可以執行SQL腳本!!!
執行SQL腳本不只是用來恢復數據庫,也可以在平時編寫SQL腳本,然后使用執行SQL 腳本來操作數據庫!大家都知道,在黑屏下編寫SQL語句時,就算發現了錯誤,可能也不能修改了。所以我建議大家使用腳本文件來編寫SQL代碼,然后執行之!
| SOURCE C:\mydb1.sql |
注意,在執行腳本時需要先行核查當前數據庫中的表是否與腳本文件中的語句有沖突!例如在腳本文件中存在create table a的語句,而當前數據庫中已經存在了a表,那么就會出錯!
還可以通過下面的方式來執行腳本文件:
mysql -uroot -p123 mydb1<c:\mydb1.sql
| mysql –u用戶名 –p密碼 數據庫<要執行腳本文件路徑 |
這種方式無需登錄mysql!
